vimの通常モードでエスケープキーを:qにマップする

vimの通常モードでエスケープキーを:qにマップする

私はmidnight commandderでvimをビューアとして使用しており、ファイルを素早く表示して閉じたいと考えています。何も変更されていない場合にのみvimが終了するように、エスケープキーを:q通常モードにマップするにはどうすればよいでしょうか?

答え1

現在のセッションのみに対して実行するにはvim、次のコマンドを入力します ( 内vim)。 (わかりやすくするためにスペースが追加されています。 で示されている場所以外にはスペースを入力しないでくださいSpace。)

:mapSpaceCtrl+ VEscSpace:qCtrl+VEnterEnter

現在のターミナル セッションの残りの部分に対してのみこれを行うには、次のコマンドを入力します (ターミナル、つまりシェルで)。 (わかりやすくするために改行が追加されています。次のすべてを 1 行に入力してください。Enter指示されている場所以外は入力しないでくださいEnter。)

E  X  I  N  I  T  =
"  :  m  a  p  Space  Ctrl+ V  Esc  Space  :  q  Ctrl+V  Enter  "  Enter

その後

export EXINITEnter

変更を「永続的」にするには(つまり、ファイルを元に戻すまで)、上記のコマンド(およびEXINIT="…"export EXINITを および.bash_profile/またはに入力します.bashrc。(これらを で区切って同じ行にまとめて入力することもできます;。これらを に結合して短くすることもできます。)コマンドまたはコマンドを入れたファイルexport EXINIT="…"を入力しない限り、これは再度ログインするか、場合によっては新しいシェルを開始するまで有効になりません。EXINITsourceEXINIT

注記:bash を主なシェルとして使用していない場合は、上記をシェルに合わせて変更する必要があるかもしれません。

あるいは、:map …コマンドをファイルに入れてみてください.exrc


分かりにくいかもしれませんが、

:地図文字列1 文字列2

vi/ vim)はマッピング(翻訳)を作成し、(コマンドモードで)入力すると、エディターは と入力したかのように動作します。そして、+はスーパーエスケープ文字であり、/とシェルの両方に(実際にはおそらくstring1string2CtrlVvivim全てプログラム (少なくともそのほとんど) では、後続の文字は制御文字ではなく、リテラルのテキスト文字として解釈されることに注意してください。Ctrl+ のV後に が続くと、Enter 復帰文字になります。これは、多くの場合 ; と表示されます^Mが、 ではとして解釈されることに注意してください。:map string2Enter

関連情報