読者です 読者をやめる 読者になる 読者になる

ここにタイトルが入ります

デザイン&プログラミングのことも書くし、それ以外のことも書く。

【Vim】マクロを使う。 →編集はどうやってするの?

tool

データやソースを整形したりするとき、エディターのマクロ重宝しますよね。
Vimももちろんキーマクロ(って言うんですか?)が使えるので、繰り返す動作を覚えさせれば
何百行何千行に対しての作業もすぐに済ませることができます( ´∀`)


Vimの場合、「q」の後に何か任意のキーを押すことで動作の記録が始まります。
(エディターに「記録中」とか出る)
そこで覚えさせたい処理を実行。
終わったら、再度「q」を押すと記録が終了します。

「@」の後にさっき割り当てたキーを押すことで覚えさせた処理が実行できます。


例)
「qa」と押して記録開始
 ↓
処理を覚えさせる
 ↓
「q」を押して記録を終了
 ↓
「@a」を押すことで覚えさせた処理を実行させる
 ※100回実行させたい時は「100@a」で100回繰り返してくれる


で、よくマクロを利用するのですが、
覚えさせたマクロを編集したい場合があるわけですよ。
複雑な処理覚えさせたのに1箇所間違えた!とか、
入力する文字を変えるだけで同じ動きをするマクロを作りたい…とか。


なんか検索してもあまり情報が得られなかったんですけど
(記録し直すのが普通なんだろうな…)
VimのWiki?に書いてありました。


〜参考になりました!!〜
Macros - Vim Tips Wiki
※「Editing a macro」の部分ね


マクロを編集する

例えば先程の例で記録した「@a」を編集したい!と思ったら、まず

:let @a='

と打ち込みます。

:letコマンドは変数(レジスタ?)を定義するコマンドのようなので、
「a」の中身を入れなおそうという事ですね。

次に「@a」に記録されている処理を呼び出します。
「Ctrl + r」の後に「a」 を押すことで、「a」に保存されていた処理が貼り付けられます。
マクロで記録していたキーがずらずらと並んでいるのがわかると思います。
そこで修正したい部分を書き換えてしまいましょう。


そして最後をシングルクォートで閉じて、

:let @a='hogehogefugafuga'

enterを押しましょう。
すると「@a」で呼び出される処理が変わっているはずです☆

:reg a

と入力すると中身の確認ができますよ!
(:regコマンドはレジスタの中身を確認するコマンドらしい)



これを使えばaに記録されたマクロを修正してbに記録、とかできるわけですね!
お試しあれ。