なんとなく過去の記事を遡ってたら(若さに満ち溢れててあまり直視したくはない)、どうやら2013年にVimを使い始めたって書いてあった。
そうか〜2013年か〜・・・え、もう10年も経ってんの?!ってなったので、記念に記録を残しておこうかなと。
エディタ遍歴
思い出してみるとこんな感じか。
- 2007年04月-: Coda
- 2012年05月-: Coda2
- 2013年07月-: Vim
- 2023年01月-: Neovim
もともとは、CodaっていうPanic社のエディタが好きだった。
そのCodaも今ではメンテが終了して、Novaっていうエディタに生まれ変わってた。時代を感じる。
CodaからNovaへ https://panic.com/jp/coda/
VimからNeovimに移行したのは今年のこと。今のところ、別のエディタに移行しようとかは考えてない。
Helixがもう少し熟れたら、ちょっと試してみたい気持ちはあるけど・・・。
helix-editor/helix: A post-modern modal text editor. https://github.com/helix-editor/helix
使い方
基本的に、仕事時間のほとんどをターミナル(最近のおすすめはWezTerm)上で過ごすし、書き物をするときはだいたいNeovimでやってる。
なので、VimでもNeovimでも、GUIではなくCUI上で開くやつが良い。ここは譲れないポイント。
よく開くファイルタイプとしては、
javascript
typescript
svelte
markdown
json
astro
html
css
lua
toml
typescriptreact
javascriptreact
rust
python
cpp
って感じ。
コンテキストを分けたいので、TODOメモだけはCotEditor(軽いのがいい)で開きっぱなしにしてる。
ちょっと前までMarkdownを書くときはそっちを使ってたけど、Neovim(というかTree-sitter)のハイライトが偉くて、コードブロックの中までキレイにしてくれるもんで、すっかり使わなくなってしまった。
Neovimの設定
https://github.com/leaysgur/dotfiles/blob/9b3a1e29213029273026974daeff11f688729965/init.lua
なんとなく、1ファイルで完結させたいし、あまり長々と設定ファイルを書きたくないという思いがあり、この360行が今のすべて。
せっかくなので、プラグインも列挙しておく。(汎用的な依存プラグインは割愛)
folke/lazy.nvim
- プラグインマネージャー
AlexvZyl/nordic.nvim
- Nord風テーマ
echasnovski/mini.statusline
- シンプルなステータスライン
lewis6991/gitsigns.nvim
- Gitの差分行を表示
lukas-reineke/indent-blankline.nvim
- インデントの深さのガイド
NvChad/nvim-colorizer.lua
- カラーコードを可視化
RRethy/vim-illuminate
- カーソル下の変数をハイライト
nvim-neo-tree/neo-tree.nvim
- Netrew代わりのファイラー
nvim-treesitter/nvim-treesitter
- シンタックスハイライトの命綱
JoosepAlviste/nvim-ts-context-commentstring
- Svelteなど1ファイルに複数のファイルタイプが共存する時にコメント文字を自動判別
windwp/nvim-ts-autotag
- 自動閉じタグ
terrortylor/nvim-comment
- コメントのトグル
andymass/vim-matchup
- カッコやHTMLタグの開始・終了ジャンプ
Darazaki/indent-o-matic
- インデント判別
echasnovski/mini.surround
- カッコやemmetのタグ囲み・置換・削除
windwp/nvim-autopairs
- 自動でカッコを閉じる
neovim/nvim-lspconfig
williamboman/mason.nvim
williamboman/mason-lspconfig.nvim
- エディタレベルでのLSPやフォーマッタの管理
j-hui/fidget.nvim
- LSPのローディング表示
dnlhc/glance.nvim
- LSPでリファレンス元をチラ見できる
stevearc/conform.nvim
- フォーマッタ
hrsh7th/nvim-cmp
hrsh7th/cmp-buffer
hrsh7th/cmp-emoji
hrsh7th/cmp-path
hrsh7th/cmp-nvim-lsp
hrsh7th/cmp-nvim-lsp-signature-help
- 入力補完(絵文字が便利)
zbirenbaum/copilot-cmp
zbirenbaum/copilot.lua
onsails/lspkind.nvim
- NeovimでもCopilot
という具合に、たぶん世の人たちに比べると、あんまり多くないと思う。
にわかVimmer
プラグインの顔ぶれを見てお気付きの通り、そして自分で言うのもアレかもしれないが、にわかVimmerであることを自認してる。
- 設定も薄っぺらいし
Esc
もキーマップもそんなに変えてないし- 複数タブも開かないし
- Quickfixとかマクロも使ったことない
その最たるものが、h
・j
・k
・l
キーを一切使わず、矢印キーをめちゃめちゃ使うところかと。
基本的にコード書きながらも前後を見返したり、とにかくうろうろしたいタイプなので、
gg
やG
、Shift
押しながらの↑
や↓
で縦方向に大きく動きつつ- その後はざっぱに
}
や{
で動きつつ - 横方向には
e
やShift
押しながらの←
や→
、0
や$
- 最終的に矢印キーで1文字ずつ移動
というのが基本形。 なんならINSERTモードでも移動したい時があるので、なおさら矢印キーのお世話になってしまってる。
相対行数で移動するショートカットとかも使わないし、モーション系の移動プラグインとも相性があまりよくなくて、
- プラグインをトリガー
- ジャンプ先の文字を目で探す
- それを間違えずに押す
そんな暇あったら動いたほうが早いし脳内メモリも使わんわ・・って。
(flash.nvim
は2文字ジャンプ縛りがない珍しいタイプだったので試してみてたけど、結局いらんなって結論に至った)
事あるごとに矯正しようと過去に何度か試みてはきたけど、さすがに10年分も癖が貯まると、もうこういうスタイルでいっかって。
そういう意味では、VSCode+VSCodeVimとかでも、たぶん苦労なくやっていけるんやろうなとは思う。
それでも
- ターミナル上で使える
- 起動が早い
- UIから何まで好きにでき、欲しい機能だけを付け足せる
dd
やda{
とかdi"
とか、複数行編集とかはやはり便利.
リピートもたまに使う
- 代替プラグイン探し楽しい
こういうところは、VSCodeには代えられないなーと。
あとは、ChromeよりFirefoxを使いたい気持ちに似たナニカもあるかもしれない。
ガチなVimmerでもなく、IDE化したいわけでもない、いろんな人のいろんなこだわりポイントを、懐深く受け入れてくれるってところに素敵さを感じてるんかも。