我希望向上滚动相当于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>
这两种解决方案似乎都不起作用。我正在使用vim
Ubuntu 11.10 中的终端。
答案1
很抱歉您遇到了这个问题。其实很简单。只需将以下行添加到您的 ~/.vimrc 中:
set mouse=a
启用此功能后,您将无法(在 *nix 中)通过简单地用鼠标选择来从 vim 中复制内容;但如果您在选择时按住Shift(Option对于 OSX),它将像以前一样工作。
答案2
来自我的 ~/.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>
这会产生一个不良的副作用,即滚轮不会滚动鼠标光标下的窗口,而是滚动当前活动的窗口。
至于终端中的 Vim 是否能够使用鼠标滚动,这取决于您的终端仿真器在使用滚轮时是否会将转义序列传递给 Vim。Xterm 可以做到这一点,尽管这可能需要您提供一些帮助 — 请参阅“ :help xterm-mouse-wheel
”。
答案3
这就是我的设置方式。zz
每次移动光标时,屏幕垂直居中。它保持可视模式以突出显示大块代码。如果处于插入模式,它会先退出。
需要注意的一点是,我个人不需要像另一位海报设置的那样设置更大的滚动增量.vimrc
,因为我的 MX Master 鼠标滚轮具有自由旋转模式,vim 可以轻松跟上。
set mouse=a
nnoremap <ScrollWheelDown> jzz
nnoremap <ScrollWheelUp> kzz
vnoremap <ScrollWheelDown> jzz
vnoremap <ScrollWheelUp> kzz
inoremap <ScrollWheelDown> <Esc>jzz
inoremap <ScrollWheelUp> <Esc>kzz