8

次のことをしたい場合がいくつかあります

ファイル内:

1234

カーソルを1桁目に置いて、Ctrl-Aを使用して桁をインクリメントし、次のようにします。

2234

それ以外の

1235

これを行うための固有のvimコマンドはありますか?

それ以外の場合は、簡単なスクリプトを設定する必要があります。

  1. 先頭と末尾のスペースで数字を囲みます
  2. Ctrl-Aでインクリメント
  3. 先頭と末尾のスペースを削除する

そのように、それからキーにマップしますか?

4

2 に答える 2

9

インクリメント関数は、ほとんどのvimコマンドと同様に先頭の数字を取ります。 あなたが望むように1000 ctrl+a戻ってきます。2234すべての番号が4桁の番号である場合、これは機能します。またはr2、カーソルの下の現在の文字を。に置き換えるを使用することもできます2が、これは具体的すぎる可能性があります。

スクリプトが必要な場合は、マクロを記録できます。

qaa[space][esc]h[ctrl+a]lx

内訳:

qa-qマクロの記録を開始し、登録するために保存しますa

a[space][esc]-番号の後にスペースを追加します

h-番号に戻ります

ctrl+a-1つ追加します

lx右に移動してスペースを削除します。

ctrl+aお気づきのように、関数は数値全体に作用し、常に1を追加するため、先頭にスペースを追加する必要はありません。

于 2012-07-24T14:10:20.943 に答える
4

あなたはこれをとして行うことができますs<C-r>=<C-r>"+1<Enter>

次に、それを次のような別のマップにマップできます(この法線マップにsを挿入するnnoremap g<C-a> s<C-r>=<C-r>"+1<cr>にはを使用する必要があります)。Ctrl-vCtrl-r<C-r>

ステップバイステップ:

s -カーソルの下の文字を削除して挿入を開始します

<C-r>=-式の評価を開始します。

<C-r>"-名前のないレジスタの内容を

これらの詳細については、:helpi_CTRL-rを参照してください。

+1<Enter>-値に1を加算して、コマンドを完了します。

于 2012-07-24T14:24:28.737 に答える