LoginSignup
11
10

More than 5 years have passed since last update.

vimのブロック選択とインデントを使ってコメントを整形する。

Last updated at Posted at 2013-05-25

例えば各行に書いてあるコメントのインデント位置を調整したい場合

適当なコメント.cpp
  std::cout << "◆お菓子" << std::endl;     // 適当なコメント
  Singleton* obj = Singleton::getInstance();   // 適当なコメント
  obj->Introduce();
  obj->setName("妖精さん");   // 適当なコメント
  obj->Introduce();

まずは調整したい行をVなどで範囲選択して置換。

何の変哲もない置換.txt
今回はコメントの「//」を目印に置換。置き換える先はタブ文字なり、半角スペースなり任意で。
ただし、一番長い行よりもコメントが後ろに来る位十分に割り当てます。
:'<,'>s/\/\//                      \/\//

これを実行すると

置換後のテキストはこうなる.cpp
  std::cout << "◆お菓子" << std::endl;                           // 適当なコメント
  singleton* obj = singleton::getinstance();                         // 適当なコメント
  obj->introduce();
  obj->setname("妖精さん");                         // 適当なコメント
  obj->introduce();

その後、インデントを揃えたい位置にカーソルを持って行き<C-v>で縦にブロック選択します。
今回は分かりやすいように#をブロック範囲の反転表示と見立てています。
(ブラウザのフォント等によって#の位置がズレて表示されますが縦一直線と思ってください。)

こんな感じの範囲にする.cpp
  std::cout << "◆お菓子" << std::endl;         #                 // 適当なコメント
  Singleton* obj = Singleton::getInstance();   #                    // 適当なコメント
  obj->Introduce();
  obj->setName("妖精さん");                     #   // 適当なコメント
  obj->Introduce();

ここでブロック選択の範囲がインデントを揃えたい行だけに表示されていることが重要です。
コードの部分を選択範囲に含めてしまうと、この後のインデント操作が間違って適用されるので注意。

選択範囲が決まったらブロックで表示が反転している状態で<コマンドでインデントを行います。
適用する際は十分に大きいインデント量100<などを適用してください。
(ブラウザのフォントによっては//の位置がズレて表示されますが揃ってるものとしておいてくださいorz)

調整用のインデント適用後.cpp
  std::cout << "◆お菓子" << std::endl;         // 適当なコメント
  Singleton* obj = Singleton::getInstance();  // 適当なコメント
  obj->Introduce();
  obj->setName("妖精さん");                     // 適当なコメント
  obj->Introduce();

するとブロック範囲よりも左側にはインデントが適用されませんので選択した位置でコメントが揃います。

11
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
10