Vimに特に不満があったわけではないものの、新しいものも受け入れないとな〜と思ってセットアップしてみた。 Vim自体を辞めるつもりはないので、Atomはvim-modeで使っています。

メインの業務はXcodeかIntelliJ IDEAでやっていて、それぞれプラグインでVimのキーバインディングを割り当てています。 それ以外の以下のようなものには大体Vimを使っていました。

  • 色んな設定ファイル
  • Markdown
  • Go
  • Rust

自分が最低限使えるようにするまでにやったものを紹介します。

カーソルの履歴

AtomにはVimのノーマルモードのC-i, C-oにあたるものがなさそうだったのでt9md/atom-cursor-historyというプラグインで解決しました。 Vimっぽい動きが良かったので以下の設定を選びました。

'atom-text-editor.vim-mode.normal-mode':
  'ctrl-i': 'cursor-history:next'
  'ctrl-o': 'cursor-history:prev'

Markdownのプレビューがめっちゃ遅い

markdown-preview-plusというプラグインに変えたら大丈夫になった。

日本語の折り返しがおかしい

japanese-wrapというプラグインで大丈夫になった。

タブが無限に増えて邪魔

定義元に飛んだりする度にタブが開いて無限に増えていたので、zentabsというプラグインでtabを1個に制限しました。 IntelliJ IDEAでも同様の問題には遭遇していて、同じような解決方法を取っていました。

Go, Rustのコード補完

Goにはgocodeをプラグインがあり、Rustにはracerを使うプラグインがあるので大体うまく補完されました。 自分はXcode育ちでコード補完がないとロクにコードも書けない人間ですが、なんとかやっていけそうな雰囲気でした。

Go, Rustで定義元にジャンプ

vim-modeのctrl-]symbol-view:go-to-declarationに当てられていて、これはctagsのインデクスを元に定義元へジャンプするものらしい。 GoやRustは違う仕組みで定義元を探しているらしい(?)ので、これらのファイルを開いているときは別のコマンドを実行するようにしました。 Goではgodefのgodef:toggleを実行し、Rustではracerのracer:find-definitionを実行するようにしました。

'atom-text-editor.vim-mode.normal-mode[data-grammar="source rust"]':
  'ctrl-]': 'racer:find-definition'

'atom-text-editor.vim-mode.normal-mode[data-grammar="source go"]':
  'ctrl-]': 'godef:toggle'

おわりに

結局できることはあまり変わらないなあと思ったけど、Atomはしゃれてるな〜と思いました。 ターミナル内で使えないので今後も引き続きVimも使うことになると思います。

Atomに乗り換えたつもりだったけど、このエントリーはVimで書いていた。