My Vim philosophy

始めに

最近フォロワーさんに「なるべくプラグインに頼りすぎないように様にしているんですよね」って話したら、 「いつもプラグイン作っているからてっきりプラグインをガンガン使っていると思ってた」といわれました。

あー、たしかにと思って、あらためて自分のVimへのこだわりについて整理したのでそれについて書いていきます。 タイトルは哲学と書いてありますが、まぁそんなに真面目な内容ではないです(笑)

Vimの特徴

Vimはなんと言ってもkeybindが特徴的です。豊富なkeybindがあるので1つのキーボードでさまざまな操作を可能にします。 特にモーションとオペレーター(ciwなど)がテキスト編集を強化していて、これを使いこなすだけで編集スピードが段違いです。

もうひとつはプラグインです。世の中にはたくさん便利なプラグインがあり、それらは標準機能では解決できない問題を解決してくれます。 そしてプラグインは自作が可能ですので、標準機能に不満があれば自分で作れます。 こういった拡張性が高いことで、Vimプラグインはたくさん作られていて、たくさん使っている人がいます。

Vimへのこだわり

プラグインに頼りすぎない

これは良い、これはだめといった厳密なラインがあるわけではないですが「Vimの標準機能で足りるのか」を初めに考えます。

そして標準で足りているなら、プラグインは導入しないようにしています。なぜならプラグインに頼りすぎるとVim自体を使えなくなってしまう可能性があるからです。 一般的に人間は現状満たされているならそれ以上改善をしようと思わないので、プラグインに目が行き過ぎるとVimの良さに気付けなくなってしまいます。

ぼくはVimを始めた当初はとりあえずNERDTreeを入れて使っていましたが、素のVimでのファイルの開き方がわからなかったです。 自分で選んだエディタを使っているのに、そのエディタの標準機能を知らなくてファイルすら開けない、というのはあまりにも情けないなと思ったのは今も覚えています。 そういった理由もあって、プラグインをガンガン使っているわけではなく、標準機能だと厳しいなと思ったらプラグインを導入するようにしています。

また、これが一番重要ですが「編集の体感がかなり変わってしまう」プラグインもなるべく入れないようにしています。 たとえば、vim-easymotionというプラグインがありますが、これは入れないようにしています。 内心めっちゃ便利そうと思っていますが、縦横移動は検索/を使えばもの足りるし、これを入れてしまうとかなり依存してしまいそうだからです。

このように、ちゃんと自分が使っているエディタの機能を使った上でそれでも足りないものはプラグインを使って補完すれば良いと思っています この「足りない」の基準は人それぞれなので明確なラインはないのですが、ぼくは「標準機能で賄えるかどうか」で決めています。

編集ではなく、周辺を強化

ぼくがプラグインを作る理由はこれです。Vimを使っていると「すべてをVimで完結したくなる」という病気にかかります。(自分だけかもしれないが) たとえば「GitHubのissueを作ったり、GitHub Actionsの結果を見たり」をVimで完結するためにgh.vimというプラグインを作りしました。

こういった普段使っているツールやサービスとVim間をシームレスつなげるためのプラグインを作っています。 基本的にVimの編集体系にあまり不満はないので、それ以外のところで作業が捗るようにプラグインを作っています。

以下が愛用している自作プラグインたちです。

プラグイン概要
gyazo.vimGayzoに画像をアップロード
docker.vimDockerを操作
gh.vimGitHubを操作
translate.vimGoogle翻訳
code2img.vimコード断片の画像化
getpr.vimGitHubのPRのリンクを取得

自動補完を使わない

これはどちらかというと、プログラマーとしてのこだわりです。

コーディングするとき自動補完を使っている方が多いと思います。ぼくも以前はそうでした。 しかし自動補完に頼りすぎてしまって、いざ自動補完が使えなくなったら、ググらないとまったくコードを書けませんでした。

そういった経験もあって自動補完を使おうのをやめて、手動補完(<C-x><C-n>など)を使うようにしています。 最初はなかなか歯がゆいところがありましたが、今ではむしろ自動で補完が出てくるのは邪魔だなって感じています。 また、関数を覚えるようになってある程度何も見ず、コーディングできるようになりました。

自動補完はもちろんメリットがありますので、使わないほうが良いというわけではないです。 ただ、「自動補完がないとまともにコードを書けないならプログラマーって胸張って周りに言えないな」と思っています。 これは自分のこだわりであって、周りに対してそう思っているわけではないです。

よりシンプルに

最近、画面上に必要がない情報を出さないようにしています。 以前はlightline.vimというプラグインを使って、ステータスラインにファイル名、ブランチ情報などを表示していました。 最近ではこれらの情報なくても困ることないなと思ったので、2年間ともにしてきたlightline.vimとお別れをしました。

現在では、次の設定をしています。

  • 行番号を非表示
  • ステータスラインを非表示
  • タブラインを非表示

これで、だいぶ画面がスッキリしました。

まとめ

Vimを始めた当初はいろいろプラグインを入れたり、外見を変えたりと頑張っていましたが今ではいろいろと逆行しています。 正直これからどうなるのかわからないのですが、日々Vimでの生活を良くしていきたいと思っています。 せっかくなのでみなさんも年末にVimを大掃除してみると良いかもしれません。

では、良いお年を〜


Vim

2020/12/05 00:00