Como posso alterar o comportamento da roda de rolagem no vim, de modo que ela role em vez de mover o cursor?

7

Eu gostaria que a rolagem fosse equivalente a c-y c-y c-y e a rolagem fosse equivalente a c-e c-e c-e . A documentação aqui parece sugerir que este já deveria ser o caso, ou posso trabalhar em torno dele, colocando isso no meu .vimrc :

map <ScrollWheelUp> <C-Y>
map <S-ScrollWheelUp> <C-U>
map <ScrollWheelDown> <C-E>
map <S-ScrollWheelDown> <C-D>
Nenhuma dessas soluções parece funcionar. Estou usando vim do terminal no Ubuntu 11.10.

    
por Matthew 29.10.2011 / 22:58

2 respostas

5

Desculpe você teve que lutar com este. Na verdade é muito simples. Basta adicionar a seguinte linha ao seu ~ / .vimrc:

set mouse=a

Com isto ativado, você não poderá (em * nix) copiar material do vim simplesmente selecionando-o com o mouse; mas se você pressionar Shift ( Opção para OSX) enquanto estiver selecionando, ele funcionará como antes.

    
por 19.11.2012 / 21:59
2

Do meu ~ / .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>

Isso tem o infeliz efeito colateral de fazer com que a roda de rolagem não role a janela sob o cursor do mouse, mas sim a janela ativa no momento.

Quanto a saber se o Vim em um terminal poderá rolar com o mouse, depende se o emulador de terminal passará as seqüências de escape para o Vim quando a roda de rolagem for usada. O Xterm pode fazer isso, embora possa precisar de um pouco de ajuda da sua parte - veja " :help xterm-mouse-wheel ".

    
por 29.10.2011 / 23:46