NeoVimからZedに乗り換えてみた体験記
原文は Ellie Huxtable により に公開されました。 このブログを購読する
少なくともここ10年はVim/NeoVimを使ってきた。ワークフローがよりターミナル中心になってきたのをきっかけに、Sublime Textから乗り換えたのだ。
それ以来、数多くのエディタを試してきたが、結局いつもVimに戻っていた。VSCodeもなかなか良かったが、Vimエミュレーションがどうもしっくりこなかった。操作で何度もつまずき、体験はかなりぎこちないものだった。エディタが少しごちゃごちゃしすぎているとも感じた。テキストを編集させてほしいだけなのに、放っておいてほしいのだ。
他にもEmacs(正確にはEvil)やHelixなども試した。
しかし、これまでのところ本気で乗り換えを考えさせられたのはZedが初めてだ。去年のどこかで一度試してみたときは、まだ少し磨き込みが足りない印象だったし、当時はまだオープンソースでもなかった。
まずはRust製のプロジェクトであるAtuinで使い始めてみた。ツール周りはすべて自動でセットアップされ、自分で設定する必要はまったくなかった。素晴らしい!
設定
Zedはそのままでもかなり使いやすいが、いくつか変えたい点があった。
設定の全体は以下のとおりだ:
{
"theme": "Gruvbox Dark Soft",
"vim_mode": true,
"buffer_font_size": 12,
"ui_font_size": 14,
"buffer_font_family": "FiraCode Nerd Font",
"relative_line_numbers": true,
"terminal": {
"line_height": "standard"
},
"lsp": {
// Specify the LSP name as a key here.
"rust-analyzer": {
//These initialization options are merged into Zed's defaults
"initialization_options": {
"checkOnSave": {
"command": "clippy"
}
}
}
}
}テーマやフォントといった分かりやすい設定以外では、デフォルトのターミナルの行間が少し奇妙に感じられた。本来よりもやや広めに取られているようで、一部のTUIの見栄えがおかしくなっていたのだ。これを「standard」に設定することで解消した。
それからRust向けにLSPの設定も少し調整した。
キーバインド
次に手を加えたのはVimのキーバインドだ。デフォルトでもかなり標準的だが、生産性を保つためにどうしても必要なカスタマイズがいくつかある。
jj- 指をホームポジションに置いたままにできるよう、jj → escにリマップしている<leader>w- 現在のバッファを保存する<leader>s t- ワークスペース全体をgrepする<leader>f- ファイルを検索する
僕の知る限り、Zedにはleaderという概念はない。でも問題ない! バインディングを直接書き込めばいいのだ。
実際の設定はこうなっている:
[
{
"context": "Editor && vim_mode == insert && !menu",
"bindings": {
"j j": "vim::NormalBefore"
}
},
{
"context": "Editor && vim_mode == normal && !menu",
"bindings": {
"space w": "workspace::Save",
"space s t": "workspace::NewSearch",
"space f": "file_finder::Toggle"
}
}
]キーマップでコンテキストを式として指定できるのは、なかなかクールだと思った。inoremapのようなものと比べると、はるかに読みやすい。
他のアクションはデフォルトのキーバインドから見つけられる(cmd-shift-pで「default keybindings」を検索)。
編集体験
Zedは使っていてとても気持ちがいい。動作はバターのように滑らかで、パフォーマンスに多大な労力が注がれていることがひしひしと伝わってくる。UIはミニマルで、どこかSublimeを思い起こさせる。
彼らのUIフレームワークはRustで書かれており、今後これを使ったアプリケーションがもっと増えることを期待している!
定着するだろうか?
まだだ。でも、かなり惜しいところまで来ている! これまでに試した他のどのエディタよりも長く使っているが、やはり「ターミナルに常駐するエディタ」ではなく「エディタの中にあるターミナル」を使うのは、まだ違和感がある。とはいえ、これは完全に僕自身の問題であって、Zedのせいではない。
それ以外にも、Vimエミュレーションにはまだいくつか足りない部分がある。僕はマークを多用するのだが、まだ実装されておらず、そこで何度もつまずいた。時々、jjのバインドが発動しないこともあった。おそらく速く押しすぎたのだろう。ただ、簡単に再現できるわけではなく、たまに起こるだけだった。
これからもZedの動向は追いかけていくつもりだ。そのうち完全に乗り換えることになるかもしれない。
記事をランダムに読む
コメント
ログインしてコメントする