odiak.net

Vimを使うのをやめた理由

以前はVimやVimのキーバインドを使っていたんだけど、少し前から使うのをやめてみた。
今日はその話を書いてみたいと思う。

Vimの思い出

僕がVimを使い始めたのはおそらく2011年くらいだった。
使い始めた理由としては、ネットで存在を知ってかっこいいと思ったことと、Linuxサーバーを操作するときにviでファイルを編集するのが当たり前のような雰囲気があったこと、の2つが大きいと思う。

途中で他のエディタも試したりしつつ、長い間Vimをメインのエディタとして使っていた。
Twitterやブログ記事などを見て、プラグインを入れてみたり設定を変えてみたりした。
といっても、なかなか超使いこなせているという感じになれなかったし、マウスやカーソルキーなどを使った操作も積極的に使っていた。
そして、Vim scriptという言語に関しては最後まで慣れることができなかった。

(余談だけど、友人の一人にVim scriptからプログラミングを始めたという人がいて、こいつは相当な曲者だなと思ったことがある。)

そんな中で、自分のVim操作の熟練度を少し上げてくれたのが「実践Vim 思考のスピードで編集しよう!」という本だった。
この本は、最初はドットコマンド(.)のすごさから始まり、コマンドが操作と操作対象から構成されていることや、マクロなどについて説明していた。
この本を読んで、「おー、Vimってこうやって使うのか。これは楽しい!」と感動したのを覚えている。
ツイート探したら2013年だった。

実践Vimやばい!!
https://twitter.com/odiak_/status/379126664891883520

公園で実践Vim読んでます
https://twitter.com/odiak_/status/379127617019854848

実践Vimは、Vimの活用方法を知りたい人がいればおすすめしたし、一度人に貸したこともある。それくらい良い本だった。

そんな感じで、その後しばらくはVimをターミナルから、あるいはGUI版のものを使っていた。
Androidの開発をやっていたときはさすがにAndroid Studioを使ったけど、IdeaVimという機能拡張を入れてVimキーバインドにしてた。

でも、IDEなどのVim拡張はショートカットキーとVimのコマンドが衝突してしまうことや、本物のVimと微妙に違う動きをすることなどがあり、少しストレスを感じるポイントだった。

2017年か2018年くらいに、GitHubが開発したAtomというエディタがかなり流行っていたので、試してみた。
もちろんVim風の機能拡張も入れた。
GUIは使い勝手が良いしそこそこ満足ではあったが、一つ不満に感じたのが、プロジェクトごとに設定を変更できなかったこと。

Atomの人気とは少し遅れて、Microsoftが開発したVS Codeというのも使われ始めていた。
Atomに不満を感じていたので、こちらを試してみたところ、ちゃんとプロジェクト毎に設定を変更できたので乗り換えた。
VSCodeの方が軽いと言われていたけど、僕はそこまで違いを感じなかったし、操作感なども似ていたと思う。(当時はそこまでヘビーに使っていなかったからかもしれない。)

そんな経緯を経て、メインのエディタをVimからVSCodeに乗り換えた。
もちろんVimの機能拡張(VSCodeVim)は入れていた。

さて、今年の初めくらいに、ふと思い立ってVimのキーバインドを外してみた。
特に何か心境の変化があったわけではないが、後述するちょっとした不満が長年たまっていたのかもしれない。

最近、Vimキーバインドがなくても普通にコードかけるかもしれないと思い始めている。新しい環境とかで、面倒だから標準のキーバインドで使ったら意外と悪くないじゃん、的な感じで。
https://twitter.com/odiak_/status/1364465456426283008

Vimをやめてみるの面白い。モード切り替えがなくて日本語書くのが楽になるなーというのはある反面、ノーマルモードのちょっとしたコマンドが恋しくなる。surround.vimなどの括弧や引用符を扱うやつが特に。
https://twitter.com/odiak_/status/1364833652262113281

最初は、使い慣れたコマンドが使えなくて少々ぎこちない感じだったが、徐々に慣れて、すぐに普通にコードが書けるようになった。

というわけで、僕のVimライフはあっさりと終わりを迎えてしまった。

今でも、SSHなどでリモートのマシンにあるちょっとしたファイルを編集するときなどにVimを使うことはある。
操作も覚えているので特に不自由はないが、その機会はかなり稀になってしまった。

Vimの不満点

Vimの軽量さや、キーボードを使ってファイル内を移動したり、テキストを操作したりする感じは気に入っていたが、いくつかの不満点があった。

モードがあるので、日本語を入力するのが辛い

普段はノーマルモードと挿入モードを交互に切り替えながらテキストを編集するわけだが、日本語の文章を書こうとすると、挿入モードに切り替えてからIMEを日本語に切り替えなくてはならない。
逆に、ノーマルモードに戻る時も、IMEを切り替えてから戻る必要がある。
そのせいで、日本語を書くときにかなりのストレスを感じることになる。

VSCodeVimでは、これを解消するための仕組みが用意されていた。
IMEを切り替えるコマンドラインツール(im-select)を用いて、ノーマルモードに戻る際にIMEの言語を指定したものに設定してくれる。
そして、再び挿入モードに切り替えると、前回と同じ言語に戻してくれる。

しかし、macOSでしばしばそれが正しく動かないのである。
macOSの問題のように感じたが、IMEが切り替わったように表示されるものの実際には切り替わっていないのである。
少し残念、というか何回かに一度使えないものは全く使えないのと同じといって良い。

というわけで、日本語を書くのが辛いのはかなり痛い!

テキストベースのUIが貧弱に感じられる

Vimでもウインドウを分割できるし補完も出せるしファイルツリーも表示できるんだぞ!と思っていたけど、AtomやVSCodeを使ってみると世界が違う。

やはりCUIはかなり制約が強いもので、同じサイズのフォントしか使えないし、画像などを表示することもできないし、マウスでの操作などにも限界がある。

Vimのキーバインドが使えない環境でテキストを入力するのがやや苦痛になる

まあ、これはそこまで大きな理由でもないか。

ブラウザやその他のアプリでちょっとしたテキストやコードを書くことはよくあるわけだが、その際にすぐVimのことを考えてしまう。
Vimで編集したテキストをコピペしたり、場合によってはVimキーバインドが使えるように設定したりすることもできるが、そこまでするほどか?と思ったりする。

あと、最近はマシンを買い替えたりした際にセットアップが面倒なので、各種アプリケーションやツールはできるだけ少ない設定で使いたいと思うようになってきた。
Vimの拡張をあちこちに入れてしまうのは、それに反してしまうことにもなる。

まとめ

Vimを使い始めたきっかけにはじまり、長い間メインのエディタとして使っていたVimからVSCode+VSCodeVimに乗り換え、最終的にはVSCodeVimを使うのをやめてしまうまでの経緯を書いてみました。

Vimをやめた結果、かなり快適にコードが書けるようになりました。
僕にはVimは向いていなかったのかもしれません。

(当然ですが、ここに書いたことはあくまで僕の個人的な感想であって、VimやVimのユーザーを否定するつもりはありません。)