![vimの通常モードでエスケープキーを:qにマップする](https://rvso.com/image/1449094/vim%E3%81%AE%E9%80%9A%E5%B8%B8%E3%83%A2%E3%83%BC%E3%83%89%E3%81%A7%E3%82%A8%E3%82%B9%E3%82%B1%E3%83%BC%E3%83%97%E3%82%AD%E3%83%BC%E3%82%92%3Aq%E3%81%AB%E3%83%9E%E3%83%83%E3%83%97%E3%81%99%E3%82%8B.png)
私はmidnight commandderでvimをビューアとして使用しており、ファイルを素早く表示して閉じたいと考えています。何も変更されていない場合にのみvimが終了するように、エスケープキーを:q
通常モードにマップするにはどうすればよいでしょうか?
答え1
現在のセッションのみに対して実行するにはvim
、次のコマンドを入力します ( 内vim
)。 (わかりやすくするためにスペースが追加されています。 で示されている場所以外にはスペースを入力しないでくださいSpace。)
: m a p Space Ctrl+ V Esc Space : q Ctrl+V Enter Enter
現在のターミナル セッションの残りの部分に対してのみこれを行うには、次のコマンドを入力します (ターミナル、つまりシェルで)。 (わかりやすくするために改行が追加されています。次のすべてを 1 行に入力してください。Enter指示されている場所以外は入力しないでくださいEnter。)
E X I N I T =
" : m a p Space Ctrl+ V Esc Space : q Ctrl+V Enter " Enter
その後
export EXINIT
Enter
変更を「永続的」にするには(つまり、ファイルを元に戻すまで)、上記のコマンド(およびEXINIT="…"
)export EXINIT
を および.bash_profile
/またはに入力します.bashrc
。(これらを で区切って同じ行にまとめて入力することもできます;
。これらを に結合して短くすることもできます。)コマンドまたはコマンドを入れたファイルexport EXINIT="…"
を入力しない限り、これは再度ログインするか、場合によっては新しいシェルを開始するまで有効になりません。EXINIT
source
EXINIT
注記:bash を主なシェルとして使用していない場合は、上記をシェルに合わせて変更する必要があるかもしれません。
あるいは、:map …
コマンドをファイルに入れてみてください.exrc
。
分かりにくいかもしれませんが、
:地図文字列1 文字列2
(vi
/ vim
)はマッピング(翻訳)を作成し、(コマンドモードで)入力すると、エディターは と入力したかのように動作します。そして、+はスーパーエスケープ文字であり、/とシェルの両方に(実際にはおそらくstring1
string2
CtrlVvi
vim
全てプログラム (少なくともそのほとんど) では、後続の文字は制御文字ではなく、リテラルのテキスト文字として解釈されることに注意してください。Ctrl+ のV後に が続くと、Enter
復帰文字になります。これは、多くの場合 ; と表示されます^M
が、 ではとして解釈されることに注意してください。:map
string2
Enter