VimでEscキーを再マッピングする


12

EscキーをVimの別のキーに再マッピングすることは可能ですか?全画面表示のVMware vSphere WebクライアントコンソールウィンドウでVimを使用していて、Escキーを押して編集モードを終了すると、コンソールウィンドウの全画面モードが終了します。

RHEL YUMリポジトリのVimを使用しています。(RHEL 7.5、Vim 7.4)。



2
何をするにしても、escを他のものにマップしないでください。Escに何か他のものをマップします。
D.ベンノーブル

回答:


10

通常C-[は、挿入モードを終了する方法でもあります。jj終了して通常モードに戻る方法として、挿入モードでマップすることを好む人もいます。個人的にjhは、これで指の「スライド」が良くなり、中指にあまり負担をかけないようにしています。

私のneovim設定のどこかから:

inoremap jh <Esc>

これjhは、挿入モードでエスケープするように再マップします。

これでよろしいですか?


3
Ctrl- [は 'ESC'と同じ
ハーブウルフ

私は遊んで、この作品を発見しました: ":inoremap <F1> <Esc>"。これは、Escキーの代わりにF1キーをマップします。これは ":ino <F1> <Esc>"に短縮できます。
ビームデイビス

また、大文字は必要ありません。
ビームデイビス

ええ、大文字は必要ありません。「ino」は書く方が短いですが、私の設定では、クールなショートカットよりも簡潔さを好みます。手伝ってよかった!
アミールエルドール

簡潔さはクールですべてですが...結局のところ、それはウィットの魂です... 明快さ?冗長性?簡潔ではないですか?;)
Bレイヤー

6

TL; DR

escホーム行に再マップするのは実際にいいことです。マッピング先を決定する方法は次のとおりです。手を選んで、4本の指をデスクトップ上でできるだけ速く、どちらの方向にでも速く回転させます。それを使用して、再マッピングするキーを選択します。

私にとっては、小指から人差し指に転がるほうが自然です。したがって、私はを選択しましたkj。また、grep -rHin kj ~/src(すべてのソースコードの親ディレクトリで再帰的なgrepを実行しました)、一致するものは見つかりませんでした。

" esc in insert mode
inoremap kj <esc>

" esc in command mode
cnoremap kj <C-C>
" Note: In command mode mappings to esc run the command for some odd
" historical vi compatibility reason. We use the alternate method of
" existing which is Ctrl-C

注:リテラルkj(またはマッピングが何であれ)を入力する必要がある場合は、2秒間隔で入力してください。(1番目の文字の後にカーソルが移動するのをためらいます。2番目の文字を入力する前に、カーソルが移動するのを待ちます。)


私はvim19年間使用しています。AppleがMacBook Proをアップデートして、タッチバーがあり、物理的なescキーがないようにしたとき、私は恐怖を感じた。私はポストを見マッピングを示唆したjjjkする<Esc>と、それを嫌っていました。しかし、私はそれが私を困らせる度に辛抱強くインデックスカードに書き留めました。約15分後、私は自分のメモを確認し、以下の問題に対処するために上記のTL; DRを思い付きました。

  1. esc挿入モードでないときは、「確認」するために割り当てをヒットする傾向があり、jj2行ドロップします。
  2. jkノーオペレーション(ダウン、アップ)ですがkj、私の手にとってはより自然です。
  3. escコマンドを完了せずにコマンドモードを終了するためにも使用する必要があります。

esc執筆に数分たったときに、他のアプリケーションにアクセスしてウィンドウを閉じるという私の習慣をようやく破れることを願っています。私は仕事を失うよりもむしろ浮遊kj文字を挿入したいです!


1
cnoremapの場合、escがマッピングからのものである場合、コマンドを中止するのではなく、コマンドを実行することに注意してください。これは、viとの互換性の理由によるものです
Christian Brabandt

挿入モードとコマンドモードの両方で、escは引き続き機能します。しかし、あなたもあなたが使用しているこの代替ホームローコンボを持っています。多分私はあなたの主張に従わなかった。
ブルーノブロノスキー

2
ポイントは、コマンドモードの場合、マッピングからのエスケープはコマンドを中止せずに実行することです。試してみる:ls kj
クリスチャンブラバンド2018

@ChristianBrabandt正解です。それについて何ができますか?または、少なくとも、これはどこに文書化されていますか?私はこれについて何かを見つけるためにまともな検索語句を思い付くことさえできません。
Bruno Bronosky、

1
これが文書化されているかどうかは覚えていませんが、数年前にその動作に遭遇しました。ああ、それは一種の文書に記載されてい:h c_Escます: マクロで[...]入力したコマンドを開始します。 (マクロには通常、マッピングも含まれます)
Christian Brabandt
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.