4

端末は、。で始まるシーケンスとして矢印キーを送信しますEsc。Vimには、挿入モード'esckeys'で始まるキーを機能させるオプションがあります。Escこれは、実際のEscキーがすぐに応答することを犠牲にして行われますEsc。Vimは、矢印キーを押しているだけなのか、それともスペルを始めているのかを認識しなくなったためです。

挿入モードで実行できるようにしたいことは次のとおりです。

  1. 矢印キーを押してカーソルをその方向に移動させ、
  2. を押しEscて、すぐに挿入モードを終了します。

私は解決策の始まりを持っています。を使用しても、キーを次のよう:set noesckeysにマップできます。<Up>

imap q <Up>

もちろん、qカーソルを上げるための良いキーではありません。Esc代わりに、ターミナルエミュレーターの矢印キーを(入力しないランダムなUnicode文字など)で始まらないものにマップしてimapから、Vimの方向にマップしたいと思います。

問題はこれです:Vimを離れると、矢印キーが機能しなくなります。彼らが今何を意味するのかを知っているのはVimだけです。

私はiTerm2内のtmux内で作業しています。このようなバインディングを1つのtmuxペインでのみライブにする方法はありますか?または、Vimに実行中にクレイジーな矢印キーバインディングを使用する必要があることをtmuxに通知させますか?他のアイデアはありますか?

(ちなみに、私は挿入モードで矢印キーをまったく使用しないことを嬉しく思いますが、それらが機能することを期待している人々とペアを組んでおり、礼儀正しいペアになりたいと思っています。)

4

4 に答える 4

7

あなたの問題は正確には何ですか?矢印キーはVimで機能しますか?それらはtmuxで動作しますか?

[A一度Vim/tmuxで制御文字( 、[B…)を表示する矢印キーで問題が発生しましたが、追加して解決しました

nnoremap <Esc>A <up>
nnoremap <Esc>B <down>
nnoremap <Esc>C <right>
nnoremap <Esc>D <left>
inoremap <Esc>A <up>
inoremap <Esc>B <down>
inoremap <Esc>C <right>
inoremap <Esc>D <left>

私に~/.vimrc

于 2012-01-11T06:19:26.957 に答える
3

非常に小さい値に設定するだけですttimeoutlen(注:1つではなく2つの先頭)。t10ミリ秒のようなものですが、ゼロでも機能する可能性があります。正のttimeoutlenを使用すると、ほぼ即時に終了し(そのミリ秒数待機します)、ゼロに設定すると、即時に終了する必要があります(つまり、矢印キーが完了するのをまったく待機しません。シーケンス全体がstdinバッファ内にあり、矢印キーであるかどうかと見なされ、独立した文字のシーケンスと見なされます)。100ミリ秒ありますが、このタイムアウトに気づきません。

于 2013-03-25T16:49:06.567 に答える
1

Windows 10を使用している人がここに来たら、何がうまくいったかを教えてくれます。:set term = ansi

これを.vimrcファイルに入れるか、エディターで設定して、機能するかどうかを確認できます。

于 2018-07-11T15:10:44.777 に答える
0

これは私にとってはうまくいきました:.vimrcファイルに次の行を追加します(Ctrl-Vを入力し、カーソルを上に押して^ [OA ...):

 set t_ku=^[OA
 set t_kd=^[OB
 set t_kr=^[OC
 set t_kl=^[OD
于 2013-03-25T09:20:58.283 に答える