web-dev-qa-db-ja.com

VimでCtrl +矢印を修正する方法は?

使ってます PuTTY -> Suse box -> vim 7.2コンボを編集して、Ctrl +矢印コンボを特定のタスクに再マップしたい。しかし、何らかの理由で、Vimはショートカットを無視して挿入モードに入り、「C」(右)の「D」(左)を挿入します。

私のキーボード/ターミナル構成のどの部分に問題があるのですか?それをどのように修正しますか?

27
Alex B

端末が送信するエスケープシーケンスを正確に把握する 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 接頭辞と[に続いてAppendまたはChangeまたはその他を挿入モードにします。

gillesさんに続いて追加されました

^ 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

7
msw

私はここでより良い解決策を見つけました: 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
2
trigal

これと他のvimキーボードの問題のために、私は単にします

vim ~/.vimrc
set nocompatible
0
zainengineer