n
特定のパターンに一致するすべての数字を に置き換えるにはどうすればよいn+1
ですか? たとえば、行内の括弧内のすべての数字を値 + 1 に置き換えたいとします。
1 2 <3> 4 <5> 6 7 <8> <9> <10> 11 12
なるべき
1 2 <4> 4 <6> 6 7 <9> <10> <11> 11 12
%s/<\zs\d\+\ze>/\=(submatch(0)+1)/g
説明として:
%s " replace command
"""""
< " prefix
\zs " start of the match
\d\+ " match numbers
\ze " end of the match
> " suffix
"""""
\= " replace the match part with the following expression
(
submatch(0) " the match part
+1 " add one
)
"""""
g " replace all numbers, not only the first one
編集:特定の行だけを置き換えたい場合は、カーソルをその行に移動して実行します
s/<\zs\d\+\ze>/\=(submatch(0)+1)/g
または使用
LINENUMs/<\zs\d\+\ze>/\=(submatch(0)+1)/g
LINENUM
(実際の行番号に置き換えます。例: 13)
vim では、 を押すと、カーソルの上または後ろの数字をインクリメント (デクリメント) できます。
NUMBER<ctrl-a> to add NUMBER to the digit
(NUMBER<ctrl-x> to substract NUMBER from the digit)
1 だけインクリメント (デクリメント) する場合は、NUMBER を指定する必要はありません。あなたの場合、これには単純なマクロを使用します。
qaf<<ctrl-a>q
100<altgr-q>a
マクロの簡単な説明は次のとおりです。find (f) コマンドを使用して、カーソルを開始 < ブラケットに配置します。カーソルを桁に合わせる必要はありません。カーソル上の数字またはカーソルの後の最も近い数字を押すと、インクリメントされます。
さらに短い一連のコマンドが必要な場合は、 を押してカーソルを配置f<
し、 で数を増やしてctrl-a
から、 を繰り返し押し;.
ます。この;
コマンドは、最後のカーソル移動、つまり find コマンドを繰り返します。この.
コマンドは、最後のテキスト変更コマンドを繰り返します。
詳細については、このリンクを確認するか、組み込みのドキュメントを使用してください: h: ctrl-a
.