6

おそらく私は正しい用語を使用していませんが、vimでコマンドラインをナビゲートしているときに使用するいくつかのキーバインディングを追加する方法を見つけるのに苦労しています。

例は次のコマンドです。

:e /really/long/path/that/I/dont/want/to/reenter

タブの代わりに実際にやりたいことに気付い:tabeたり、長い正規表現パターンを入力して、その前のタイプミスを発見したりします。

明らかに^0または文字として入力されるだけなので、行の先頭に移動したり、行の末尾に移動したりするbなど、コマンドマッピング用のemacsバインディングをいくつか追加します。他の単語間を移動する(少なくとも他の有用なバインディングと競合しないもの)。<C-a><C-e>

これは可能ですか?

4

2 に答える 2

14

他の人が述べたように、特定のキーバインドは既に存在します:

  • Ctrl-bコマンドラインの先頭に移動し、
  • Ctrl-eコマンドラインの最後に移動します。

完全なコマンド ライン編集エクスペリエンスのために、新しいキー バインドを使用するのではなく、vim コマンド ラインを編集可能なコマンド バッファーに変換して、このような問題に対処することができます。

コマンド ラインに入力しているときに、 を押してCtrl-fコマンド ライン バッファに入ります。通常モードになり、コマンド ラインをナビゲートして編集したり、コマンド履歴内の以前のコマンドを操作して編集したりできます。

あなたの例では、コマンドライン バッファに入ると、単純にto0itabに変更できます。etabe

このバッファをヒットEnterすると、カーソルが置かれているコマンドが実行され、Ctrl-cコマンド ライン バッファが終了し、コマンド ラインに戻ります。

于 2012-06-18T20:58:39.147 に答える
6

これが私がそれを行う方法です:

" adding emacs keybindings for command mode
cnoremap <c-a> <Home>
cnoremap <c-e> <End>

編集:

:help cmdline私が見つけたヘルプファイルで

:cnoremap <C-A> <Home>
:cnoremap <C-F> <Right>
:cnoremap <C-B> <Left>
:cnoremap <Esc>b <S-Left>
:cnoremap <Esc>f <S-Right>

最後の 2 つは言葉を飛び回るためのものです - happy jumping

于 2012-06-18T20:54:43.347 に答える