1

数字のリストにその場で数字を追加していることに気付くことがよくあります。

    38
    12 x
   215 x
    98 x
    03 x
    23

私がやりたいのは、視覚的な数字のブロック (上記の例では x) を選択し、別の数字で数字を増減することです。

2 つのマクロを使用して実行しようとしました (1 つのマクロは不可能だと思います):
@a で数値を増やします --> 5@a --> すべての数値を 5 で増やします (@a = '^Aj')
@数を減らす x --> 5@x --> すべての数を 5 ずつ減らす (@x = '^Xj')
しかし...


1) 選択範囲内でのみマクロを使用する方法 (行をカウントせずに) 2
) まったく新しいマクロを作成せずにその場で増減数を変更する方法。
3) これを解決する方法: 上記の数字に 100 を追加すると、数字と12が1 文字右に移動します。 9803

別の解決策は関数を作成することですが、変更する必要があるいくつかの数値の入力ボックスに値を毎回追加するのは面倒です。

4

2 に答える 2

4

すべての行を選択したら、次のことができます。

:'<,'>norm 5<C-v><C-a> <-- inserts ^A

すべての数字に追加5します。

アライメントの問題は回避できません。そうです、vimscript はおそらくその仕事に適したツールです。

于 2013-04-11T15:18:59.047 に答える
1

数字を増やすことは悪くありません。選択肢はいくつかありますが、個人的には Tim Pope のスピードデートプラグインを使用することをお勧めします。それは素晴らしい<c-a>視覚的なモード マッピングを提供します。

ただし、ここですばやく汚いマッピングが必要な場合は、次のようにします。

xnoremap <silent> <c-a> :<c-u>exe "'<,'>norm! ".min([col("'<"),col("'>")]).'<bar>'.v:count1."\<c-a>"<cr>

配置について言及したので、godlygeek のTabularプラグインも参照してください。Drew over at vimcastsは、tabular の使用に関するスクリーンキャストを行いました。

独自のマッピング/関数/プラグインを作成することにした場合は、次のことも検討することをお勧めします。

:h :s
:h /\%V
:h sub-replace-expression
:h printf(
于 2013-04-11T20:31:25.940 に答える