本記事では、0からVimやNeovimについて、
解説していきます。
Vimって何?っていう人や、
ターミナルもほとんど使っていないという人でも、
最低限これだけは知っておきたいVimのキーバインドを本記事でマスターできます。
具体的な対象読者としては、
対象読者
- Vimって何?っていう人
- Vimを使えるようになりたいけどどこから手をつけていいかわからない人
- とりあえず、Vimの基本だけおさえたい人
- 普段Vimを使用することがあまりない人
以上のように、初心者向けです。
Vimを普段から使っている人や、
Pluginをゴリゴリ入れているような人には、
参考になりません。
プラグインのゴリゴリ設定や、
マニアックなキーバインドや、
マクロのようなVimの応用的な機能とかは、
こちらの記事で紹介しています。
やや中級者向けの記事として、
レジスタについての完全解説の記事がありますので、
Vimをある程度使っている方は、こちらのような記事を見ていただけると嬉しいです。
また、Vim/Neovim超入門シリーズについては、
下記のようにYoutubeでも動画として公開しています。
実際にどのように操作しているのか動画で確認したい人は、
こちらも御覧ください。
それでは、本記事でこれだけは覚えておきたい、 Vimのキーバインドを紹介します。
Vimとは何か?
Vimとは、UNIX系OSで搭載されていることが多い、
viエディタを改良した(Vi IMprovedでVim)
テキストエディタです。
プログラミングをするには、コードを書かないと行かないので、
エディタが必須なのですが、Vimはそうしたエディタの一種です。
他のエディター代表例としては、VScode,nano,Emacsなど、色々なエディタがあります。
その中でも、VimはほとんどのLinux環境にインストールされている、
汎用性の高さと、一度身につけてしまうと、他のエディタには戻れないぐらいの、
圧倒的な使いやすさが魅力のため、人気のエディタの一種です。
また、メインエディタとして使わなくとも、
サーバの中に入ってログインして作業することや、
エンジニアなら多かれ少なかれあると思うので、
Vimが最低限使用できないと困る場面も多いです。
また、人によってはVimをある程度使えるということを
エンジニアの嗜みと捉えているひともいます。
プロのエンジニアとして従事している以上、
Vimが全く使えないというのは、正直ちょっと恥ずかしいかもしれません。
そのため、基礎を習得することは、
もはやエンジニアの必須教養といってもいいでしょう。
Vimの学習コスト
とは言いつつも、
Vimはエディターの中では、
比較的学習コストが高いことで有名です。
(似たようなエディターとしては、Emacsで、
頻繁にVim vs Emacsの宗教戦争が起きている)
Vimの学習コストの高さから、
Vimをメインエディタとして使用している人はまだまだ少ない印象ですが、
Vimは一度身につけてしまえば、ずっと便利に使えます。
なので、学習コストの高さで、
毛嫌いしてしまうのは、個人的にはとてももったいないと思います。
本記事や私のYoutube動画でも、
できるだけわかりやすくVimについて、
解説しているので、ぜひとも参考にしてください。
ちなみに、最近では、Vimに関連するものとして、
Neovimというものもあります。
こちらの方が、よりリッチで、わずかに起動速度が速いなどという
メリットもあるので、こちらも強くおすすめできます。
ちなみに、私もメインではNeovimを使っています。
細かいVimとNeovimの違いについては、
下記の記事を参考にしてください。
-
参考VimとNeovimの違いについて init.vimサンプル公開
本記事では、VimとNeovimの違いについて、解説します。 VimとNeovimの違いについては、普段頻繁にVimなどを使う方でなければ、正直、あまり気にしなくてもいいかなと思います。 ただ、Vim ...
続きを見る
ターミナルのインストール
それでは、早速本題に入りましょう。
すでにお気に入りのターミナルがある人は
飛ばして頂いて大丈夫です。
デフォルトのターミナルをなんとなく使っていた方は、
ぜひとも参考にしてくださると役に立つかもしれません。
「ターミナルとVimってなんの関係があるの?」って
思われた方もいるかもしれませんが、
ターミナルは、Vimを使う際の土台となるため、
かなりこだわってほしい部分ではあります。
なので、個人的には自分の好きなターミナルを使うのが最もいいのですが、
ここでは無難なターミナルをいくつか紹介しておきます。
Macの場合
Macなら、
iTerm2を使えば解決です。
何だかんだ言って、
iTerm2を超えるターミナルは、
少なくとも私観点では存在しません。
(パフォーマンスなどの部類では、
alacrittyなどのRust製のターミナルのほうがいいかもしれません)
色々なターミナルを試しましたが、
やはり王道は強いですね。
下記では、iTerm2しか紹介してませんが、
Macなら、Linuxでおすすめしたようなターミナルも使用できるので、
iTerm2が嫌ならそちらでも全然ありです。
iTerm2
iTerm2のデメリットは、
Macでしか使えないことです。
これ本当になんとかならないんですかね...
それと、デメリットというより、
懸念点ですが、技術スタックが、
Objective-Cと、レガシーなので、
パフォーマンスは、そこまで良いわけではないのと、
今後のメンテナンスなどがやや心配なのは否めません。
https://github.com/gnachman/iTerm2
iTerm3に進化する際に、
alacrittyみたいにRust製に進化したら、
非の打ち所がないターミナルになるでしょう。
(baseがObjective-C なので難しいでしょうが。現実的な路線でSwiftリプレイスでしょうか。)
Windowsの場合
私は普段、あまりWindowsは使わないので、
正直私のほうが、おすすめターミナルを教えてもらいたいぐらいです。(泣)
一応、使っていた時期に、インストールして、
割と良かったターミナルをご紹介します。
cmder
こちらが一番iTerm2の操作感に近かったです。
iTerm2の強みである、Hotkey設定も、
cmderは対応しています。
ただ、cmderは、ややカクツキが気になったりしたので、
そのあたりは、個人的には惜しいなという印象です。
cygwin
WindowsとVimの相性はあまり良くなく、
レジスタやクリップボード関係で結構苦労した記憶があります。
Vimの記事を書いておいてあれですが、
WindowsならベストエディタはやはりVScodeのような気がしています。
(あくまで個人の感想です。)
それでも、Vimの基本を学ぶことは必須だとは思いますが。
そんな中、cygwinは、一番サクサク動いたターミナルという印象でした。
Hotkeyのような設定はできませんが、普段使うターミナルとしては、
一番安心して使えたかなと思います。
windowsターミナル
今だったら、これが一番オススメです。
なんと、デフォルトでインストールされています(Windowsすげえ)
ただ、細かい部分がiTerm2には追いついていない印象で、
Hotkey設定もできるにはできるのですが、
「いやそうじゃないんだよな」というふうに呼び出されたり、
中途半端に画面にでてきたりするので、個人的には、
惜しいという印象です。パフォーマンスは普通といったところでしょうか。
Linuxの場合
LinuxはiTerm2が使えないこと以外は、
特に問題がなく、結構幅広いターミナルが使える印象です。
なので、一番ベストターミナルを模索しやすいOSな気がします。
もちろん、VimとLinuxの相性は抜群なので、
その点でも問題はないでしょう。
正直Linuxを普段使いしている人は、
自分のお気に入りターミナルを見つけていると思いますが、
念のため紹介します。
kitty
https://sw.kovidgoyal.net/kitty/binary/
こちらは、Macでも使えます。
総合的に優秀です。
設定ファイルもカスタマイズしやすくなっています。
ただ、Hotkey設定ができないのが残念。
あと、もしWindowsに対応していたら、
Windowsではこれを使っていた。
alacritty
既に言及しましたが、
件のRust製のパフォーマンス重視のターミナルです。
日本語のインライン入力ができないとの報告があったので、
(現在は解消されている?)少々癖はありそうです。
設定ファイルもkittyのようにできますが、
総じて、やや玄人向けですかね。
iTerm2とかじゃ物たんねーよっていう人向けですね。
terminator
これは、Linuxだと結構無難なターミナルですね。
Hotkey設定もできます。
ただ、ややカクツキが気になるので、
メインターミナルにするにはやや不安という感じですね。
ただ、有名なターミナルではあります。
Vim/Neovimのインストール
さて、ターミナルがインストールできたら、
早速ターミナルを開いて、
vimをインストールしましょう。
sudo apt update
sudo apt install vim (or neovim)
windowsのwslとLinuxのdebian系なら
このコマンドでインストールできます。
Macなら、
brew install vim (or neovim)
でインストールできます。(Homebrewのインストールが必要です)
macとかLinuxの場合、最初からvimがインストールされていることが
ほとんどだとは思いますが、念のため。
起動方法としては、
vim (or nvim)
でvimが起動すれば
正常にインストールされています。
さっきも触れましたが、改めてVimとNeovimって何が違うねん!って
思った人は、下記の記事で解説しているので、こちらを御覧ください。
-
参考VimとNeovimの違いについて init.vimサンプル公開
本記事では、VimとNeovimの違いについて、解説します。 VimとNeovimの違いについては、普段頻繁にVimなどを使う方でなければ、正直、あまり気にしなくてもいいかなと思います。 ただ、Vim ...
続きを見る
Vim/Neovimの操作方法
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のままの人もいます。
お好きなほうを選択してください。
inoremapってなんやねん?って感じだと思いますが、
こちらは、下記の記事で詳しく解説しているので、
気になる人はそちらを御覧ください。
-
参考【Vim/Neovimキーマップ】map/noremapやLeaderキー
VimやNeovimを使っていくにあたって、どのようなキーマップを設定するかは、その人の個性であり、答えのない探求です。 それぐらい、キーマップの設定は、Vimを使いこなす上で必須の設定と言えます。し ...
続きを見る
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(ターミナルモード)
これらについては、別の記事で詳しく取り上げていますので、
そちらもご覧いただけますと幸いです。
-
あわせて読みたい【Ruby on Rails7環境構築】Dockerでrails newする
rails newとは? rails newとは、文字通り、新しいrailsアプリケーションを作成するコマンドです。 rails new | Railsドキュメント (railsdoc.com) 本記 ...
続きを見る
-
あわせて読みたい【Vue3/Docker環境構築】Vue.js概要と起動の仕組み
Vue3がリリースされ、Vue.jsは大きく変わりました。 本記事では、Vue.jsの中でも、この大きく変化したVu3に焦点を当てて解説します。 環境構築として、Dockerを使い、TypeScrip ...
続きを見る
-
あわせて読みたいLinuxコマンド基礎編 これだけは知っておきたい基本コマンド11選
コマンドとは何か? コマンドとは、コンピュータに対する命令のことです。ブラウザのアイコンとかをクリックすると、ブラウザが起動しますが、あれも内部的にはコンピュータに対してブラウザを起動させる命令となっ ...
続きを見る
-
あわせて読みたい【Mac初期設定完全版】Webエンジニアが最初に導入するアプリや設定を公開
Macbookの初期設定 Macbookを買ったり、初期化した際、デフォルトのままだと何かと使いにくいと思ったことは無いでしょうか? 下にうざいDockはあるし、カーソルはめっさ遅いし、変なアプリはた ...
続きを見る