Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5657

エディタ雑感 (2020)

$
0
0

VSCode, Sublime Text 3, NeoVim, Emacs + Evil (のプラグイン) をラフに比較します。

注意: 素人が書いています。また、リモートなど、考慮に入っていないものも多いと思います。

エディタに期待するもの

僕は以下を重視します。

Rust プログラミングの手厚いサポート

シンボルのリネーム (にバグが無いこと) や、外部クレートのアイテムへのジャンプ (が可能なこと) を重視します。

→ VSCode

文書編集の UI

バッファ単位でテキストの中央寄せをしたいです。また、 タブバーやファイルの ツリービューを使います。そのため、 バッファのグルーピングマルチルートディレクトリのサポートが欲しいです。

→ Emacs (Centaur Tabs, Olivetti)

これは少数派かもしれません

その他 UI について

プレビューしながらのファイル検索や、 interactive grep が好きです。つまり fzf-previewが好きです。リンク先には GIF があります。

→ NeoVim (fzf-preview)

また、 GUI ではなくてターミナルで動かしたいです。

比較

考慮されていない部分も多いと思います。ご容赦ください。

VSCode

Rust の (クライアント側?) サポートが完全な唯一のエディタです。他のプラグインも非常に良く動作します。

  • Good:
    安定性、組み込みターミナル、コマンドパレット
  • Bad:
    ファイル検索にプレビューがありません。 interactive grep ができないと思います。重さ (文字入力の遅さなど) やタブの分厚さも気になります。
  • その他:
    自分で拡張を作るのは大変らしいです。

Sublime Text 3

デフォルトの動作が非常に良いエディタです。 VSCode よりも明らかに 動きが速く、さらにファイル検索にプレビューが付いています。

NeoVintageous.vimrc風ファイルを読めるようになります。ただしバグがあり、 json の設定を開くと 1 分ほど硬直するようになります。謎……

  • Good:
    デフォルトの挙動
  • Bad:
    画面分割 (Origami) が合いませんでした。また、 LSP の詳しい設定法が分かりません。 デフォルトは良いのにディテールが合わないという不思議な結果になりました。
  • その他:
    拡張を簡単に作れるそうです。

NeoVim

設定が簡単で 見た目が良いエディタです。

タブなどは薄いミニマムで、配色はしっかりしており、アイコン表示もできます。

  • Good:
    安定性と極まった UI
  • Bad:
    動きが遅い (文字入力や一部 UI) です。改善可能? また、サイドバー (NERDTree) にはマルチルートディレクトリがありません。
  • その他:
    VimScript です。今後は Lua かも……

Emacs

一部パッケージが非常に発達したエディタです。ただし マンパワーが足りないのか、色々と上手く動作しないのが普通です。

ターミナルでは見た目が悪いです。配色は見づらく、どのパッケージもアイコン表示をサポートしません。

  • Good:
    起動後の動作が軽いです。また、 一部パッケージのディテールが非常に良いです。特に Centaur Tabs によるバッファのグルーピングは、他エディタには無いかもしれません。
  • Bad:
    起動が遅いです。ターミナル上では見た目が悪いです。看板パッケージにも明らかな不具合があって、しかも issue すら立っていないことがよくあります。
  • その他:
    ELisp を使えます。

終わりに

現在は、以下のようにエディタを使い分けるようになりました:

用途使用エディタ
プログラミングVSCode
文書の編集Emacs + Evil
GitNeoVim

人に勧めるなら、 NeoVim (実践Vim) → VSCode かなと思いました。

注意

上記の僕の印象は、エディタの実態からずれているかもしれません。

『君は全然分かっていないぞ』という場合はごめんなさい!


Viewing all articles
Browse latest Browse all 5657

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>