[Vim問題] 直前のコマンドまたは操作を繰り返す「単発繰り返し」とは?

直前のコマンドまたは操作を繰り返す「単発繰り返し」とは?

この記事では、Vim / neovim でプラグインを使わずに直前のコマンドまたは操作を繰り返す「単発繰り返し」について、ご紹介します。

[解答] ドットコマンド .

次のコマンドで実行可能です。

(ノーマルモードで)
.

これで最後の変更を繰り返す「単発繰り返し」を実行することができます。

これだけですが、非常に強力です。

注意点として「最後の変更を繰り返す」という意味ですが、色々バリエーションがあるようです。主には下記の2つのようです。

  • ノーマルモード:直近に実行したコマンド1つ
  • インサートモード:インサートモードからノーマルモードに戻るまでの全作業

これをうまく使えば、移動やスクリプトを書くときによく使う操作が簡単です。

例えば、行頭に#を入れてコメント化する作業は次の順にキーを打つだけです。

Shift + i     (行頭でインサートモードに移行する)
#         (コメント記号を入力する)
esc / Ctrl + [  (終了)
j         (一つ下の行に移行する)

. (上の3つの処理を繰り返す)

以下、必要なだけ . を入力する

行数があまりにも多い場合はビジュアルモードで行う、もしくはマクロ機能を活用した方が無難ですが、数行程度なら素早くできます。

次の様に数と組み合わせてれば、複数回実行も可能です。

10.  (10回ほど単純に繰り返す)

注意としては下記の通りです。若干クセがあります。

  • 標準状態では、ヤンクなど対象外となるキーバインドやコマンドがある
  • 入力内容を繰り返す場合、改行は含まれるため、複数行の入力も繰り返せる
  • 入力を繰り返したい場合、前の文字や前の行に戻った場合は、戻った後の操作しか繰り返せない

複雑な入力や操作を繰り返す場合は、マクロ機能を使った方が無難かも知れませんね。おり

このVimコマンドの補足情報

  • 利用頻度[star rate=4]
  • 便利さ[star rate=5]
  • 覚え易さ[star rate=4]

関連するVimヘルプ

Vimからは、下記のコマンドでヘルプを確認できます。

:help .

ヘルプで検索するときは、通常は大文字小文字は識別されませんので、どちらでも構いません。

参考書籍

こちらの書籍が参考になります。

[temp id=3]

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

Vim力アップして、そろそろ上級 Vimmer の仲間入りしたいIT系エンジニアの端くれです。読んでくる訪問者の皆様と一緒に、Vim力を上げていくことができる記事が書ければと考えています。

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください