こんにちは、ふじみやです。
突然ですが、皆さんはエディタの「vi」とか「vim」をご存じでしょうか?WindowsやMacを利用している方にとっては「何それ?」という感じでしょうが、Linuxを利用している人は一度は使ったことがあるのではないでしょうか。
本によって「vi」だったり「vim」だったり、実際にコマンドを入力してみても同じような機能を持っているように見えるこれら2つのエディタについて、今回、両者に違いがあるのかを調べてみましたのでその結果をまとめていきます。
また、それだけだと味気ないので、私自身の備忘録的に「vim」にてファイルを編集する際に役立つコマンドについても残しておきたいと思います。
「vi」と「vim」の違い
ファイルを編集する際に vi xxx.sh
だったり vim xxx.sh
といったコマンドを入力をしたことがある方も多いかと思います。編集画面も操作感も同じように見えますが、コマンドが違うということは何かしら機能も違うはず、ということで調べてみました。
viエディタとは
UNIX系のOSに搭載されるテキストエディタで、「Visual Interface」や「Visual Editor」の略とされているようです。
開発されたのは1976年とのことで、かなりの歴史があります。
Vimエディタとは
それではVimはどうでしょうか。
こちらはviエディタから派生してできたもので、「Vi Improved」の名前が指し示す通りviエディタよりも高機能なエディタです。
両者の違いは
Vimはviの機能を全て含んでいるだけでなく、カスタマイズ性に優れているほか、以下のような機能を有しています。
- Undo(操作の取消)を複数回行うことが可能
- シンタックスハイライト(構文強調)機能がある
- UNIX系OSだけでなく、WindowsやMacでも利用可能
どちらを使うべき?
上記で見た通り、Vimはviの上位互換と呼んでも差し支え無さそうですので、Vimを使えば問題はなさそうです。とすると「vi」コマンドは避けるべきなの?と思われるのではないでしょうか。
皆さんの環境によっては異なる可能性もありますが、「vi」は「vim」のエイリアス(別名)として指定されていたり、which vi
やwhich vim
でリンクをたどると同一ファイルを示すことが多く、その場合にはコマンド入力時にはどちらを選んでも問題ありません。
それでは、「vi」と「vim」のリンクをたどって確認してみましょう。
viの参照元
$ which vi
/usr/bin/vi
$ ls -l /usr/bin/vi
lrwxrwxrwx 1 root root 20 8月 8 11:09 /usr/bin/vi -> /etc/alternatives/vi
$ ls -l /etc/alternatives/vi
lrwxrwxrwx 1 root root 18 8月 8 11:10 /etc/alternatives/vi -> /usr/bin/vim.basic
/usr/bin/vim.basic
が大元であることがわかりました。
vimの参照元
$ which vim
/usr/bin/vim
$ ls -l /usr/bin/vim
lrwxrwxrwx 1 root root 21 8月 8 11:10 /usr/bin/vim -> /etc/alternatives/vim
$ ls -l /etc/alternatives/vim
lrwxrwxrwx 1 root root 18 8月 8 11:10 /etc/alternatives/vim -> /usr/bin/vim.basic
こちらもviと同様に/usr/bin/vim.basic
が大元であり、vi
とvim
は同じものであることが分かりました。
Vimのショートカットキー
vi
とvim
について、コマンド上では同一のものであると分かりましたので、Vimで使えるショートカットキーについてまとめていきます。なお、Vimではコピーのことを「ヤンク」というみたいですので、こちらの表でもそのように表現しています。
コマンド | コマンド | コマンド |
---|---|---|
h - 左に移動 | Ctrl + e - 画面を下に 1 行スクロール | :w - 終了せずにファイルに保存 |
j - 下に移動 | Ctrl + y - 画面を上に 1 行スクロール | :wq or ZZ - 保存して終了 |
k - 上に移動 | Ctrl + b - 画面全体分だけ上に移動 | :q - 終了 |
l - 右に移動 | Ctrl + f - 画面全体分だけ下に移動 | :q! or ZQ - 未保存の変更を破棄して終了 |
gj - 表示行で1行下に移動 | Ctrl + d - 画面半分だけ下に移動 | / - 検索 |
gk - 表示行で1行上に移動 | Ctrl + u - 画面半分だけ上に移動 | yy - 行をヤンク |
H - 画面上部に移動 | i - カーソル位置で挿入モード | yw - 次の単語の始まりまでをヤンク |
M - 画面中央に移動 | I - その行頭で挿入モード | yiw - その単語全体をヤンク |
L - 画面下部に移動 | a - カーソルの次の位置で挿入モード | p - カーソル位置の 1 つ後ろにペースト |
w - 次の単語の先頭に移動 | A - その行末で挿入モード | P - カーソル位置の手前にペースト |
e - 次の単語の末尾に移動 | o - 下に改行してそこで挿入モード | dd - 行をカット |
b - 前の単語の先頭に移動 | O - 上に改行してそこで挿入モード | dw - 次の単語の始まりまでをカット |
ge - 前の単語の末尾に移動 | ea - その単語の末尾で挿入モード | diw - その単語全体を消去 |
0 - 行頭に移動 | Esc - 挿入モードを終了 | D - 行末まで消去 |
$ - 行末に移動 | u - 取り消し | x - 文字を 1 つ消去 |
gg - ドキュメントの先頭行に移動 | U - 最後に変更した行を取り消し | |
G - ドキュメントの末尾行に移動 | Ctrl + r - やり直し | |
} - 次の段落に移動 | . - 最後に使ったコマンドを繰り返し | |
{ - 前の段落に移動 |
まとめ
基本的にはvimを使えば何の問題もなく、またシステム的にもviはvimと同一であると設定していることがあると確認できました。
CUIベースのエディタということもありキーボードの操作に特化しており、コマンドやショートカットキーを覚えればマウスを使うこともなくなり、編集を高速化させることもできそうですね。
私も頑張って覚えていきたいと思いますので、みなさんも一緒に覚えていきましょう。
それではまた。
コメント