レッツをデクリメントして、視覚的ブロックまたは行の範囲で置換することは、私は、この入力を持っていると言う:Vimの:どのように特定の数
{3:3} abc
{3:4} def hjkl
出力リレーは次のようになりますので、先頭に番号をデクリメント
{3:2} abc
{3:3} def hjkl
':'の後の ':'の直前の '}'。
視覚的なブロックで
レッツをデクリメントして、視覚的ブロックまたは行の範囲で置換することは、私は、この入力を持っていると言う:Vimの:どのように特定の数
{3:3} abc
{3:4} def hjkl
出力リレーは次のようになりますので、先頭に番号をデクリメント
{3:2} abc
{3:3} def hjkl
':'の後の ':'の直前の '}'。
視覚的なブロックで
を(より短いです)解決策:
:exe "'<,'>norm 0f:\<C-X>"
しかし、あなたはCtrlキーを使用して気にしない場合 - VCtrlキー - X^X
を取得するには、次のコードを使用することができます
:'<,'>norm 0f:^X
^X
(:help CTRL-X
からの):
は、カーソルの位置にまたは後の数またはアルファベットから減算します。
これが唯一の選択された視覚的なブロックのため、全体ではなく、バッファ/ファイル(または行の範囲内)のために働く必要があることを一つの可能な解決策に注意してください:別の
:`<,`>s/:\(\d\+\)}/\=":".(submatch(1) -1)."}"/g
注意:ビジュアルブロックを使用していても、コマンドは実際には行全体で実行されます([this](http://vi.stackexchange.com/q/6898/6698)を参照)。 [this](http://vi.stackexchange.com/q/7388/6698)の質問)。ちなみに、 ':' <,'> s /:\ zs \ d \ + \ ze}/\ = submatch(0)-1/g' –
@JairLopez: ': '<,'> s/\%V:\マッチが完全にビジュアルブロック内にあることを保証します(ビジュアルブロックで覆われていない行の部分は除外します)。%\ V \ \ \ submatch(0)-1/g' – Amadan