vim - 繰り返し入力

 クラウディア
1. 概要
2. マクロで繰り返し入力する
3. もっと簡単に

1. 概要

 例えば、コンフィグレーションファイルなどで、複数行をコメントアウトするときがあります。  削除するのはこわいのでコメントアウトするわけだ。  わたしには結構こういう場面があるのですよ。  「redmine」の「database.yml」としましょう。

# Line indentation must be 2 spaces (no tabs).

production:
  adapter: mysql2
  database: redmine
  host: localhost
  username: root
  password: ""
  encoding: utf8

development:
  adapter: mysql2
  database: redmine_development
  host: localhost
  username: root
  password: ""
  encoding: utf8
 7~21行の先頭に #(シャープ)をつけたいわけです。  i で入力モードにして  # これを、何度も繰り返すので、マクロに記録して一気に入力できんかな・・・と。  vim ならそういう機能がありそうと思ったら、ありました。  本項は「vimで繰り返し入力を自動化 - エイリーの備忘録」を参考にさせていただきました。

2. マクロで繰り返し入力する

 前項の状況で 7行目にカーソルを置いて

# Line indentation must be 2 spaces (no tabs).

production:
 q で記録開始  a でマクロ名を a に設定(つまりここは何でもいいわけだ)  i  #      ESCq で記録終了  これで、マクロが記録されました。  @a でマクロを実行します。  繰り返し回数 @a で回数分マクロを実行します。

3. もっと簡単に

 行頭に「#」を入力するだけならば、もっと簡単な方法があるようです。  (参考サイトを掲載しておりましたが、リンク切れになりました)  . で直前の動作を繰り返すそうで。  行頭に「#」を入力するだけであれば。  行頭の位置で i # ESC。  あとは、 . を繰り返すだけで、以降の行を次々にコメントアウトできます。