Я нашел способ сделать это с помощью Hammerspoon
и умного использования картографии.
Первая часть - это настройка Shift+ ScrollUpи
Shift+ ScrollDownдля горизонтальной прокрутки. Чтобы сделать это, вы поместили следующий фрагмент кода в свой .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>
Обратите внимание, что мы должны использовать <S-2-ScrollWheelUp>
и тому подобное, потому что они также отправляются в качестве ключей к терминалу. Я не нашел документации по этому поводу (я понял это с помощью
Ctrl+ Vпри прокрутке в режиме вставки).
После этого мы должны переназначить горизонтальные прокрутки на Shift+ вертикальные прокрутки. Для этого мы помещаем следующий фрагмент в 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
Мы создаем scrollBind
переменную только для того, чтобы средство отслеживания нажатий клавиш не удалялось сборщиком мусора Lua.
wWeE$)}
и т. Д.), А если вы используете клавиши со стрелками, вы определенно используете Vim неправильно.