Vimは矢印キーなしで挿入モードでカーソルを1文字移動します


8

これは少しやり過ぎに思えるかもしれませんが、vimに切り替えて、ワークフローに満足しています。私は矢印キーを使用しないように自分自身を訓練しようとします。執筆するときは常にアルファキーに手をかざすのがとても大きなことだからです。ナビゲートする必要がある場合は、挿入モードを終了し、通常モードで移動して、挿入モードに戻ります。

これが実際に混乱を招く例外があります。私はclang completeスニペットで使用していますが、super tabこれはすばらしいことです。カーソルを置いたままパラメーターを入力した後に関数が自動で完了するたびを除いて)、カーソルを1文字右に移動する必要があります。ご想像のとおり、これは非常に頻繁に発生します。

(私の知る限り)私が持っている唯一のオプションは:Esclaまたはであり、どちらにも満足していません。1つ目は3つのキーを押すだけで1文字のカーソルを動かすだけで、2つ目は手を矢印キーに移動させます。3番目のオプションは、にマップCTRL-Lまたはsmthすることです。

これを行う最良の方法は何ですか?


//snippets (clang complete + supertab):
foo($`param1`, $`param2`)

//after completion:
foo(var1, var2|)
              ^ ^
              | |
     I am here  |
                 Need to be here

| カーソル位置を示します


同様の問題)で、関数に少なくとも1つの引数がある場合に終了スクリプトをエコーし​​ないようにするために、完了スクリプトをハッキングしてしまいました。だから手でタイプします。はるかに便利になりました。
ドミトリーフランク

入力するとどうなるのでしょうか)。実際に挿入しないとスキップされます。(私はこのプラグインを使用していません)
FDinoff 2014

@FDinoffいいえ、それは単に別のものを挿入します)
bolov

1
@bolovそれは残念です。自動ペアからそれを行うコードを抽出できる場合があります。プラグインが競合するかどうかはわかりません。もう1つのオプションは<C-O>l、1つの通常モードコマンドで通常モードに戻るために使用することです。
FDinoff 2014

回答:


5

閉じ括弧である場合)、既存のコードをスキップするためのマップ)

inoremap <expr> )  strpart(getline('.'), col('.')-1, 1) == ")" ? "\<Right>" : ")"

取得元:http : //vim.wikia.com/wiki/Automatically_append_closing_characters


古い答え

:h i_CTRL-O 1つのコマンドを実行し、挿入モードに戻ります。

Ctrl-ol 右に1文字移動し、挿入モードに戻ります。

あるいは、いくつかのブラケットプラグインを使用すると、閉じブラケット)を入力するだけで既存のブラケットを上書きできます。


1
)が行の最後の文字の場合、これは機能しません(これは、コードを記述するときに頻繁に発生します)。CTRL-O aただし、機能します。したがって、1つのキーを保存したと思います。:)
bolov 2014

True del )は2文字のみで、常に閉じ括弧の後に置かれます。
Brett Y

「)」をスキップすると、魅力のように機能します。ありがとう
bolov

0

次のように入力して、挿入モードで使用されるコントロールキーを検索します。

:help insert-index

ctrl-bは使用されませんが、他のキーを犠牲にすることもできます。

imap <c-b> <right>

これにより、カーソルが1文字右に移動します。または、いくつかの二重文字をマッピングします。

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