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


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+ 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的垃圾收集器不会删除按键观察器。


这是一个聪明的技巧,在插入模式下使用^ 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.