2013/08/05更新

[Vim] Vim初心者の自分が、初心者の視点からVim入門を書いてみました。

このエントリーをはてなブックマークに追加            

こんにちは、@yoheiMuneです。
昨日からMacで使うメインエディタをSublimeTextからVimに変更しました。
このブログ(と今後のブログも)では、Vim初心者の自分がVimについて学んだことを備忘録としても残したいと思います。

画像



Vimに移りたいと思った理由

SublimetextとかEclipseとか便利なテキストエディタです。でもVim使ってるとカッコいいなぁというミーハーな感じとか、 キーボードだけで高速にコーディングできるというVimの特徴とか色々気になって、このたびVimに移ってみました。

ただVimに移行してきて感じるのは、難しいし良くわかんないという点。このブログでは自分が打ち当たった壁を1つ1つ書いて言って、 今後自分のようなVim初心者に対して少しでも為になればいいなぁと思った次第でございます。



入門編のゴール

Vimはすんごく色々な機能があるとのことなので、いくつかの記事に分割しつつVimの機能をブログに書きたいと思います。 今回の記事では、「Vim入門編」として、Vimを最低限使えるようになるところまでを書きたいと思います。



Vimのモードを知る

ここではVimのモードについて書きたいと思います。ここをすんなり理解すると、Vimの世界が分かりやすくなる気がします! 普通のコーディングツールを使っていると「モード」というものを意識しませんが、Vimでは下記のモードを使い分けることで、作業を行います。

ノーマルモード
Vimを起動した直後のモードがこれで、カーソルの移動をしたり、削除などの編集を行うことが出来ます。 また、このモードから編集モードやコマンドモードに移ることができ、全てのモードの起点となるモードで、とても重要なモードです。
他のモードからは、「Esc」や「Ctrl + [」や「Ctrl + c」を押すことで、このモードに戻ることが出来ます。
挿入モード
タイプされたテキストがバッファに書き込まれるモードです。テキストを書き込む時に使う感じです。 ノーマルモードから「i」「I」「a」「A」「o」「O」などを押すことでこのモードに入ることが出来ます。
ビジュアルモード
領域選択を行うことが出来るモードです。コピペとかする際には、このモードでコピー範囲を指定することが出来ます。 ノーマルモードから、「v」「V」「Ctrl + v」「gv」などのコマンドでこのモードへ移ることが出来ます。
コマンドラインモード
ファイル保存、Vimの終了、検索や置換などのコマンドを実行できるモードです。 ノーマルモードから、「:」「/」「?」などのコマンドでこのモードへ移ることが出来ます。

基本的には上記4つのモードを使い分けることで、様々な処理をVimで行うことが出来ます。
SublimeTextやドリでは、上記でゆう挿入モード(ファイルに書き込めるモード)の状態がメインで、ファイル保存や検索などの機能は、メニューバーやショートカットで行いますが、Vimではモードの切替でファイル書き込みとその他の場合とで区別します。
このモードの理解がVim理解の第1歩となります。



Vimの起動と終了

続いて起動と終了について記載します。起動と終了は、基本的にはコマンドモードで実行するため、入力のプフェフィックスに「:」が付きます。

Vimの起動

Vimの起動はいくつかの方法がありますが、ターミナルから例えば以下のように行いあmす。
$ vim
そうすると、以下のような画面が標示されます(Vimのバージョンや環境により異なるかもしれません)。
画像
これがVimの画面です。


またファイル名を指定して開く場合には、以下のようにターミナルから起動します。
$ vim [ファイル名]


Vimの保存と終了

Vimでは以下のコマンドで保存や終了を行うことが出来ます。
以下のコマンドはVimのノーマルモードから行います。コマンドの先頭に「:」が付いているコマンドは、 「:」が入力された瞬間にコマンドラインモードとなります。

(基本的なコマンド)
キー 説明
:w [ファイル名] 指定されたファイル名で保存する。ファイル名を省略した場合には、現在のファイルに上書きする。
:w! [ファイル名] 書き込みを強行する。
ZZ Vimを終了する。ファイルが変更されている場合には、変更を保存する。
:wq ファイルを保存してVimを終了する。
:q Vimを終了する。ファイルに変更がある場合には警告が標示される。
:q! Vimを強制的に終了する。ファイルに変更がある場合は、変更分は無視。
(応用的なコマンド)
キー 説明
:行1,行2 ファイル名 指定された行1〜行2のエリアの内容を、指定されたファイルに出力する。
:w >> ファイル名 現在の内容を、指定されたファイルの最後に追記する。

これでVimの起動と保存と終了が出来るようになります。



Vimでファイルを新規作成する

Vimを使って新規にファイルを作成する方法はいくつかありますが、以下の2つが主な使い方となるかと思います。

■新規ファイル名を指定してVimを起動する

Vim起動時に以下のように新規ファイル名を指定して起動します。
$ vim [新規ファイル名]
そして編集後に、ファイル保存をすることでファイルが新規作成されます。
:w
これで新規作成されます。


■ファイル保存時にファイル名を指定する

2つ目はファイル名指定をファイル保存時に行う方法です。まずはVimをファイル名指定なしに起動します。
$ vim
そして色々と書き込んだ後に、以下のようにファイル名を指定して保存することでファイルを新規作成することができます。
:w [新規ファイル名]
上記2つは使いやすい方を使うといいと思います!



ノーマルモードから編集モードへ移る

Vim起動直後のノーマルモードから編集モードに移行することで、キーボードで打って文字を書けるようになります。 この「編集モードの移行」にはいくつかの方法があるのですが、これを使い分けるとVimの便利さを体感することが出来ます。
以下の6種類を使い分けると便利です。
キー 説明
i カーソルのある位置から挿入モードに移ります
I 行頭から挿入モードに移ります
a カーソルのある1つ右の位置から挿入モードに移ります
A 行末から挿入モードへ移ります
o 現在の行の1行下に空行を作成し、その空行から挿入モードに移ります
O 現在の行の1行上に空行を作成し、その空行から挿入モードに移ります

上記6つは初心者の自分にとっては多いのですが、少しずつ覚えて行きたいと所です。 とりあえずは「i」さえ覚えれば、後述のカーソル移動と組み合わせて任意の場所で編集が行えるようになります。
が、ぜひ使い分けて効率的な編集を行いたいところです!



カーソル位置を移動する

次にカーソル位置を移動する方法です。MacのVimでは矢印キー(↑→↓←)でも移動できるのですが、以下のようなコマンドを覚えて使うことで、 目的の場所へより早く到達できるようになります。
これも編集効率アップのために、色々と覚えたいです。

(1文字移動する)
キー 説明
h(または←) 左に1文字分移動する
j(または↓) 下に1文字分移動する
k(または↑) 上に1文字分移動する
l(または→) 右に1文字分移動する
(複数文字、複数行移動 - 良く使うやつ)
キー 説明
Ctrl + d 半画面分下に移動する
Ctrl + u 半画面分上に移動する
gg ファイルの先頭へ移動する
G ファイルの末尾へ移動する
(さらに)
キー 説明
0 行頭へ移動する
$ 行末へ移動する
w 単語単位で右へ移動する
b 単語単位で左へ移動する
Ctrl + f 1画面分下に移動する
Ctrl + b 1画面分上に移動する
といった感じでしょうか。1文字移動は自分はやっぱり矢印キーを使ってしまいます。
「さらに」という部分は、おいおい覚えて行けば良いかなぁと思うコマンドです。



文字を削除する

最低限使えるようになる為の最後のコマンドは、削除です。 挿入モードでキーボードの「Del」キーで消すことも出来ますが、挿入モード以外(ノーマルモードなど)でも文字を削除することが出来、 このコマンドを覚えると自分の思い通りの削除が簡単胃できるようになり便利です。
1つずつ身につけていきたいコマンドです。

(基本)
キー 説明
[数値]x カーソルの位置にある文字を削除する。キーボードの[Del]と同じ挙動です。数値を指定した場合は、その文字数分削除する。
[数値]X カーソルの位置の左の文字を削除する。キーボードの[BS]と同じ挙動です。数値を指定した場合は、その文字数分削除する。
[数値]dd カーソルのある行を1行削除する。数値を指定した場合は、その文字数分削除する。
D カーソルのある位置から行末まで削除する。



最後に

Vimって上述のキーを見て感じるのは、やっぱり独特だなぁと思います。 でもVimに慣れれば高速に編集できるのかなぁとも片鱗を感じることが出来ました。
上記で紹介した内容以外にも、コピペや検索、置換、テキストオプジェクとなどの便利な機能が満載なので、ブログに書ければと思います。

最後までご覧頂きましてありがとうございました。





こんな記事もいかがですか?

RSS画像

もしご興味をお持ち頂けましたら、ぜひRSSへの登録をお願い致します。