使ってます PuTTY -> Suse box -> vim 7.2
コンボを編集して、Ctrl +矢印コンボを特定のタスクに再マップしたい。しかし、何らかの理由で、Vimはショートカットを無視して挿入モードに入り、「C」(右)の「D」(左)を挿入します。
私のキーボード/ターミナル構成のどの部分に問題があるのですか?それをどのように修正しますか?
端末が送信するエスケープシーケンスを正確に把握する Ctrl+入力して矢印 Ctrl+V、 Ctrl+挿入モードの矢印:これは、先頭のESC
文字を挿入します(^[
in vim)文字通り、残りのエスケープシーケンスが続きます。次に、これらのエスケープシーケンスについてvimに次のように伝えます。
map <ESC>[5D <C-Left>
map <ESC>[5C <C-Right>
map! <ESC>[5D <C-Left>
map! <ESC>[5C <C-Right>
PuTTYには Application Cursor Keys mode のデフォルト設定があることを思い出すようです。これは不便です(理由は忘れます)。最初にこの設定を切り替えることをお勧めします。
エスケープシーケンスは端末によって異なりますが、競合(つまり、異なる端末の異なるキーに対応するエスケープシーケンス)はまれであるため、特定の端末タイプのみにマッピングを適用する必要はありません。
あなたの最善の策は、おそらくPuTTYの アプリケーションカーソルキーモード 設定を確認することです。
デフォルトのシーケンスは送信します ESC 接頭辞と[
に続いてA
ppendまたはC
hangeまたはその他を挿入モードにします。
^ Vエスケープのやや明示的なバージョンは、od(1)で確認できます。これが私の端末で^ Up、^ Down、^ Right、^ Leftと入力しています。
$ od -a
0000000 esc [ 1 ; 5 A esc [ 1 ; 5 B esc [ 1 ;
0000020 5 C esc [ 1 ; 5 D
だから私の端末は^[[1;5A
を押すと Ctrl + ↑
私はここでより良い解決策を見つけました: http://vim.wikia.com/wiki/Fix_arrow_keys_that_display_A_B_C_D_on_remote_Shell
この文字列を.vimrc
ファイルに追加するだけです。
:set term=cons25
更新
このファイルを/home
にコピーし、名前を.vimrc
に変更します。
/usr/share/vim/vim_VERSION_/vimrc_example.vim
これと他のvimキーボードの問題のために、私は単にします
vim ~/.vimrc
set nocompatible