2017-04-09 15 views
0

コードベースに広がる複数行のコードにわたって特定の操作を繰り返す必要があります。例えば、 コードの行全体で特定の操作を繰り返すにはどうすればよいですか?

x = y; 

EQUATE(x,y); 

しかし、各インスタンスが言うこれは xyunit16_tとして宣言されている場合にのみ行われる必要があるため、手動で評価する必要があると交換する必要があります。だから、私が求めている機能は、さまざまなファイルをブラウズできるようにすることです。上記の操作を実行する必要があると感じる行を見つけたときはいつでも、特定のキーシーケンスを押すだけで、コードの行を変更してください。だから私はそれが

struct_x.var_x = struct_y.var_y; 

以下のようになります。どこかのラインに遭遇した場合、私はちょうどキーストロークの簡単なセットで

EQUATE(struct_x.var_x, struct_y.var_y); 

と交換することができるはずです。

+1

なぜマクロを使用しないのですか? – melpomene

+0

これは素晴らしく、ちょうどマクロを使用する方法を理解しました.vimを初めて使う人です。それは仕事を終わらせる。 – JDD

答えて

1

これは私がこれを行うために、マクロを使用する方法である:

  1. スタートqaで、マクロの記録:記録を開始してからレジスタaに保存することq
  2. 行の先頭に移動:^
  3. が挿入モード(i)とタイプEQUATE(を入力します。
  4. コマンドモードで検索および置換操作を実行します。:.s/\ = \ /,/g - =を検索し、この行の,と置き換えます。
  5. $で行の最後に移動し、再度挿入モードに入り、ブラケットを閉じます。
  6. マクロ記録を停止 - q

それです!それを使用する他のすべての場所で@aとマクロを再生します。

+0

'^ i 'と' I'、 '$ a'と' A'を組み合わせることができます。 '.'を指定する必要はありません - 現在の行は':s'のデフォルトの範囲です。スペースをエスケープする必要はありません: ':s/= /、/ g'はうまく動作します。 – melpomene

関連する問題