エディタの vi と vim って何が違うの?【Linux】

当ページのリンクには広告が含まれています。
sütterlin, handwriting, typography

こんにちは、ふじみやです。

突然ですが、皆さんはエディタの「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 viwhich 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が大元であり、vivimは同じものであることが分かりました。

Vimのショートカットキー

vivimについて、コマンド上では同一のものであると分かりましたので、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ベースのエディタということもありキーボードの操作に特化しており、コマンドやショートカットキーを覚えればマウスを使うこともなくなり、編集を高速化させることもできそうですね。

私も頑張って覚えていきたいと思いますので、みなさんも一緒に覚えていきましょう。

それではまた。

sütterlin, handwriting, typography

この記事が気に入ったら
フォローしてね!

コメント

コメントする

目次