超初心者が使えるように
文字通り自分は今まで独学でプログラミングを実施したので、Vim操作というものに全く触れてきませんでした。
そもそも「Vim」ってなんやねん。というところから始まる初心者の方に向けてと、自分で手を動かしまくって気づいた事を書いていきたいきたい思います。
Vimをインストールしていない人は公式サイトからできますので事前にやっておきましょう。
そもそもなぜVimなのか作られた理由を考えてみる
初心者の方は「そもそもなぜVimじゃないといけないのか?」がわからいはず。
メリットとしては、
- 操作性
- キーバインド(キーの実行機能)
- 環境依存度が低い(Linux, Window, Macどれでも使える)
- 初期設定が必要ない
- ターミナルで操作可能
このくらいでしょうか?
あとは現場でVimしか使えないことがある。(自分はそんな現場知らないが聞きはする)
ということで、そもそもなんで開発されたかを考えてみよう。
ということで開発者の言葉を調べてみました。すると。。。
エディターを用いた(プログラム)作業の大半は文字入力ではなく移動と検索であり、そこを徹底的に使い易いツールを作るべき
という考えで作られたらしい。
なるほど、、ということは移動と検索のコマンドを優先して覚えた方がVimの優位性を活かせるということですよね。
ですので、次から初心者が覚えるべき基本操作と移動、検索コマンドと使える便利機能について解説していきます。
あくまでもここで記載するものは初心者が最初に覚えるべき操作にフォーカスしております。
Vim操作はかなり種類や組み合わせが多く、最初から全部詰め込もうとするとわけわからなくなるので、まずは簡単かつ使えるものに絞って紹介させていただきます。
1 モードの種類と切り替え方法
VimにはNORMAL(ノーマルモード)、INSERT(挿入モード)、VISUAL(ヴィジュアルモード)、COMMAND(コマンドモード) の4種類があります。
今自分がどのモードで使用しているかは画面の一番左下の部分を確認しましょう。
以下、各モードの簡単な説明です。
モード | 動作説明 |
---|---|
NORMAL | カーソルの移動、改行、行の挿入、検索、テキストの入れ替えや削除、コピー&ペースト、ファイルの保存... |
INSERT | 文字の入力 |
VISUAL | テキスト選択(部分選択、全選択) |
COMMAND | ファイルの保存やVimの終了操作 |
例えば今私は操作練習のためにVim操作でこの記事を書いているのですが、これはINSERT(挿入モード) になります。
NORMALモードでは文字入力ができないため、コードや記事を書く際にはこのINSERTにしなければいけません。
次はモードを切り替える方法です。
モード | 切り替えキー |
---|---|
NORMAL |
esc (エスケープ) |
INSERT |
i (小文字) |
VISUAL |
v (小文字) |
COMMAND |
: (コロン) |
初心者の方は切り替えキーを押したら必ず先ほどの画面左下を確認するようにしましょう。
というのもこのVim操作の唯一のデメリットと感じたのが、モードを間違った状態でキーを叩くと誤入力の嵐になります。
2 初心者が覚えるべきキー入力と動作説明
基本カーソル移動
コマンド操作 | 動作説明 |
---|---|
h |
左に移動 |
l |
右に移動 |
j |
下に移動 |
k |
上に移動 |
この4つは超基本の基本なので必ず覚えましょう!
基本カーソル移動 2(ヨコ移動)
コマンド操作 | 動作説明 |
---|---|
w |
次の単語の先頭に進む |
e |
次の単語の末尾に進む |
b |
前の単語の先頭に戻る |
0 |
行の先頭に移動 |
$ |
行の末尾に移動 |
基本カーソル移動 3(タテ移動)
コマンド操作 | 動作説明 |
---|---|
shift + [ |
文字列を飛ばして上のスペースに移動 |
shift + ] |
文字列を飛ばして下のスペースに移動 |
ctrl + u |
半分上に移動 |
ctrl + d |
半分下に移動 |
ctrl + f |
画面1つ上に移動 |
ctrl + b |
画面1つ下に移動 |
gg |
ページ最上部に移動 |
G |
ページ最下部に移動 |
数字G |
入力した数字の行に移動 |
基本カーソル移動1→2→3となるにつれて動作が大きくなるように紹介しました。
特に3が分かりづらいと思いますので、少し解説します。
まずはshift + [
とshift + ]
はこんな感じです。
説明の通りですが文字列を固まりとしてすっ飛ばしてくれます。メチャ最高。
次はctrl + u
とctrl + d
これはupとdownと覚えましょう。非常に単純です。
次はctrl + f
とctrl + b
これはforwardとbackで、大きく前と後ろに進むイメージ。
基本カーソル移動 4
コマンド操作 | 動作説明 |
---|---|
H |
表示されている画面の一番上に移動 |
M |
表示されている画面の真ん中に移動 |
L |
表示されている画面の一番下に移動 |
それぞれHigh, Middle, Lowと覚えればいいですね!
文字入力操作
コマンド操作 | 動作説明 |
---|---|
i |
文字入力開始(挿入モード切替) |
a |
次の文字から入力開始 |
o |
改行して文字入力開始 |
r |
1文字だけ文字を置き換え(上書きに近い感じ) |
I |
行の頭から文字入力開始 |
A |
行の最後から文字入力開始 |
O |
上の行に行を挿入して文字入力開始 |
R |
置き換え(何文字でも) |
gi |
最後に文字入力された位置から入力開始 |
iはinsert、aはappendのa、oはopen line、rはreplaceという意味ですね。
giはわかりません(笑)
ここで一つ前のH,M,Lと同様に大文字キーが出てきました。
これは自分もやりながら途中で気づいたのですが、大文字は小文字の時の動作の逆の動き、もしくは大きな動きになっていることがほとんどなんですよね。
次は削除系の紹介ですが、その前にVimのオペレーターとモーションについて説明します。
オペレーターは最初に叩くキーで動作の種類を意味し、モーションは次に叩くキーで動作の範囲を意味します。つまり2回キーを叩くということです。 「どんな動きを(1回目)どのくらい(2回目)」 とイメージするといいでしょう。
オペレーターの種類
コマンド操作 | 動作説明 |
---|---|
c |
変更する(change) |
d |
消す(delete) |
y |
コピーする(yank) |
ではこれを意識して次の削除系コマンドをみていきましょう!
削除系操作
コマンド操作 | 動作説明 |
---|---|
ce |
単語の末尾まで変更(単語を削除した後に挿入モード) |
cc |
行全体を変更(行全体を削除後に挿入モード) |
dd |
行全体を削除 |
d$ |
カーソル位置から後ろの行を削除 |
dw |
次の単語まで削除(delete word) |
x |
カーソル下の文字削除 |
C |
カーソル位置から行の最後までを削除して文字入力開始 |
D |
上の行に行を挿入して文字入力開始 |
X |
最後に文字入力された位置から入力開始 |
選択&コピー&貼り付け操作
コマンド操作 | 動作説明 |
---|---|
v + h or l |
左右の範囲選択 |
v + k or j |
上下の範囲選択 |
shift + v |
行全体を選択 |
shift + g |
ページ先頭にカーソルがある状態で叩くと全選択 |
yy |
行全体をコピー(選択部分のコピーはyを1回だけでコピー可能) |
cc |
行全体を変更(行全体を削除後に挿入モード) |
dd |
行全体を削除 |
d$ |
カーソル位置から後ろの行を削除 |
Y |
行全体をコピー(yyと同じ動作) |
検索操作
コマンド操作 | 動作説明 |
---|---|
/ + 検索ワード |
カーソル位置から終わりに向かって検索 |
? + 検索ワード |
カーソル位置から始めに向かって検索 |
* |
カーソル位置にあるワードをページ内から検索次の出現箇所に移動 |
# |
カーソル位置にあるワードをページ内から検索して直前の出現箇所に移動 |
% |
対になる括弧やカンマ系を見つけて移動 |
こちら解説していきます。
まずNORMALモードで 「/」 を叩くと画面左下に入力できるようになります。
「?」 検索はこの逆方向に検索してくれます。
そして、個人的にメチャ便利だと思ってるのが「*」アスタリスク検索。
説明の通りですがこんな感じ。
「#」は逆方向に検索して直前の出現箇所に移動してくれます。
ちなみにn
で前に移動、N
で後ろに検索ワードを移動できます。
続いてこれも間違いが多い初心者には欠かせない取り消し操作。
この記事を書いてる時にも何回使用したことか(笑)
取り消し操作
コマンド操作 | 動作説明 |
---|---|
u |
直前操作取り消し |
U |
行全体の操作を取り消し |
ctrl + R |
取り消しの取り消し(つまりu で取り消した操作を復旧できる) |
最後に忘れてはならい保存操作です。
保存&終了系&他便利操作
コマンド操作 | 動作説明 |
---|---|
:w |
上書き保存 |
:q |
保存せずに終了 |
:wq |
ファイルの保存をしてから終了 |
:set number |
行頭に番号つける |
:set nonumber |
行頭番号解除 |
:set number
で行番号がわかれば「基本カーソル移動3タテ移動」で紹介した数字 + G
に使えますね。
終わりに
いかがでしたか?
この記事も結局Vimで全部ストレスなく書き終えてしまったので、慣れれば誰でも書けるようになります
毎日とは言わずとも、ちょこちょこ触って操作を忘れないようにしましょう。