Bagaimana saya bisa mengubah perilaku roda gulir dalam vim, sehingga ia menggulir bukannya menggerakkan kursor?

7

Saya ingin menggulir ke atas agar setara dengan c-y c-y c-y, dan gulir ke bawah agar setara dengan c-e c-e c-e. Dokumentasi sini tampaknya menyarankan bahwa ini seharusnya sudah menjadi masalah, atau saya dapat mengatasinya dengan meletakkan ini di saya .vimrc:

map <ScrollWheelUp> <C-Y>
map <S-ScrollWheelUp> <C-U>
map <ScrollWheelDown> <C-E>
map <S-ScrollWheelDown> <C-D>

Tak satu pun dari solusi ini yang tampaknya berhasil. saya menggunakan vim dari terminal di Ubuntu 11.10.

Matthew
sumber

Jawaban:

5

Maaf kamu harus berjuang dengan yang satu ini. Sebenarnya sangat sederhana. Cukup tambahkan baris berikut ke ~ / .vimrc Anda:

set mouse=a

Dengan ini dihidupkan, Anda tidak akan dapat (dalam * nix) untuk menyalin hal-hal dari vim hanya dengan memilihnya dengan mouse; tetapi jika Anda tahan Bergeser ( Pilihan untuk OSX) saat memilih, itu akan berfungsi seperti sebelumnya.

Lambart
sumber
Jika ini kemudian menyebabkan masalah dengan penyalinan, ada beberapa solusi sini .
Sparhawk
2

Dari ~ / .gvimrc saya:

"           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>

Ini memiliki efek samping yang disayangkan sehingga roda gulir tidak menggulir jendela di bawah kursor mouse, melainkan jendela yang sedang aktif.

Adapun apakah Vim di terminal akan dapat menggulir dengan mouse, itu tergantung pada apakah emulator terminal Anda akan melewati urutan melarikan diri ke Vim ketika roda gulir digunakan. Xterm dapat melakukannya, meskipun itu mungkin memerlukan sedikit bantuan dari Anda — lihat " :help xterm-mouse-wheel ".

Heptite
sumber