Vimを使おう!(初級編:その3)
皆さん、こんにちはKUJIRAです。今回もVimのお話です。今日の投稿でVimの初級編は終わらせていただきます。次からは中級編です。
では、始めましょう。前回は移動とコピー&ペースト、文字列の削除を行いました。
今回はもっと踏み込んだ所を学んでVimをもっと便利に使ってみようと思います。
以下をご覧ください。
- アンドゥ・リドゥ
- 範囲選択と矩形選択
- 文字列の置換入力
- 行連結
- 複数回コマンド実行
- 一つ前の操作の繰り返し実行
1.アンドゥ・リドゥ
Vimでアンドゥ・リドゥをやってみましょう。この言葉を出されても普通の人はピンとこないかもしれません。「一つ前の操作に戻る」、「一つ先の操作に進む」という風に言い方を変えましょう。
Windowsでは「Ctrl + z」「Ctrl + y」がショートカットとして割り振られています。この操作、Vimでは以下のようになります。
「u」:一つ前の状態に戻る 「Ctrl + r」:一つ後の状態に進む
これだけです。特にこれといって説明することはないと思いますwww
2.範囲選択と矩形選択
範囲選択と矩形選択を行います。GUIベースのエディタだとマウスで選択するのが普通だと思います。しかしVimだと以下のコマンドと移動コマンドでできてしまいます。
「v」:範囲選択状態(ビジュアルモード)になる 「V(Shift + v)」:矩形選択状態(ビジュアルブロックモード)になる
※ビジュアルモード、ビジュアルブロックモードについて
この連載のはじめの方でこのエディタにはコマンドモードとエディタモードの2種類あると言いました。しかし、今回ビジュアルモードとビジュアルブロックモードという2つのモードが出てきています。これは何だ?となりますが、正直このモードに関してKUJIRAはコマンドモードの拡張機能という位置づけだと勝手に思い込んでいます。なぜかというと、選択、矩形選択ができるだけでコピーコマンドやペースとコマンド、削除コマンドなど多くのコマンドが使えるからです。なのでコマンドモードの拡張と言いました。間違えていたらごめんなさいw
3.文字列の置換入力
文字列の置換入力です。この機能もエディタに慣れると欲しくなる機能の一つです。普通はインサートキーを押してインサートモードにしてから置換入力を行います。でも、このエディタではそういう面倒なキーを押す必要がありません。
Vimでは以下のコマンドで置換入力を行います。
「r + 任意の文字」:カーソル位置の文字一文字を任意の文字に置換する 「R」:カーソルをインサートモードに変更する。
どうでしょうか?今までわざわざインサートボタンを押すのが面倒だった人でもこれだったら簡単に押せます。置換入力は慣れると本当に便利です。ですので是非使っていただきたいと思います。
4.行連結
皆さんは1行目と2行目にある文字を一つの行にするときにはどうしているでしょうか?と文章で書いても、ん?となるので以下に例を書きます。
ex) abcdefg hijklmn これを・・・ こう変換する => abcdefghijklmn
多分皆さん1行目の最終文字(ここではg)まで移動しそこから「Delete」を押すか、2行目の先頭文字に移動し(ここではh)「Backspace」を押すかのどちらかと思います。この操作、この程度の文章ならいいですが、これが100行とかなるともはや考えるのもだるくなり編集する気が失せるでしょう。では、Vimを見てみましょう。
「J(Shift + j)」:カーソル位置の次の行をカーソル位置の行の末尾の後に移動させる。
ex) abcdefg hijklmn があったとき、 1.カーソルを1行目の任意の位置へ移動 2.「J」を押す
これだけです。手順が最初の例よりかなり少ないと思います。これならたとえ100行あっても「J」を押しっぱなしにしていればいつか終わります。簡単だし楽です。
5.複数回コマンド実行
さて、先ほどの行連結で100行連結させるなんてことを言いました。先ほどのコマンドで100行の連結も楽に簡単にできるようになりましたが、それでもまだ面倒くさいです。そこでひらめくのが「J」を100回繰り返せないか?ということです。。。できるんです、Vimなら。以下にその機能を記述します。
「n + 任意のコマンド(nは1以上の自然数)」:任意のコマンドを「n」回繰り返し実行する。
例えば100行のを連結する場合には
100J
と打ちます。
100行削除する場合は
100dd
どうですか?これで100行連結するまでキーを押し続けなくても良くなりました。
6.一つ前の操作の繰り返し実行
一つ前の操作を繰り返して行います。普通はキーマクロ等々を使いますがVimの場合以下のコマンドで繰り返し実行ができます。
「.」:一つ前の操作と同じ操作を実行する
たとえば100行を連結したとします。これをもう一回繰り返したいときにこのコマンドを打つと同じ操作が実行されます。
めちゃくちゃ便利です。
とまぁ、今日も一方的に話して終わってしまいました。今日で初級編は終わりです。次回からは中級編にいってみたいと思います。KUJIRAでした。