Vimとは
最近、プログラミングを始めた方はもっぱらvscodeというテキストエディタを使用していると思います。
実はこのVimもテキストエディタの一種になります。
Vim(ヴィム。「ヴィアイエム」という読み方は誤り)は、vi から派生し、発展した高機能なテキストエディタである。(脚:https://ja.wikipedia.org/wiki/Vim)
ただし、vimはその他のテキストエディタとは違います。
vscodeはマウスを用いてカーソル移動などを行うGUIに対し、vimマウスを用いないターミナル操作(CLI)です。そうです、マウスで操作が出来ないのです!!!
初心者「めちゃくちゃ使いづらそうだしvscodeでいいやん笑」
まずはこう思うはずです。ターミナル操作?難しそうだし、いままでのテキストエディタでいいやん・・・ と。
とりあえずvimのメリットを見てみましょう。
メリット
・コマンドによる操作のため、キーボードから手を動かさず作業効率アップ!
・サーバー操作ができる!
・恐るべき拡張性
これ見て気になった方はもれなく
$ apt-get install vim
でインストールできます!おめでとうございます!!!
次は少しメリットを深堀りしていきます!
サーバー操作の説明は私が疎いため今回は割愛させていただきます
メリットその1- 全てコマンド操作
初心者「ハァハァ・・全てコマンド操作がッ・・・メリット・・・??」
めでたいことにvimは全てコマンド操作です。ターミナルをろくに触っていない初心者にとってはあの真っ黒い画面と”コマンド”という響きは恐怖でしかないです。
安心してください、vimは複雑なコマンドは用いません。
以下に簡単に紹介します。
コマンド(カーソル移動) | 内容 |
---|---|
h | カーソルを左に移動 |
j | カーソルを下に移動 |
k | カーソルを上に移動 |
l | カーソルを右に移動 |
w | 単語の先頭に進む |
b | 単語の先頭に戻る |
O | 先頭に移動 |
^ | インデントの先頭に移動 |
$ | 行末に移動 |
:set number / :任意のnum | 行番号を表示 / 任意のnumに移動 |
慣れには時間がかかりますが、カーソルはHJKL
で行います。
以下ファイル関係です
コマンド(ファイル関係) | 内容 |
---|---|
i | 編集モード |
a | 次の文字から編集モード |
esc | 編集モード終了 |
:w | 上書き保存 |
:q | ファイルを閉じる |
:wq | 保存して閉じる |
:q! | 保存せず閉じる |
基本的にi
やa
で編集モードに移行し、コードをイジイジしていきます。
編集モードに入らないと基本コードは触れません。
終わったらesc
で編集モードを終了します。
コマンド(編集関係) | 内容 |
---|---|
x | 一文字消す |
dd | 一行消す |
dw | 一単語消す |
* dd | *行消す |
y | 一文字コピー |
yy | 一行コピー |
* yy | *行コピー |
p(小文字) | カーソルの下行にペースト |
P(大文字) | カーソルの現在行にペースト |
. | リピート |
u | 一つ前の状態に戻る(undo) |
ctrl + r | undoの取り消し |
編集モードでも文字は消せますが、コピペなどはノーマルモードでコマンドを叩いたほうが簡単です。
今までマウスで行選択して消していたところがvimだとdd
で終わるので効率化は目に見えると思います。
他にもファイル内でのコマンド実行や置換などもありますが、全ては紹介しきれないため、日本語ドキュメントやチートシートなどがありますので参考にしてください!
実はvimには
・ノーマルモード
・ビジュアルモード
・インサートモード(編集モード)
・コマンドモード
と4つモードがありますが混乱を招くため細かく分類化せず、詳細は割愛しました。
メリットその2- 恐るべき拡張性
しばらくvimを触っているとふと
「あの機能他のエディタにはあるけどvimにはないな〜」
と思うことがあるはずです。例えばvscodeですと横にディレクトリ構造が見れるタブがありますよね。
欲しくないですか?あれ
vimにもあります
vimは良くも悪くも最低限の機能しかないため、つよつよの先人たちがプラグインを作ってくれてあります。
大体のプラグインがVim Plugというプラグインを導入するためのプラグインがあるので入れておきます。
例えばですが先程の話のプラグインはNERDTreeというプラグインで再現可能です!
大抵欲しいと思った機能はプラグインで公開されています。
vimという骨組みに欲しい機能を継ぎ足していって自分専用のエディタを作り上げることができるのです。
最後にnVimとは
nVimとはNeoVimの略称で、機能はほとんど変わりません。
ですが、API実装や非同期処理など細かいところがvimよりnVimより優れているらしいので、今から始める方はnVimでいいと思います。
詳しくは公式docとかでお願いします(他力本願)