こんにちは。CREの田島です。
少し前からAI活用エディターのCursorが話題ですよね。
ただし、本記事は生まれたてエディターCursorについてではなく、リリース32周年を迎えたVimについての記事になっていますので注意です。
「AIを活用した」なんて甘美な響きではありませんが、Vimにも魅力的な個性が多いですよね。
キーバインドがその代表かと思いますが、「繰り返し操作のやりやすさ」もそのひとつかなと思ったので、Vimの繰り返し操作についてまとめました。
直前の変更を繰り返す
.
(ドット)を使います。
例えば、dd
で一行削除した後に、.
を押すと一行削除が繰り返されます。
直前のExコマンドを繰り返す
@:
を使います。
例えば、:vs
でウィンドウを分割した後に、@:
とするとさらにウィンドウを分割します。(この場合、:vs
をもう一度入力する方が楽かもですが、例として)
履歴からExコマンドを繰り返す
q:
を使います。
Exコマンドの履歴と一緒にコマンドラインウィンドウを表示します。
履歴を編集してExコマンドを実行することも可能です。
履歴から検索を繰り返す
q/
,q?
を使います。
検索履歴と一緒にコマンドラインウィンドウを表示します。
履歴を編集して検索をすることも可能です。
(検索には正規表現を使用できますが、クセがあります)
直前の置換を繰り返す
:&&
を使います。(:&&
の場合、現在行のみに作用します。)
以下のテキストを編集するとします。
Photoructionは建設業の生産性向上を目的としたクラウドサービスです。 テクノロジーとオペレーションの力で10倍を超える業務効率化を実現します。 大手ゼネコンをはじめ、100,000を超える建設プロジェクトで導入されている国内最大規模のサービスです。 私たちが考えるのは常に建設業で働く皆様のことです。 主力サービスである建設生産支援クラウドPhotoructionは、 リリースして3年半ほどで100,000を超える建設プロジェクトで使われるようになりました。
3行目の100,000を200,000へ置換した後、7行目も同様に置換したい場合は、:&&
とすればOKです。
↓入力キーの例
3G V:s/100,000/200,000/g 7G :&&
ひとまとまりの操作を繰り返す
1~10の連番生成を例にします。
レジスタaに記録し、それを繰り返します。
↓入力キーの例
i1<Esc> qa yyp<C-a> q 8@a
(単純な連番生成ならマクロ使わない方が楽です)
↓入力キーの例
yy9P VG g<C-a>
直前に実行したマクロを繰り返す
@@
を使います。
直前に記録したマクロを実行したい場合は、Q
です。
まとめ
これらの繰り返し操作がコーディングの中で使われることは稀だと思います。
ただ、エディターとしてではなく、テキスト整形ツールとして見たとき、これらの操作が輝ける瞬間があるかもしれません。