CLIツール

ターミナルインストールから始めるVim/Neovim8つの基本キーバインド

reisuta

Webエンジニア | 20代中盤 | 大学時代はGmailすら知らないIT音痴でプログラミングとは無縁の生活を送る → 独学でプログラミングを学ぶ → Web系受託開発企業にエンジニアとして就職 → Web系自社サービス企業に転職 | 実務未経験の頃からVimを愛好しており、仕事でもプライベートでも開発はVimとTmuxを使っているので、VSCodeに疎いのが最近の悩み。何だかんだでやっぱりRubyが好き。

本記事では、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)
テキストエディタです。

Screenshot 2022-12-16 at 7.52.55.png

プログラミングをするには、コードを書かないと行かないので、
エディタが必須なのですが、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の比較
参考VimとNeovimの違いについて init.vimサンプル公開

本記事では、VimとNeovimの違いについて、解説します。 VimとNeovimの違いについては、普段頻繁にVimなどを使う方でなければ、正直、あまり気にしなくてもいいかなと思います。 ただ、Vim ...

続きを見る

ターミナルのインストール

それでは、早速本題に入りましょう。

すでにお気に入りのターミナルがある人は
飛ばして頂いて大丈夫です。

デフォルトのターミナルをなんとなく使っていた方は、
ぜひとも参考にしてくださると役に立つかもしれません。

「ターミナルとVimってなんの関係があるの?」って
思われた方もいるかもしれませんが、

ターミナルは、Vimを使う際の土台となるため、
かなりこだわってほしい部分ではあります。

なので、個人的には自分の好きなターミナルを使うのが最もいいのですが、
ここでは無難なターミナルをいくつか紹介しておきます。

Macの場合

Macなら、
iTerm2を使えば解決です。

何だかんだ言って、
iTerm2を超えるターミナルは、
少なくとも私観点では存在しません。
(パフォーマンスなどの部類では、
alacrittyなどのRust製のターミナルのほうがいいかもしれません)

色々なターミナルを試しましたが、
やはり王道は強いですね。

下記では、iTerm2しか紹介してませんが、
Macなら、Linuxでおすすめしたようなターミナルも使用できるので、
iTerm2が嫌ならそちらでも全然ありです。

iTerm2

https://iterm2.com/

iTerm2のデメリットは、
Macでしか使えないことです。

これ本当になんとかならないんですかね...

それと、デメリットというより、
懸念点ですが、技術スタックが、
Objective-Cと、レガシーなので、
パフォーマンスは、そこまで良いわけではないのと、
今後のメンテナンスなどがやや心配なのは否めません。

https://github.com/gnachman/iTerm2

iTerm3に進化する際に、
alacrittyみたいにRust製に進化したら、
非の打ち所がないターミナルになるでしょう。
(baseがObjective-C なので難しいでしょうが。現実的な路線でSwiftリプレイスでしょうか。)

Windowsの場合

私は普段、あまりWindowsは使わないので、
正直私のほうが、おすすめターミナルを教えてもらいたいぐらいです。(泣)

一応、使っていた時期に、インストールして、
割と良かったターミナルをご紹介します。

cmder

https://cmder.app/

こちらが一番iTerm2の操作感に近かったです。

iTerm2の強みである、Hotkey設定も、
cmderは対応しています。

ただ、cmderは、ややカクツキが気になったりしたので、
そのあたりは、個人的には惜しいなという印象です。

cygwin

https://www.cygwin.com/

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

https://alacritty.org/

既に言及しましたが、
件のRust製のパフォーマンス重視のターミナルです。

日本語のインライン入力ができないとの報告があったので、
(現在は解消されている?)少々癖はありそうです。

設定ファイルもkittyのようにできますが、
総じて、やや玄人向けですかね。

iTerm2とかじゃ物たんねーよっていう人向けですね。

terminator

https://gnome-terminator.org/

これは、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が起動すれば
正常にインストールされています。

Screenshot 2022-12-16 at 7.52.55.png

さっきも触れましたが、改めてVimとNeovimって何が違うねん!って
思った人は、下記の記事で解説しているので、こちらを御覧ください。

VimとNeovimの比較
参考VimとNeovimの違いについて init.vimサンプル公開

本記事では、VimとNeovimの違いについて、解説します。 VimとNeovimの違いについては、普段頻繁にVimなどを使う方でなければ、正直、あまり気にしなくてもいいかなと思います。 ただ、Vim ...

続きを見る

Vim/Neovimの操作方法

iキー(インサート)

さて、上記のようにvimが開いたら、
iキーを押してみましょう。

Screenshot 2022-12-16 at 8.23.15.png

左下に、INSERTという文字が表示されているはずです。

これはiキーを押すことで
INSERTモードになったからです。

Vimにはいくつかのモードがあるのですが、
最初は、このINSERTモードとノーマルモードさえ覚えておけば大丈夫です。

Vimを起動した時点では、
ノーマルモードになっています。

INSERTモードになって、
キーボードを色々入力すると、
普通のエディタのように文字を入力することができます。
(その名の通りINSERT(挿入)モードですね。)

実はiキー以外にもINSERTモードに入ることができるキーはあるのですが、
覚えることが増えるので、まずはiキーでINSERTモードに入ると
覚えておけば大丈夫です。

w/wq!/q/q!キー(保存と終了)

さて、INSERTモードで編集が終わったら、
保存をしたいですよね。

ただ、INSERTモードのままだと、
保存ができないので、一旦ノーマルモードに戻る必要があります。

ノーマルモードに戻るには、escキーを押します

そして、

:w

で保存ができます。

Screenshot 2022-12-16 at 8.31.51.png

一番下に: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キーは、一文字左へ(←と同様)

という感じです。

これらについては、
心配しなくても使っているうちに、
指に染み付いていきます。

/キーと移動方法(検索)

ノーマルモードで、
/を押すと、検索を始めることができます。

テストという文字を検索した例
Screenshot 2022-12-16 at 8.52.08.png

検索して複数ヒットした際は、
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コマンド基礎
あわせて読みたいLinuxコマンド基礎編 これだけは知っておきたい基本コマンド11選

コマンドとは何か? コマンドとは、コンピュータに対する命令のことです。ブラウザのアイコンとかをクリックすると、ブラウザが起動しますが、あれも内部的にはコンピュータに対してブラウザを起動させる命令となっ ...

続きを見る

あわせて読みたい【Mac初期設定完全版】Webエンジニアが最初に導入するアプリや設定を公開

Macbookの初期設定 Macbookを買ったり、初期化した際、デフォルトのままだと何かと使いにくいと思ったことは無いでしょうか? 下にうざいDockはあるし、カーソルはめっさ遅いし、変なアプリはた ...

続きを見る

  • この記事を書いた人
  • 最新記事

reisuta

Webエンジニア | 20代中盤 | 大学時代はGmailすら知らないIT音痴でプログラミングとは無縁の生活を送る → 独学でプログラミングを学ぶ → Web系受託開発企業にエンジニアとして就職 → Web系自社サービス企業に転職 | 実務未経験の頃からVimを愛好しており、仕事でもプライベートでも開発はVimとTmuxを使っているので、VSCodeに疎いのが最近の悩み。何だかんだでやっぱりRubyが好き。

おすすめ記事はこちら

Vim/Neovimプラグイン 1

プラグインをどれだけ入れるかは、その人の思想なども関係するので、一概にこれがいいというのはないかもしれません。 プラグインを全く入れない人もいれば、100個以上入れる人もいます。 ただそれでも、これだ ...

VimとNeovimの比較 2

本記事では、VimとNeovimの違いについて、解説します。 VimとNeovimの違いについては、普段頻繁にVimなどを使う方でなければ、正直、あまり気にしなくてもいいかなと思います。 ただ、Vim ...

Ruby変数やすべてがオブジェクトについて 3

本記事は、Rubyの基礎文法である、変数や真偽値、論理演算子に触れると同時に、「すべてがオブジェクト」というRubyの特徴的な思想についても解説します。 この思想は、Rubyの文法の根幹になっているの ...

4

エンジニアにおすすめの技術書 書籍学習は、エンジニアの嗜みみたいなところがありますが、 良書というものは、意外とそこまで多くもありません。 そこで本記事では「技術書マニアの筆者が厳選した技術書20選」 ...

5

エンジニアになるには? プログラミングは、専門性が高く自分一人で勉強するのが大変に感じることも多いですよね。 そこで本記事では「おすすめのプログラミングスクール5選」を特徴と、現役エンジニア目線で優れ ...

-CLIツール