如何使用触控板进行水平滚动?


10

我只是注意到我的触控板滚动条在Vim,惯性等所有方面都有效。我想将其更改为水平工作-因此,我可以上下滚动以使光标左右移动,而不是按住右键不放很多时间。

如何将滚动映射到左/右移动?


2
旁注:如果您连续多次按下同一个移动键,则可能是错误的操作(使用wWeE$)}等),如果您使用箭头键,则肯定是在使用Vim。
门把手2015年

Answers:


4

根据:help scroll-mouse-wheel答案,如果您使用的是Win32 GUI,则为否。

另一方面,使用X11 GUI或带有鼠标支持的console vim,滚轮会发送按键,您可以重新映射。

因此,您可以获得您描述的行为

:nmap <ScrollWheelUp> h
:nmap <ScrollWheelDown> l

请注意,我nmap在正常模式下用于映射。

要在其他模式下获得类似的行为,可以映射到方向而不是普通键。例如,插入模式移动:

:imap <ScrollWheelUp> <Left>
:imap <ScrollWheelDown> <Right>

要使它们成为默认值,请将它们粘贴在vimrc的底部。


我相信OP正在使用OSX,因此Win32和X11都不是(最有可能的)。
赛斯2015年

1
OSX有答案吗?
bsmith89

las,vim文档中没有提到OSX,而​​且我没有可尝试使用的OSX计算机。:-(
JohnO'M。2015年

1
嗯,我应该提到这一点-我正在运行OS X,但大多数时候都通过SSH进入Ubuntu服务器。
2015年

那是好消息!如果ssh另一端的vim对滚动事件作出响应,则您的终端仿真器正在发送滚动事件,并且以上答案对您都适用,无论是本地运行的vim还是远程运行的vim。如果您用终端仿真器的名称发表评论,我将其添加到答案中。
John O'M。

4

我想出了一种使用Hammerspoon 并巧妙地使用映射的方法。

第一部分是配置Shift+ ScrollUpShift+ 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的垃圾收集器不会删除按键观察器。


这是一个聪明的技巧,在插入模式下使用^ v查看发送的密钥!我也很难找到文档,但是缺少PC(和滚轮鼠标)。我正在尝试模拟带触摸屏的轮子。我想知道您是否还发现了水平滚轮的按键。我希望它们为66/67(在64/65之后为上/下),并且它们本应是按钮编号6/7,但似乎不起作用。谢谢!

2

如果您在OS X上使用MacVim,则可以在触控板上使用:

set mouse=n " enable mouse in normal mode
set nowrap  " disable line wrapping (so there's something to scroll to)

我知道OP的情况有所不同,但这对于某些用户来说是一个有效的答案。
戴维·洛德
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.