如何更改 vim 中的滚轮行为,使其滚动而不是移动光标?

Mat*_*hew 7 vim command-line key-binding scrolling ubuntu

我希望向上滚动相当于c-y c-y c-y,向下滚动相当于c-e c-e c-e这里的文档似乎表明这应该已经是这种情况,或者我可以通过将它放在我的.vimrc

map <ScrollWheelUp> <C-Y>
map <S-ScrollWheelUp> <C-U>
map <ScrollWheelDown> <C-E>
map <S-ScrollWheelDown> <C-D>
Run Code Online (Sandbox Code Playgroud)

这些解决方案似乎都不起作用。我vim在 Ubuntu 11.10 的终端上使用。

Lam*_*art 7

对不起,你不得不与这个斗争。其实很简单。只需将以下行添加到您的 ~/.vimrc 中:

set mouse=a
Run Code Online (Sandbox Code Playgroud)

启用此功能后,您将无法(在 *nix 中)通过简单地用鼠标选择来从 vim 中复制内容;但是如果你在选择时按住ShiftOption对于 OSX),它会像以前一样工作。


Hep*_*ite 5

从我的 ~/.gvimrc :

"           Scroll Wheel = Up/Down 4 lines
"   Shift + Scroll Wheel = Up/Down 1 page
" Control + Scroll Wheel = Up/Down 1/2 page
"    Meta + Scroll Wheel = Up/Down 1 line
 noremap <ScrollWheelUp>     4<C-Y>
 noremap <ScrollWheelDown>   4<C-E>
 noremap <S-ScrollWheelUp>   <C-B>
 noremap <S-ScrollWheelDown> <C-F>
 noremap <C-ScrollWheelUp>   <C-U>
 noremap <C-ScrollWheelDown> <C-D>
 noremap <M-ScrollWheelUp>   <C-Y>
 noremap <M-ScrollWheelDown> <C-E>
inoremap <ScrollWheelUp>     <C-O>4<C-Y>
inoremap <ScrollWheelDown>   <C-O>4<C-E>
inoremap <S-ScrollWheelUp>   <C-O><C-B>
inoremap <S-ScrollWheelDown> <C-O><C-F>
inoremap <C-ScrollWheelUp>   <C-O><C-U>
inoremap <C-ScrollWheelDown> <C-O><C-D>
inoremap <M-ScrollWheelUp>   <C-O><C-Y>
inoremap <M-ScrollWheelDown> <C-O><C-E>
Run Code Online (Sandbox Code Playgroud)

这有一个不幸的副作用,即滚轮不会滚动鼠标光标下的窗口,而是滚动当前活动的窗口。

至于终端中的 Vim 是否能够用鼠标滚动,这取决于您的终端模拟器在使用滚轮时是否会将转义序列传递给 Vim。Xterm 可以做到这一点,尽管它可能需要您的一些帮助 - 请参阅“ :help xterm-mouse-wheel”。