Vimを使おう!(初級編:その2)
こんにちは、KUJIRAです。
前回はVimをエディタとして最低限使うための方法について書きました。
今回は少し発展させてVimを便利に使うためのコマンドをまとめていきたいと思います。
内容は以下となります。
- カーソル移動
- コピー&ペースト
- 文字消去、行削除
それでは早速始めましょう。
1.カーソル移動
カーソルの移動はキーボードの上下左右ボタンで移動できますが、Vimではそれ以外にカーソル移動のコマンドがあります。このカーソルコマンドはホームポジションから押しやすい位置にあるものばかりなので普通に上下左右ボタンを打つよりかは格段に効率が良くなります。以下がそのコマンド類です。
「h」:カーソルを左に一つ移動させる 「j」:カーソルを下に一つ移動させる 「k」:カーソルを上に一つ移動させる 「l」:カーソルを右に一つ移動させる 「w」:カーソルを単語単位に左に一つ移動させる 「b」:カーソルを単語単位に右に一つ移動させる 「0」:行の先頭へ移動する 「$」:行の末尾に移動する 「e」:行の末尾に移動する 「gg」:ファイルの先頭行の先頭にカーソルを移動する 「G(Shiftを押してg) 」:ファイルの最終行の先頭にカーソルを移動する 「M(Shiftを押してm) 」:画面の真ん中の行の先頭にカーソルを移動させる 「:0〜n」:指定した番号の行の先頭に移動する。
実際にキーボードのホームポジションに手を置いてみれば分かりますが、どれも凄く押しやすいことに気づくでしょう。
これが以前にも述べたVimがテキスト編集に強い理由になります。
通常のGUIのエディタだとカーソルを移動するのに一々上下左右ボタンを押さなければいけません。また、これらのボタンを押さなくてもマウスで移動させなくてはならないのでどの道ホームポジションから手が離れてしまいます。
ほんの数秒、下手したら1秒もないじゃん。と思うかもしれませんが、この時間が積み重なったらどうなるでしょう、1分、10分とどんどんロスが増えていき、気づけば1時間を無駄にしていたなんてことになりかねないのです。
それでも感覚的によく分からない人は実際に手になじむまで使ってみることをオススメします。きっと元のエディタには戻れないでしょう。
2.コピー&ペースト
エディタを使っていてよく使うのがコピーとペーストの機能です。Windowsだと「Ctrl + c」と「Ctrl + v」というコマンドにお世話になった人も多いのではないでしょうか?それほどコピーとペーストの機能はパソコンで文章を編集するにはかかせないものなのです。
では、Vimのコマンドを見てみましょう。まずはコピーです。
「yy」:カーソルのある行の文字すべてをバッファに保存する 「範囲選択 + y」:範囲選択した文字をバッファに保存する 「y + 移動コマンド」:カーソル位置からカーソルの移動先までの文字をバッファに保存する。
次にペースとコマンドです。
「p」:バッファに保存された文字を以下のルールで貼付ける ・行単位でバッファに文字を保存している場合は現在のカーソル位置から一行下に文字列を貼付ける ・文字単位でバッファに文字を保存している場合は現在のカーソル位置から一つ右に文字列を貼付ける 「P(Shiftを押してp)」:バッファに保存された文字を以下のルールで貼付ける ・行単位でバッファに文字を保存している場合は現在のカーソル位置から一行上に文字列を貼付ける ・文字単位でバッファに文字を保存している場合は現在のカーソル位置から一つ左に文字列を貼付ける
以上がコピーコマンドとペーストコマンドです。
3.消去、行削除
今日最後のコマンド類です。文字列の消去を行います。「え?そんなの普通にBackspaceとDeleteボタンでいいよ・・・」と言うことなかれ。Vimの文字列消去はかなり便利です。もう「Backspace」とか「Delete」キーなんて使いたくなくなります。それでは見てみましょう。
「x」:現在のカーソル位置にある一文字を削除しバッファに保存する 「X」:現在のカーソル位置から一つ左にある一文字を削除しバッファに保存する 「dd」:現在のカーソル位置の行を一行削除しバッファに保存する 「d + 移動コマンド」:現在のカーソル位置からカーソルの移動先までの文字を削除しバッファに保存する 「D」:現在のカーソル位置から同一行の末尾までの文字列を削除する
どうですか?他のエディタと違って削除した文字をバッファに保存しています。これが、Vimが他のエディタと違う所の一つです。消すと同時にコピーする。これにより文字を別の行に移すということが通常のエディタより早くできるのです。
Vimに乗り換えたときには是非使ってほしい機能の一つなので試してみてください。
ということで今日はここまで。KUJIRAでした。