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


26

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

キーボード/端末構成のどの部分が原因か、それを修正する方法は?


PuTTYは、control-arrowsに有用に区別できるシーケンスを送信しません。提案された答えはどれも正しくありません(または有用です)。
トーマスディッキー

回答:


27

挿入モードで+ 、+ arrowをCtrl入力して、端末が+ arrow に対して送信するエスケープシーケンスを正確に把握します。これにより、先頭の文字(vimで表示)がそのまま挿入され、残りのエスケープシーケンスが続きます。次に、これらのエスケープシーケンスについてvimに次のように伝えます。CtrlVCtrlESC^[

map <ESC>[5D <C-Left>
map <ESC>[5C <C-Right>
map! <ESC>[5D <C-Left>
map! <ESC>[5C <C-Right>

Puttyには不都合なApplication Cursor Keysモードのデフォルト設定があることを思い出すようです(理由を忘れます)。最初にこの設定を切り替えることをお勧めします。

エスケープシーケンスは端末によって異なりますが、競合(つまり、異なる端末の異なるキーに対応するエスケープシーケンス)はまれなので、特定の端末タイプにのみマッピングを適用する必要はありません。


送信されたエスケープシーケンスを確認するにはどうすればよいですか?
アレックスB

@アレックス:私の説明を明確にしようとしましたが、まだ私の最初の文を理解していない場合は文句を言います。
ジル「SO-悪であるのをやめる」

また、実行しod -aたりod -c、8進数を調べて問題のキーを入力したりすることもできます。例については、私の回答の「追加」を参照してください。
msw

申し訳ありませんので、後半にこの質問への背中を取得するために、私はパテがいることを考え出した今でも、端末にアプリケーションカーソルキーを送信し、私はそれを完全にオフにした後も。私はそれをなくすために他に何を微調整すればよいか迷っています。
アレックスB

@Alex:廃止する必要はありません。アプリケーションにそれらについて伝えることができます(これが最も抵抗の少ない経路であることがわかりました)。または、PuTTYを、minttyとCygwin sshなどの代替手段の1つで置き換えることができます(ただし、このサイトでは話題になりません)。
ジル 'SO-悪であるのをやめる'

7

最善の策は、おそらくPuTTYのアプリケーションカーソルキーモードの構成を確認することです。

デフォルトのシーケンスESCはプレフィックスとして送信され、[その後にA追加またはハングCまたはその他の操作が挿入モードになります。

追加、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


アプリケーションカーソルキーモードをオフにしても役に立たないようです。
アレックスB


0

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

vim ~/.vimrc
set nocompatible
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.