LoginSignup
5

More than 5 years have passed since last update.

行末を適切な数のスペースで埋めて行の幅を整える

Last updated at Posted at 2012-04-26

タイトルだけでは何のことか分からないかもしれませんが,やりたいことは以下のような感じです.

aa
bbbbbb
ccc

こういうファイルを,行末にスペースを適切な数埋めて…

aa_____
bbbbbb_
ccc____

という形にしたいわけです (見えるようにするために,スペースの代わりに _ を表示しています).ときどきこれをしたい要求が出てきます.それを Vim の基本操作だけで実現する方法です.もしかしたらもっといい方法はあるかもしれません.

追記

もっといい方法がやはり存在しました.コメント参照.Linda_pp さんありがとうございます.

(追記終了)

aa     # 1. 先頭行の末尾にカーソルを置き (gg$ でおk),C-v で矩形選択 visual mode に入ります.
bbbbbb
ccc    # 2. 末尾行の末尾にカーソルを移動させ (G$ でおk),
       # S-a でカーソル位置の後ろに挿入する状態にして,
       # ここでスペースを十分な量 (bbbbbb を超えるだけ) 入力します.

これで,以下の様な状態になるはずです.

aa__________
bbbbbb__________
ccc__________

ここで,aa の後ろのスペースの,bbbbbb を超える位置 (*) にカーソルを移動させ,以下の操作を行います.

aa_____*____     # 1. * の位置にカーソルを持っていき,C-v で矩形選択 visual mode に入ります.
bbbbbb__________
cc_____+____     # 2. + の位置までカーソルを移動させ (100j とかで OK),
                 # その後行末までカーソルを $ で移動します.

$ での移動は,言い方難しいですけど「完全に末尾まで」移動が行われます.カーソル移動として l 押しっぱで cc の行の末尾まで移動しても,bbbbbb の行の行末まで移動出来ません.(実を言うとさっきスペースを挿入するときに使った G$ の $ も同じことだったりします.)

で,この状態から x で文字の削除を行うと,

aa_____
bbbbbb_
ccc____

となり,行の幅が整います.これで目的達成です.

行末に十分な量のスペースを挿入するのは,コマンドモードに入って

%s/$/______________/g

という置換を行うことでも出来ますが (※ここでもスペースを _ で書いています),スペースの数が足りなかったり (bbbbbb の行の幅に追いつかない) することが多い感じです (※あくまで個人の感想です).なので visual mode で見ながらスペース挿入の方が個人的にいい感じ.

必要となる Vim の知識は,hjkl での移動や x での削除と言った超基礎なもの (そもそも覚えてないと Vim を使うことすら出来ないレベル) を除けば,

  • G, gg でのファイル末尾,ファイル先頭への移動
  • 100j などの,(数値)(キー) で (キー) による操作を (数値) 回数行う仕組み
  • C-v での visual mode (矩形選択) への突入 (※これひっじょーに便利なので知らない人は覚えて損しません!)
  • visual mode において,通常時の i や a を S-i や S-a で行うという知識
  • $ での行末への完全な移動

となります.矩形選択 visual mode に秘められた可能性は結構無限大だと個人的に思ったりしています.

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
5