Saya menemukan cara untuk melakukan itu dengan Hammerspoon
dan penggunaan pemetaan yang cerdas.
Bagian pertama adalah mengkonfigurasi Shift+ ScrollUpdan
Shift+ ScrollDownuntuk menggulir secara horizontal. Untuk melakukan itu, Anda telah memasukkan potongan kode berikut di .vimrc
:
nnoremap <S-ScrollWheelUp> <ScrollWheelLeft>
nnoremap <S-2-ScrollWheelUp> <2-ScrollWheelLeft>
nnoremap <S-3-ScrollWheelUp> <3-ScrollWheelLeft>
nnoremap <S-4-ScrollWheelUp> <4-ScrollWheelLeft>
nnoremap <S-ScrollWheelDown> <ScrollWheelRight>
nnoremap <S-2-ScrollWheelDown> <2-ScrollWheelRight>
nnoremap <S-3-ScrollWheelDown> <3-ScrollWheelRight>
nnoremap <S-4-ScrollWheelDown> <4-ScrollWheelRight>
Perhatikan bahwa kita harus menggunakan <S-2-ScrollWheelUp>
dan sejenisnya karena mereka juga dikirim sebagai kunci ke terminal. Saya tidak menemukan dokumentasi tentang ini (saya menemukan ini dengan menggunakan
Ctrl+ Vsaat menggulir dalam mode insert).
Setelah itu, kita harus memetakan kembali gulungan horizontal menjadi Shift+ gulungan vertikal. Untuk melakukannya, kami menempatkan cuplikan berikut di Hammerspoon'sinit.lua
scrollBind = hs.eventtap.new({hs.eventtap.event.types.scrollWheel}, function(e)
if is_active('iTerm2') then
local horizontalOffset = e:getProperty(hs.eventtap.event.properties.scrollWheelEventDeltaAxis2)
if horizontalOffset ~= 0 then
hs.eventtap.scrollWheel({ 0, horizontalOffset }, {"shift"}, 'pixel')
return true
end
end
return false
end):start()
function is_active(program_name)
local active_window_name = hs.window.focusedWindow():application():name()
return active_window_name == program_name
end
Kami membuat scrollBind
variabel agar pengamat tombol tidak terhapus oleh pengumpul sampah Lua.
wWeE$)}
dll.), Dan jika Anda menggunakan tombol panah, Anda pasti menggunakan Vim yang salah.