Я придумав спосіб зробити це за допомогою 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»init.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.