前置き
エディタの中でも有名なものはいくつかありますが、
その中でも特に有名なのが「Emacs」と「Vi」ですね。
この2つについては宗教戦争的なものまであるようです。
でまぁ有名な人とかも使ってますし、これがあれば他のエディタはいらないとかとか、
いろいろと言われているので、僕も興味が湧き、勉強してみようかなと。
いきなり両方は無理なので、まずはどちらかにしようと思い調べてみたところ、
- Emacs
- 統合環境みたいなものでこれ一つでなんでも出来る。
- Vi
- エディタに特化したソフトでエディタのみの機能としてならEmacsより優秀?
異論はいろいろとあるかもしれませんがたぶんこんな感じで、
いろいろとやるつもりはないし、サーバーの勉強もしていきたかったので、
Linuxなんかを扱う上でViは重要と言われたのでViを勉強することにしました。
勉強する順番的にも両ソフトを勉強するつもりなら
Viを先に勉強するのがおすすめって記事もみかけましたしね。
ある程度慣れて余裕が出来たらEmacsも使ってみようかなと思います。
というわけで仕事の合間に少しずつ勉強していたViの派生型である
「Vim」のチュートリアルが終わったのでまとめたいと思います。
あ、他にも操作方法はあるみたいですが、チュートリアルの内容のみとなっています。
予備知識
Viには他エディタと違いモードという概念があり、主に以下のものがあります。
一応、これはチュートリアルの範囲で僕が知ってるもののみの説明となります。
- ノーマルモード
- 起動時の状態でカーソルの移動や文字編集、他モードへの移行など基本となるモードです。
- 挿入モード
- 文字を挿入して入力するモード(他エディタの通常の状態)
- 置換モード
- 文字を置換して入力するモード(カーソルの下の文字は削除されます。)
- 選択モード
- 範囲選択するモードです。
- コマンドモード:vim独自のコマンドを実行するモードで、
- で移行します。((以降に登場する:から始ま
る操作は全てコマンドモードで実行している事になります。))
カーソル移動
gg |
先頭行へ |
G |
最終行へ |
numG |
num行へ |
Ctrl+G |
現在の行やファイル情報を表示 |
補足として、これ以降もそうですがGなど大文字はShiftを押しながらという事です。
ただし、Ctrlとセットになっているものはわかりやすくする為に大文字にしてあるだけですので、
Shift+Ctrlというわけではありませんのでご注意下さい。
挿入モード
i |
カーソルの前から挿入開始 |
I |
カーソルのある行頭から挿入開始 |
a |
カーソルの後ろから挿入開始 |
A |
カーソルのある行末から挿入開始 |
o |
下に行を追加して挿入開始 |
O |
上に行を追加して挿入開始 |
削除系
x |
1文字削除 |
dd |
1行削除 |
dw |
1単語削除(空白含む) |
de |
1単語削除(空白含まない) |
D |
行末まで削除 |
それぞれの前に数字で回数を指定可能で指定した回数だけ繰り返す。
例えば、3ddの場合は3行削除する。
コピー&ペースト系
y |
コピー(選択モードで選択した状態で) |
yy |
1行コピー |
p |
直前にコピーまたは削除したものを貼り付け |
削除系で削除したものは実際は他エディタなどでのカットと同じで、
記憶されているのでpのペーストで貼り付ける事が可能です。
検索(検索置換)系
:s/検索文字/置換文字 |
行内で最初に見つかった文字を置換 |
:s/検索文字/置換文字/g |
行内の検索文字を全て置換 |
:num1,num2s/検索文字/置換文字/g |
num1行からnum2行の検索文字を全て置換 |
:%s/検索文字/置換文字/g |
全ての検索文字を置換 |
:%s/検索文字/置換文字/gc |
全ての検索文字を確認しながら置換 |
検索置換をさらにまとめると、
:範囲s/検索文字/置換文字/オプション
- 範囲
- %で全体、num1,num2でnum1行からnum2行までとなりカーソルのある行のみ場合は省略
- オプション
- g で対象全てを一括置換、gc で対象全てを確認しながら置換
となります。
取り消し系
u |
直前の操作を取り消し |
U |
その行の操作を全て取り消し |
ctrl+R |
取り消しを取り消す(つまり元に戻す) |
保存・終了系
:w |
上書き保存 |
:w! |
強制上書き保存 |
:w ファイル名 |
ファイル名で保存 |
選択モードで選択した状態で : を押すと :'<,'> と表示されるので、
そのまま :'<,'>w ファイル名 と入力すると、選択した範囲の行が指定したファイル名で保存される。
コマンドモード
:!外部コマンド |
シェルコマンドやDOSコマンドを実行します。 |
:r ファイル名 |
ファイルの内容を下に追加する |
:r!外部コマンド |
外部コマンドの実行結果を下に追加する |
コマンドモード中に Ctrl+D を入力するとVimコマンドの保管候補が表示されTABで選択できます。
もしかしたら抜けてるかもしれませんが、大体チュートリアルの範囲で使うものはこれぐらいだと思います。
チュートリアルの範囲外の事については調べて、ある程度理解できたらまとめようかなと。