TL;DR
- 東京高専の情報工学科出身だよ
- 高専プロコンに出てたよ
- Neovimはいいぞ
基本的な情報
東京高専の情報工学科より参りました,室 雄太という者です.
学生時代にはNeovimをカスタムしたり,高専プロコンに出たりしていました.
卒業研究では画像処理系のものをやっていましたが,生化学が混ざってきて結構説明が長くなるので割愛します.大したことはやってないです.
高専プロコンでは,5年間ずっと課題部門の応援メンバーとして,書類を書いたりFlutterでアプリを作ったりRustで画像処理のAPIを作ったりしていました.
2023年度の福井大会では現地にいたので,もしかしたら目撃した人もいるかも知れません.ミラーレス一眼を持って会場を練り歩いていました.
以降は,私が学生時代にどハマリしたNeovimという某について語っていきます.
Neovim is 何
Neovimとは,一言で説明するとエディタの一種です.エディタなので,ソースコードをはじめとしたテキストファイルを編集することができます.やろうと思えばバイナリ編集もできます.
"Neo"+"Vim"という名の通り,Vimというエディタの派生として開発されました.
これを愛用する人をNeovimmerと呼んだり呼ばなかったりします.
Neovimの良いところ
キーボードだけで操作ができる
「モード」という概念があり,キーボードだけですべての操作を行うことができます.
たとえば,h,j,k,lがそれぞれ←,↓,↑,→に対応しているため,ホームポジションから手を動かさずにカーソル移動を行うことができます.
キーボードの矢印キーは遠いですし,ノートPCによっては上下キーが小さくて打ちづらかったりするので,これだけで生産性は10倍ぐらいには上がるでしょう.
「モード」というのは,遠い祖先のviエディタの頃から搭載されている機能です.
起動時点ではNormalモードで,ファイルの編集を行うことはできません.その代わり,上記のhjklのカーソル移動や単語移動,コピーや貼り付けなどを行うことができます.
Normalモードでiかaを押すことでInsertモードとなり,文字入力を行うことができます.Escを押すことでNormalモードに戻ります.
他には,選択操作を行うVisualモードなどがあります.
豊富なプラグイン
Neovimには,たくさんのプラグインがあります.とにかくたくさんあります.見た目がカッコよくなるプラグインもあれば便利な機能を持つプラグインもありますし,使い所がよくわからないプラグインもあります.
ちなみにVimもプラグインによって拡張可能で,VimのプラグインはだいたいNeovimで動きます.逆に,NeovimのプラグインはVimで動くとは限りません.
素のNeovimはとてもシンプルなので,これらのプラグインを入れて拡張して自分だけのエディタに仕上げていきます.
ちなみに,僕のNeovimには85個のプラグインが入っています.意外と少なかった.
Built-in LSP(Neovimのみ)
LSP(Language Server Protocol)を使用すると,同じプロトコルでいろいろなプログラミング言語向けに入力補完や定義ジャンプなどを提供することができます.有名どころだとVSCodeで使用されていますが,NeovimにもこのLSP向けのクライアントが組み込まれています.ちなみに派生元のVimにはありません.
このLSPを使用することで,言語サーバさえ入れてしまえば大体の言語で同様の開発体験を得ることができます.
Neovimの悪いところ
学習コストの高さ
操作系統がかなり独特であるため,学習コストは高いです.常日頃から使いましょう.使ってれば慣れます.
IMEとの相性の悪さ
こちらは僕も思っていることですが,IMEとの相性は最悪です.Insertモードで日本語入力を行ったあと,Normalモードへ戻ってからカーソル移動をしようとすると,「っっっっっっっっっっっっj」となります.よくやります.
一応skkというNeovim内でも動作するIMEがありますが,こちらはNeovimに負けず劣らずの変態特殊なIMEなので僕は使ってないです.ちょっと使ってみたい.
Neovimを使ってみよう
Neovimを第一線で使えるレベルまでカスタムするには,かなりの時間がかかります.具体的には,GWの半分が溶けます(経験談).
流石に初心者にこれをやらせると1日で心が折れそうなので,以降では簡単に(当社比)Neovimを始める方法を2つご紹介します.
これらを使いこなした暁には,あなたはNeovim以外のエディタを使うことはできなくなっているでしょう.
設定済みのNeovimを使う
世の中には,あらかじめ便利なプラグインを組み込んだ状態で配布されているNeovimディストリビューションというものがあります.プラグインマシマシバニラNeovimほどではないにせよ十分にカスタマイズ可能ですし,何よりドキュメントをちゃんと読めばちゃんと動きます.
適当に列挙すると以下のようなものがあります.違いはよくわかりません.
- LazyVim・・・🚀 Getting Started | LazyVim
- AstroNvim・・・AstroNvim
- LunarVim・・・LunarVim | LunarVim
- NormalNvim・・・GitHub - NormalNvim/NormalNvim: A normal Neovim distribution
- NvChad・・・NvChad
人の設定を使う
新しいPCを買った暁には,迅速に己のNeovimを復元できなければ,生産性に多大なる影響を及ぼします.そこで,世のNeovimmerは己のNeovimの設定をGitHub等で公開していることが多いです.
GitHubで「dotfiles」という名前のリポジトリを検索すると,中にNeovimの設定が含まれていることがあります.ときどきNeovimの設定ファイル用の独立したリポジトリを持っている人もいますが,大体そういうリポジトリは「nvim」という名前なので検索しても出てきづらいです(プラグインばっかり出てくる).
ただし,人によっては(僕みたいに)READMEに必要な環境を書いていない事があるので,現在の環境でそのまま設定が動くとは限りません.
まとめ
Neovimはとても良いエディタなので,皆さんNeovimを使いましょう!