私とNeovimの2023年

2023年は大学院を卒業してアプリケーションエンジニアとして就職しました。 そのアプリケーションエンジニアの重要な福利厚生の一つに毎日テキストエディタを使えるというものがあります。 僕が普段利用しているテキストエディタのNeovimはVimLやLuaを使って細かく設定を書くことができます。

そのNeoimの設定はdotfiles というリポジトリで管理する風習があります。 私の就職後初のdotfilesへのコミットはMac用のシェル指定を追加する変更です。 fix shell on mac · tomato3713/dotfiles@ebf0a95 · GitHub このままNeovimでコードを書いていくと思いきや、入社直後は VS code をメインに使って作業をしていました。

大学院時代はNeovimで簡単なスクリプトを書くかLaTeXやプレーンテキストの編集にしか使っていなかったのでGoやTypeScriptを書くための設定をメンテしていなかったことでうまく動かなかったからです。 いくつかのプラグインもDeprecatedのまま放置してしまっていました。

しかし、VS codeでテキストを編集するときいつも頭の片隅にVimなら ci” が使えるのにというもどかしさがありました。 結局5月中には全てのプラグインを見直しdeprecatedなプラグインを全て置き換えました。 2月と持たずNeovimと寄りを戻したわけです。

プラグインを見直した際にVimプラグイン界隈で話題になっていた ddc.vim と ddu.vim の導入をしました。 特に ddu.vim は設定こそ難しいですが、一度設定してしまえばファイルやカラースキーム、メソッドの参照検索など様々なリソース検索を統一したインターフェイスで実現できるようになるのでおすすめです。

設定を見直した直後は Language Serverやフォーマッタはプラグインが自動で設定している内容をそのまま使っていました。最近は挙動を把握しておきたいのでプラグイン側のコードを読んでどんな設定がされているかを確認しています。

また、毎日テキスト編集をしていると頻繁に使うキーバインドなのに打ちにくいとか細かい挙動が癖に合わないから人がエディタに合わせて動くみたいなことが日々でてきます。 その細かい挙動を調整した例の1つが GitHubのパーマリンクと選択範囲をコードスニペットとしてコピーするキーマップを設定した - tomato3713’s blog です。 この時はコードを読んで把握したことを作業ログにパーマリンクを張ったり該当箇所の切り抜きと一緒に書きたくなることがよくあったので、それをショートカットで使えるように設定しました。

直近ではタブページに関する設定を追加しています。 Vimにはタブページという機能がありOSのマルチウィンドウのように複数の画面レイアウトを保持したままタブを行き来して作業することができるようにする機能があります。これを使うと調査とコーディング用などでタブを行き来できるので有用そうです。 そこで次のような設定を加えてddu.vimによるタブの選択及び移動と番号だけタブに表示する設定を追加しました。 - ddu tab source · tomato3713/dotfiles@be5ed6d · GitHub - selected tab highlight · tomato3713/dotfiles@e5370a5 · GitHub

自分で設定を書いているのは既存プラグインで自分の好みの挙動ではなかったからです。 タブに関連した既存プラグインで見つけられたものはタブにバッファの一覧を綺麗に表示する機能を提供するものでタブとバッファが一対一で対応しているような感じです。 自分の用途と既存のプラグインの振る舞いが一致せず使い心地が微妙でした。

そのため番号だけタブに表示する機能的には少ないけど自分にあったものを作っています。 まだ実験的に追加してみた設定なので使っていくなかで機能を追加したり、使い心地がよくなければ思い切って捨てるかもしれません。 少なくとも見た目には満足していないので既存プラグインのコードを読んで綺麗なタブ表示にしていきたいと考えています。

プラグインのコードを読むことは今までほぼしていなかったのですが、今年はプラグイン開発の参考や設定方法を把握するために内部のコードを読みにいくことができました。 テキストエディタは日常と密接にくっついたプログラミングの課題であり、テキストエディタの設定とともに技術を身につけてきたと思っています。

まだまだ完全なテキストエディタには到達していません。 2024年も引き続き自分好みにdotfilesを成長させていきます。