web-dev-qa-db-ja.com

カーソルを動かす代わりにスクロールするように、vimでスクロールホイールの動作を変更するにはどうすればよいですか?

上にスクロールして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>

これらのソリューションはどちらも機能していないようです。 Ubuntu11.10のターミナルからvimを使用しています。

7
Matthew

申し訳ありませんが、これと格闘しなければなりませんでした。それは実際には非常に簡単です。 〜/ .vimrcに次の行を追加するだけです。

set mouse=a

これをオンにすると、(* nixでは)マウスで選択するだけでvimからコピーすることはできなくなります。でも長押しすると Shift ((Option OSXの場合)を選択すると、以前と同じように機能します。

6
Lambart

私の〜/ .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
Heptite