.vimrc
に次の行があります。
nnoremap <Esc> :noh<Cr>
これはMacVimで正常に機能します。 Vim自体を開くと、その「コマンドバー」は次のように始まります。
.2c
コマンドを実行するためにEnterキーを押すと、VimはE16: Invalid range
と文句を言います。
ちょっとした煩わしさですが、どうすればこの問題を解決できますか?
マッピング Esc それは起こるべきではありませんが、常に少しトリッキーで、一般的にこの種のトラブルを招きます。
マッピングの「標準的な」方法は次のとおりです。
nnoremap <silent> <C-l> :nohlsearch<CR><C-l>
そのように Ctrl+L (通常は画面を再描画します)は、ハイライトを停止し、画面を再描画します。
何が起こるかはわかったと思いますが、まだ解決策がありません。 Vimが<ESC>
と "2c"を含む文字列を受け取ったと想定したので、次のマッピングを使用して表示しました。
nnoremap <Esc> :"
その結果、起動時に次のプロンプトが表示されました。
:"[>0;261;0c
これは、起動時に何かが<ESC>[>0;261;0c
を送信したことを意味します。元の xterm
制御シーケンス を検索すると、次のことがわかります。
ESC [ Control Sequence Introducer (CSI is 0x9b)
そして
CSI>P s c
デバイス属性の送信(セカンダリDA)。
P s = 0または省略→端末の識別コードを要求します。応答はdecTerminalIDリソース設定によって異なります。 VT220以降にのみ適用されますが、xtermはこれをVT100に拡張します。
→CSI>P p;P v ;P cc
ここで、P pは端末タイプを示します
P p = 0→ ‘‘ VT100 ’’。
P p = 1→「VT220」。およびP vはファームウェアバージョンです(xtermの場合、これは元々XFree86パッチでした)番号、95から始まります)。DEC端末では、P cはROMカートリッジ登録番号を示します)常にゼロです。
したがって、私の場合、何かがCSI >
をP p = 0(→端末タイプVT100)、P v = 261(→私のxterm
バージョン)、およびP c = 0。
それでも私はそれがどこから来たのか、それを止める方法がわかりません。私の推測では、端末とVimの間の情報交換が失敗し、何かがバグを起こしていると思います。
問題は、一部の端末vimが[> 0; 261; 0cをそのように受信することです。そして最後の「c」はvimの起動を苦痛にしますが、起動時に最初の「c」をスキップする簡単なトリックを見つけました。
nnoremap c :nunmap c<Cr>