Descubrí una forma de hacerlo con Hammerspoon
y el uso inteligente de la cartografía.
La primera parte es configurar Shift+ ScrollUpy
Shift+ ScrollDownpara desplazarse horizontalmente. Para hacer eso, ha puesto el siguiente fragmento de código en su .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>
Tenga en cuenta que tenemos que usar <S-2-ScrollWheelUp>
y similares porque también se envían como claves al terminal. No encontré documentación sobre esto (descubrí esto usando
Ctrl+ Vmientras me desplazaba en modo de inserción).
Después de eso, tenemos que reasignar los pergaminos horizontales a Shift+ pergaminos verticales. Para hacerlo, colocamos el siguiente fragmento en 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
Creamos la scrollBind
variable solo para que el recolector de basura de Lua no borre el observador de pulsaciones de teclas.
wWeE$)}
etc.), y si está usando las teclas de flecha, definitivamente está usando Vim incorrectamente.