[Vim/Neovim]マクロについて

マクロの使い方

ノーマルモードでqキーを押し、
任意のキーを押すと

マクロのレコーディングが始まる。

画像1

この画像の場合、
sマクロの記録中ということになる。

マクロのレコーディングを終了するときは、
もう一度qキーを押す。

これでマクロが保存される。

保存されたマクロを確認するには、

:reg


画像2

"sとして保存されている。

このマクロを実行するには、
同じくノーマルモードで、
@を押してから、
マクロ名(この場合s)を押す。

実行する際、5@sとかとすると、
5回分というふうに、
その数回分実行する。


行頭に//を入れるマクロ


試しに、行頭に//を入れて、
Vue.jsの<script>部分をコメントアウトする、
マクロを作成する。

今回はaマクロにする。

下記の手順になる。

1: qaを押してレコーディングを開始
2: 0を押して行頭にカーソルを移動(ssにkeymapしている)
3: iでインサートモードにする
4: //スペースを入力
5: escする
6: jで下にカーソル移動して、qを押して記録終了

あとは、コメントアウトしたい行数だけ、
例えば、5行なら、
@5aを押してマクロを実行できる。

画像3



マクロを永続化

マクロを定義しても、
vimを閉じたら、
消えてしまう。

まさか、毎回マクロを定義し直すなんてことも
やってられない。

そのため、汎用的なマクロは、
保存したい。

保存の仕方は、
.vimrcやinit.vimに

let @d = "ssi// jjj"

みたいな感じで定義する。

qdでレコーディングしたマクロは、
レジスタに保存されているので、
それをそのまま"dpとかでペーストして、
""で囲むばいい。

ちなみに、これは、
先程の行頭に//を入れるマクロで、
@dを押せば実行される

:regでレジスタを確認すると、

スクリーンショット 2022-09-13 11.32.05

"dレジスタとして、
保存されている。

試しにqdqで
dマクロを初期化すると、
一旦初期化されるが、
もう一度vimを開き直すと、
再度dマクロが定義されている。

これでマクロを永続化することができるだろう。


既に開いているvimに定義したマクロを読み込ませる


vimは開きっぱなしのことが多い。

だが、それだとせっかく定義したマクロが認識されていないため、
使えない。

そのため、開いているファイルに対して、

:source ~/.config/nvim/init.vim

などを実行して、
読み込ませる必要がある。

ただ、毎度毎度こんな長いコマンドなど
とても打ってられない。

そこで、エイリアス化する。


command SS :source ~/.config/nvim/init.vim

これをinit.vimとかに追記。

:SSと実行すれば、
:source ~/.config/nvim/init.vimが実行されたのと
同じことになる。




この記事が気に入ったらサポートをしてみませんか?