電通大生の脳死Emacs撲滅運動とVimのすゝめ-2

2024/12/14に公開

この記事は, MMAアドベントカレンダーAdvent Calendar 2024 12日目の記事です.

パート1にあたる記事はteam411アドベントカレンダーで公開しているので, まだ見ていない人はぜひ見ていってください.

https://zenn.dev/team411/articles/0ac74ab0d9ef58

はじめに

カフェイン片手にご機嫌麗しゅう.
一般Vimmerのむつみんです.

この記事では, 電気通信大学の情報の授業で用いられるテキストエディタ「Emacs」を脳死で使ってしまっている学生たちを救い出すことを目的としています.

team411の記事でも色々とVimとEmacsについて書いたので, 両者の違いについてはそちらをご参照ください.

対象読者

  • 電通大生
  • その他授業などででEmacsを使っている大学生
  • Vimに少しでも興味がある人
  • Neovimに興味を持ってしまった人

改めてテキストエディタについて

現代のテキストエディタは導入や拡張が簡単なVS Codeが主流となっています.

そんな時代の流れの中でも今でも根強い人気を誇るのがVimとEmacsであり, 我らが電気通信大学では授業で最初にEmacsを使うことになっています.

しかし! 授業で使っている様子を見てみるとEmacsをもはやWindowsのメモ帳のようにマウスと矢印キーで使っているような方々が非常に多いような印象を受けます.

たしかにEmacsのキーバインドは基本的にControlと組み合わせるため覚えにくいですが, キーボード操作を覚えないのはこれからのエンジニアライフで使う時間をかなり浪費することになってしまいます.

ならばせめてVimを使ってしまいましょう.

もしEmacsを使い続けたいならば以下のSpacemacsも参照してみるのもいいかもしれません.

普段使わないスペースキーと親指を遊ばせておくのは勿体ないです.

https://qiita.com/shotakaha/items/da1282327f0dbc1b6289

VimからNeovimへ

さて, ここまでVimについて色々と述べてきましたが, やはりVS Codeの方がリッチなIDE(総合開発環境)を作れていいのではないかと思ってしまうでしょう.

しかし, Vimの中でもでもVS Codeに匹敵する, またはそれ以上のIDEを作り上げられる存在があるのです.

それがNeovimです.

Vimではプラグインを使っていい感じの開発環境を組むことが出来ましたが, Neovimでは更に現代的な機能を持つプラグインがサポートされていたり, プラグインマネージャーの設定を工夫すれば高速で起動, 動作する最高のテキストエディタを作り上げられます.

また, 設定ファイルの書き方がrequireなどを用いて他ファイルから引っ張ってくることも可能なので, 設定の分割管理も簡単になりました.

そして, 設定ファイルの言語も今までのVimと同様にvimrcの形式で書ける他, CやC++の速さを受け継ぎ, WezTermの設定ファイルでも使う言語のluaを使用できるため, 更に高速にすることができます.

見た目の面でも, VS Codeのように様々なカラースキーム, プラグインもサポートされているため, 自分好みの変態テキストエディタに改造できます.

私が少しいじった後の図です.

高校のときに作ったファイルを例として開いているので, 言語サーバーに色々と怒られていますね...

もちろん他にも色々とプラグインを入れてみると更に自分好みにできてしまいます.

今時間が取れる状態で, 少しでもNeovimに興味があるなら是非使ってみてください.

VS Codeの拡張機能から始めることも可能です(使えないプラグインもありますが...).

おすすめ機能とプラグイン

ここでは, 私が色々とNeovimの機能を漁っているときに見つけた面白そうな機能であったり, 基本的だが役に立つ機能を紹介します.

キーバインド

  • {}

Normalモードで波括弧を入力すると, それぞれカーソルが前の空白行, 次の空白行にジャンプしてくれます.

前後のdefとかにジャンプしやすいので, コーディングのQoLが爆上がりします.

  • :term または terminal

Vim上でターミナルを開いてくれます.

  • tabedit

Vim上で新しいタブを開けます. :e hogehoge.hogeでhogehoge.hogeなどの何かしらのファイルを開いてあげれば作業効率が上がります.

:tabnext:tabprevでタブ移動ができますが, Normalモードでtabキーを押すとタブ移動できるようにキーバインドを設定するとなおいいかもしれません.

Lazy-Vim

まず紹介するのは基本中の基本, NeovimのプラグインマネージャーLazy-Vimです.

https://zenn.dev/siteyo/articles/980b6205e93914

このプラグインマネージャーでは, 既に色々な機能がついている他にもプラグインのロードする順番やタイミングを設定でき, 起動スピードを爆速にできます(私はまだできてませんが).

https://zenn.dev/yuucu/articles/lazy_nvim_tuning

初心者でも簡単にNeovimをリッチにでき, 将来起動スピードが気になり始めるとしてもすぐに設定できるのでおすすめです.

一応他にもdeinというプラグインマネージャーもあり, そちらはMMAの先輩であるryota2357さんが使っていたりします.

Firenvim

既にVimを使っていて, .vimrcなども自分で書いている人はこんな経験はないでしょうか.

テキストエリアをクリックして文字を入力した後, 訂正箇所を見つけたからNormalモードに戻るためにjjと入力する.

しかしただのテキストエリアなのでjjと入力されるだけ.

悲しくなりますよね...

そんなあなたに, Firenvim.

https://medium.com/@cappyzawa/firenvimを使ってwebでもvimる-9147d3c89beb

Chrome系の拡張機能およびプラグインで, ブラウザなどのテキストボックスをVim化してくれます.

まごうことなき変態です.

Neovimでも該当のプラグインをインストールしてあげることで, 自分のNeovimの設定を反映できます.

GhostText: Vim

こちらも変態です.

https://fohte.net/blog/posts/2023-09-18-ghost-text-vim

firenvimの方では日本語入力がうまく機能しなかったり, ショートカットキーがChromeに吸われるなどの難点があるそうなので, ブラウザでも使いたいならこっちの方がいいかもしれません.

おわりに

team411の方でも色々と書いてしまっていたので, 思ったよりも時間がかかってしまいましたが, 最終的に完成できて良かったです.

team411でもMMAでもちょいちょい活動していきますので, Vimやその他の活動に興味を持ってもらえたならばぜひ突撃してみてください.

また, これからも少しニッチな記事を投稿するかもしれませんので, 見かけた場合はぜひよろしくお願いします.

あなたのエンジニアライフとVimライフに祝福を.

むつみんでした.

Discussion