対象読者
・Vimって何?っていう人
・Vimを使えるようになりたいけどどこから手をつけていいかわからない人
・とりあえず、Vimの基本だけおさえたい人
・普段Vimを使用することがあまりない人
以上のように、初心者向けなので、
Vimを普段から使っている人や、
Pluginをゴリゴリ入れているような人には、
参考になりません。
プラグインのゴリゴリ設定や、
マニアックなキーバインドや、
マクロのようなVimの応用的な機能とかは、
別記事で紹介しようと思います。
本記事では、これだけは覚えておきたい、
Vimのキーバインドを紹介しております。
Vimとは何か?
Vimとは、UNIX系OSで搭載されていることが多い、
viエディタを改良した(Vi IMprovedでVim)
テキストエディタです。
プログラミングをするには、コードを書かないと行かないので、
エディタが必須なのですが、Vimはそうしたエディタの一種です。
他に、VScode,nano,Emacsなど、色々なエディタがありますが、
その中でも、VimはほとんどのLinux環境にインストールされている、
汎用性の高さと、一度身につけてしまうと、他のエディタには戻れないぐらいの、
圧倒的な使いやすさが魅力のため、人気のエディタの一種です。
また、メインエディタとして使わなくとも、
サーバの中に入ってログインして作業することや、エンジニアなら
多かれ少なかれあると思うので、
Vimが最低限使用できないと困る場面も多いです。
そのため、基礎を習得することは、
必須教養といってもいいでしょう。
ターミナルのインストール
すでにお気に入りのターミナルがある人は
飛ばしてください。
ターミナルは、Vimを使う際の、
土台となるため、
かなりこだわってほしい部分ではあります。
なので、個人的には自分の好きなターミナルを使うのが最もいいのですが、
ここでは一応無難なターミナルをいくつか紹介しておきます。
Macの場合
正直Macなら、iTermを使えば、
解決です。
私も色々なターミナルを試しましたが、
やはり王道は強く、
個人的には、iTermを超えるターミナルは
まだ存在しない印象です。(あくまで個人的な感想です)
iTerm2
Windowsの場合
普段、あまりWindowsは使わないので、
正直私のほうが、おすすめターミナルを教えてもらいたいぐらいです。
一応、使っていた時期に、インストールして、
割と良かったターミナルとしては、
cmder
cygwin
WindowsとVimの相性はあまり良くなく、
レジスタやクリップボード関係で結構苦労した記憶があります。
Vimの記事を書いておいてあれですが、
WindowsならベストエディタはやはりVScodeのような気がしています。
(あくまで個人の感想です。)
それでも、Vimの基本を学ぶことは必須だとは思いますが。
Linuxの場合
LinuxはiTerm2が使えないこと以外は、
特に問題がなく、結構幅広いターミナルが使える印象です。
もちろん、VimとLinuxの相性は抜群なので、
その点でも問題はないでしょう。
正直Linuxを普段使いしている人は、
自分のお気に入りターミナルを見つけていると思いますが、
念のため紹介します。
kitty
alacritty
terminator
vim/neovimのインストール
さて、ターミナルがインストールできたら、
早速ターミナルを開いて、
vimをインストールしましょう。
sudo apt update
sudo apt install vim
windowsのwslとLinuxのdebian系なら
このコマンドでインストールできます。
macなら、
brew install vim
でインストールできます。
macとかLinuxの場合、最初からvimがインストールされていることが
ほとんどだとは思いますが。
vim
でvimが起動すれば
正常にインストールされています。
iキー
さて、上記のようにvimが開いたら、
iキー押してみましょう。
左下に、INSERTという文字が表示されているはずです。
これはiキーを押すことで
INSERTモードになったからです。
Vimにはいくつかのモードがあるのですが、
最初は、このINSERTモードとノーマルモードさえ覚えておけば大丈夫です。
Vimを起動した時点では、
ノーマルモードになっています。
INSERTモードになって、
キーボード色々入力すると、
普通のエディタのように文字を入力することができます。
(その名の通りINSERT(挿入)モードですね。)
実はiキー以外にもINSERTモードに入ることができるキーはあるのですが、
覚えることが増えるので、まずはiキーでINSERTモードに入ると
覚えておけば大丈夫です。
w/wq!/q/q!キー
さて、INSERTモードで編集が終わったら、
保存をしたいですよね。
ただ、INSERTモードのままだと、
保存ができないので、一旦ノーマルモードに戻る必要があります。
ノーマルモードに戻るには、escキーを押します
そして、
:w
で保存ができます。
一番下に:wと表示されています。
ノーマルモードで:と押すと、
保存などのコマンドを実行することができます。
:から始まっているキーバインドは、
何らかのコマンドと思っていただいて大丈夫です。
保存してvimを終了したいときは、
:wq(またはwq!など)
保存せずにvimを終了したいときは、
:q
保存せずに強制終了したいときは、
:q!
uキー
こちらもノーマルモードでのキーで、
普段のCtrl + zと同じような効果が得られます。
すなわち、直前の編集や変更を取り消してもとに戻すといった
感じです。
間違って、編集してしまったときに、
大変重宝するコマンドです。
escキー/jjキー(カスタムキーバインド)
すでに紹介しましたが、
escキーでノーマルモードに戻ることができます。
ただ、escキーはやや押しづらいので、
カスタムキーバインドでjjなどにすることが多い気がします。
カスタマイズのやり方としては、
vimの設定ファイルが、
~/.vimrcなので、
このファイルを作成して、
inoremap <silent> jj <ESC>
ターミナルをsourceコマンドなどで再読み込みしたら、
jjでescと同様の動作にすることができます。
これは好みなので、escのままの人もいます。
お好きなほうを選択してください。
j/k/l/hキー
さて、vimの移動ですが、
ノーマルモードで、j/k/l/hキーで
基本的な移動ができます。
jキーは、一行下へ(↓と同様)
kキーは、一行上へ(↑と同様)
lキーは、一文字右へ(→と同様)
hキーは、一文字左へ(←と同様)
/キーと移動方法
ノーマルモードで、
/を押すと、検索を始めることができます。
検索して複数ヒットした際は、
nキーを押せば、次のマッチした候補に移動することができます。
Nキーを押せば、前のマッチした候補に移動しまう。
そのため、/での検索は、ちょっとした移動コマンドとしても
使えます。
例えば、4000行ぐらいあるファイルでも、
console.logの行に移動したければ、
間に何行あろうと、一瞬で移動することができます。
移動系については、他にもたくさんありますが、
検索による移動は使う頻度が多いので、
紹介しました。
Ctrl + f / Ctrl + b
これらはスクロール系のコマンドで、
のノーマルモードで、
Ctrl + fを押すと、
1ページ下にスクロールします。
対して、Ctrl + bを押すと、
1ページ上にスクロールします。
ggキー/ Gキー
こちらも移動系で、
ggキーで、ファイルの先頭に、
Gキーで、ファイルの最終行に移動します。
ここでは紹介しなかったがよく使うキー一覧
- p(ペースト)
- yy(ヤンク)
- dd(削除/ヤンク)
- o/Oインサート
- a/Aインサート
- Ctrl + r(取り消しの取り消し)
- x(文字の削除)
- r(置換)
- :term(ターミナルモード)
これらについては、また別の記事で。