NeoVimからZedに乗り換えてみた
少なくともこの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、「search default keybindings」)から確認できます。
編集体験
Zedはとても気持ちよく使えます。すべてがバターのようになめらかで、パフォーマンスに多くの手間をかけていることが実感できます。UIはミニマルで、少しSublimeを思い出させます。
このUIフレームワークはRustで書かれていて、近いうちにこれを使うアプリケーションがもっと増えることを期待しています!
定着するのか?
まだです。でも、かなり惜しいところまで来ています!これまで試したどのエディターよりも長く使っていますが、それでも、ターミナルの中にエディターがあるという構成には少し違和感があります。私にとっては、エディターの中にターミナルがあるというより、エディターを備えたターミナルのほうが自然なのです。とはいえ、これは完全に私の問題であって、Zedとは何の関係もありません。
それ以外にも、Vimエミュレーションにはまだいくつか足りないところがあります。私はマークをかなり頻繁に使うのですが、まだ実装されていません。そのため、何度も操作につまずきました。ときどき、jjのバインドが反応しないこともありました。押すのが速すぎたのかもしれません。ただ、簡単には再現できず、本当にたまに起きるだけでした。
Zedはこれからも時々チェックしていこうと思います。もしかすると、近いうちに完全に乗り換えることになるかもしれません。
記事をランダムに読む