Tôi đã tìm ra một cách để làm điều đó với Hammerspoon
và cách sử dụng bản đồ thông minh.
Phần đầu tiên là cấu hình Shift+ ScrollUpvà
Shift+ ScrollDownđể cuộn theo chiều ngang. Để làm điều đó, bạn đã đặt đoạn mã sau vào .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>
Lưu ý rằng chúng ta phải sử dụng <S-2-ScrollWheelUp>
và tương tự vì chúng cũng được gửi dưới dạng các khóa đến thiết bị đầu cuối. Tôi không tìm thấy tài liệu nào về điều này (tôi đã tìm ra điều này bằng cách sử dụng
Ctrl+ Vtrong khi cuộn ở chế độ chèn).
Sau đó, chúng ta phải ánh xạ lại các cuộn ngang thành Shift+ cuộn dọc. Để làm như vậy, chúng tôi đặt đoạn mã sau vào 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
Chúng tôi tạo scrollBind
biến chỉ để trình theo dõi gõ phím không bị xóa bởi trình thu gom rác của Lua.
wWeE$)}
v.v.) và nếu bạn đang sử dụng các phím mũi tên thì chắc chắn bạn đang sử dụng sai Vim.