Linuxのススメ

Alter Linux を中心にLinuxについて書いてみます

vi のちょっと便利な使い方

こんにちわ。Daizo です。

今日は、vi エディタのちょっと便利な使い方を書いてみようかと思います。
っていうか、vi エディタって便利なんだろうけど、クセがあって使いづらいと思ってませんか?
基本的な使い方はわかるんだけど、面倒くさいとか思ってませんか?

まあ、実際の話、コマンドモードと編集モードがあって使いづらいと思いやすいですよね。
けど、vi エディタの真価はコマンドラインにあると私は思ってます。
ここを使いこなせば結構便利なエディタだと思うんですよね。
前置きが長くなったので、ちょっと便利な使い方を書きたいと思います。

今回紹介するのは、マーク機能と繰り返し機能の2つです。

マーク機能やり方は、コマンドモードで、m{a-zA-Z} です。
要は、mを押して続いてアルファベットを押せばいいだけです。
ma と押せば、a というマークが付きます。
これ、何が便利かというと、vi はラインエディタの拡張版なので、行番号を指定してなにかすることが多いんですが、このときに行番号を覚えなくても良くなります。
たとえば、置き換えでも、a 行から、b 行の範囲で、先頭に#をいれてコメントアウトしたいといった場合、
コマンドモードで、

:`a,`b s/^/#/g

とすることにより、一気に a 行から、b 行までの先頭に#を入れることができます。`a や `b で行番号を指定していることになるので、便利です。
また、コマンドモードで

`a

と入力することで、a でマークしたところまで飛ぶこともできます。
いちいち、行番号を :set number として表示して、覚えたりメモしたりしなくて良いので、すごく便利になると思います。

繰り返し機能は、知ってるかもしれないけど、コマンドモードで

[繰り返す回数][コマンド]

で、コマンドを指定した回数繰り返すことができます。
たとえば、

10p

とすれば、10回貼り付けができます。
なので、#とかを、xコマンドで切り取って、50pとかすれば、#が50個並ぶことができますし、
yy として、行をコピーして、10pとすれば、10行同じ文をコピーすることができます。

これができると、vi って便利だなと思うように私はなりました。
いちいち数えたり、行番号をメモしたりしなくてもよくなり、10回繰り返せとか、`a `b とかで行番号が指定したり飛んだりできるので便利ですよね。
行単位で、色々できるのが vi エディタなんだな〜と思ったことを思い出しますし、UNIX系のエディタって慣れればなれるほど便利なるんだなと思いました。