web-dev-qa-db-ja.com

VimとEmacsの長所と短所は何ですか?

これらのエディターをどのように比較しますか?それぞれの長所と短所は何ですか?

[]これは、「1つを嫌い、もう1つを愛する」または両方を使用したことがない人が回答することを意図したものではありません。

388
John Berryman

私は両方を使用していますが、一方を選択する必要がある場合は、どちらを選択するかはわかっています。それでも、いくつかの問題について客観的な比較を試みます。

  • どこでも利用できますか?Unixシステムで作業するプロのシステム管理者、または組み込みデバイス(ルーター、Busyboxを備えたスマートフォンなど)のパワーユーザーの場合)、vi(Vimではなく)を知る必要があります。viは、デスクトップ、サーバー、組み込みのいずれであっても、すべてのUnixシステムとほとんどのUnixライクなシステムで使用できるためです。通常のユーザーにとって、この引数は重要ではありません。Emacsはすべてのデスクトップ/サーバーOSで簡単に利用でき、リモート編集をサポートしているため、とにかくデスクトップマシンで十分です。

  • Bloated?Emacsはかつて「8メガバイトと常にスワッピング」をユーモラスに立ちました。現在、私のマシンでは、Google Chrome Emacsが100個の開いているファイルに対して行うのと同じくらい、タブごとに約RAMが必要です。Firefoxについても触れません。21世紀において、Emacsの膨張は単なる神話です。

    特徴膨張も問題ありません。使用しない場合は、そこにあることを知る必要はありません。 Emacsの機能は、使用しないと邪魔にならないため、ドキュメントは非常によく構成されています。

  • 起動時間:Vi(m)の支持者はEmacsの起動時間について不満を述べています。はい、Emacsの起動は遅いですが、大したことではありません。セッションごとに1回Emacsを起動してから、emacsclientを使用して実行中のプロセスに接続します。したがって、Emacsの遅い起動はほとんど神話です。

    例外が1つあります。リモートマシンにログインして、そこでファイルを編集したい場合です。リモートのEmacsの起動は、リモートのVimの起動よりも(通常)遅いです。状況によっては、画面内でEmacsを実行し続けることができます。 Emacs内からリモートファイルを編集することもできますが、ターミナルでsshセッションを使用している場合は、フローが中断されます。 (XEmacs 21またはGNU Emacs 23以降、ターミナル内で実行中のXインスタンスからEmacsウィンドウを開くことができます。)

    テーブルを回すと、Vimの読み込みにEmacs(vim -u /dev/nullemacs -q)。確かに、これは奇妙なプラットフォーム(Cygwin)でした。

  • 最初の学習曲線:これは人によって異なります。 Michael Mrozekのグラフ 私は笑いました。真剣に、私はVimの学習曲線が他のどのエディターよりも急勾配で急に始まることに同意しますが、これはgvimを使用することで軽減できます。

    Emacsのいくつかの神話を払拭したので、viの神話を払拭しましょう。モーダルエディターは使いにくく、苦痛もありません。少し癖はありますが、しばらくすると自然な感じになります。 vi(m)を再設計する場合は、モードを確実に保持します。

  • 漸近的な学習曲線:VimとEmacsの両方に多くの機能があり、長年の使用後に新しい機能を発見し続けます。

  • 生産性:これは非常に難しいトピックです。 vi(m)の支持者は、ホームローを離れることなくほとんどすべてを実行できるため、最も必要なときにより効率的になると主張しています。 Emacsの擁護者たちは、Emacsには頻繁に使用されないコマンドがたくさんあることを反省しているので、キーバインディングを保証する必要はありませんが、必要なときに便利です( 必須のxkcdリファレンス )。
    私の個人的な見解では、タイピングの障害がない限りEmacsが最終的に勝つと思います(それでもEmacsを構成して、キーシーケンスのみを要求し、 Ctrl+文字)。ホームローキーはいいですが、モードを切り替えなければならないので、多くの場合、それほど大きな勝利にはなりません。 VimがEmacsよりも効率的に大幅にできることはないと思いますが、逆は真です。

  • カスタマイズ可能性:両方のエディターはプログラム可能であり、両方に利用可能なパッケージの広範な本体があります。ただし、Vimはマクロ言語を備えたエディターです。 Emacsは、LISPで書かれたエディターで、いくつかのアドホックプリミティブが含まれています。 Emacsは、作者が思いもしなかった何かを行おうとすると、見事に勝利します。これは毎日起こるわけではありませんが、何年にもわたって蓄積されます。

  • エディター以上のもの:Vimはエディターです。 Emacsは単なるエディターではありません。IDE、ファイルマネージャー、ターミナルエミュレーター、Webブラウザー、メールクライアント、ニュースクライアントなどでもあります。それが良いことでも悪いことでも、議論の的となります。ただし、Emacsを単なるエディターとして使用できます(上記の「機能拡張」を参照)。

  • IDEとして:VimとEmacsはどちらも多くのプログラミング言語やその他のテキスト形式をサポートしています。構文の色分けや自動インデントなどの基本的な機能に加えて、どちらにも高度なIDEコードやドキュメントの相互参照ルックアップなどの機能、挿入とリファクタリングの支援、バージョン管理の統合、およびコンパイルして最初のエラーにジャンプします。

    EmacsがVimよりも明らかに優れている1つのドメインは、asynchronousサブプロセスとの相互作用です。これは、長いコンパイルを開始し、コンパイラーがチャーンしているときに同じエディターインスタンス内で別のことを実行したい場合です。あるいは、 Read-eval-print loop とやり取りしたい場合— Emacsはこれで本当に輝きますが、Vimが提供する不器用なハックしかありません。それにもかかわらず、vimの新しいフォーク Neovim はこれを修正し、標準のvimに実装されていない他のさまざまなバグ修正を実装したことが証明されました。

私はそれぞれの主な利点であると私が思うことを投稿します:


Emacsには、ファイルシステムの閲覧やバージョン管理の変更など、漠然とテキストエディターに関連するタスクを実行できる拡張機能と、RSSフィードの読み取りなど、テキストエディターに関連しない拡張機能があります。単なるテキストエディタではなく環境が必要な場合は、EmacsがVimよりも優れています。また、Emacsの方が学習しやすいと思います。

Editor learning curve comic

特に、初心者のEmacsユーザーは、初心者のVimユーザーよりも速くなると思います


一方、Vimは間違いなく高速です。これは議論の核心部分のようですが、私の意見では、コンテストはまったくありません。私自身は流暢なEmacsユーザーだと思います。私が知っている、Vimについて同等の知識を持っている2人の人には、私はマッチしません。問題は、Vimを十分に習得して高速である人の数が信じられないほど少ないことです(私が定期的にVimを使用する30人ほどの人のうち、1人だけが並外れて優れていると思います)。 可能なスピードゲインと実際のスピードゲインの間に大きなギャップがありますあなたが達成する; Emacsユーザーは、Vimユーザーの99%とほぼ同じ速さであり、(Emacsセクションで述べたように)Emacsユーザーの開始は、Vimユーザーの開始よりもおそらく高速です。

272
Michael Mrozek

すべてのUNIXシステム(またはほとんど)でviを利用できますが、他のエディタについてこれを言うことはできません。これが、imoがviに慣れ親しむ最大の理由です(「vim」ではなく「vi」に注意してください)。 Emacsがデフォルトのインストールで利用できるのを見たことがありません。

Emacsを使用しないと言っているわけではありません。これがVimを使用する唯一の理由ですが、自分のものではないUnixシステムを使用できるようにしたい場合... viはユニバーサルの一部です言語。

83
xenoterracide

どちらも素晴らしいと思います。私はどちらかがあなたが想像できるほとんどすべてを行うことができると思います、そしてそれらは両方とも非常にカスタマイズ可能です、それであなたがそれらをカスタマイズすることを終えるときまで、それらは両方ともちょうど彼らが彼らが望むようになりたいものであり、それ以上でもそれ以下でもありません。

Emacsは、ユーザーインターフェイスの使いやすさと一貫性のISO/IEC標準に少し近い(ただし、まだ満たされていません)ことで私に際立っています。そのため、そのvimの「本能」と同じくらい多くのトリックを果たしていません。他のプログラムと連携して開発した本能の存続期間は、逆効果にはなりません。

Vimは完全に異なるモデルであり、多くの点で、Cntrl/Altシーケンスにはるかに依存していない限り、それ自体が優れています。代わりに、そのモードのみに依存しているため、ホーム行とタイピングに苦労することはありません。もっと早く。しかし、vimは事実上一意であり、非常に変わった付随ソフトウェア(Vimperator、Jumanji/Zathuraなど)をインストールしない限り、vimを使用して開発した本能は他のプログラムにクロスオーバーせず、その逆も同様です。そうは言っても、私は自分自身でvimに落ち着きました。どちらかを習得するのは難しいので、遅かれ早かれどちらかで解決する必要があります。

24
frabjous

私は両方を定期的に使用しています。私はEmacsを「ライブイン」エディターと見なしていますが、Vimを使用すると、1回限りの迅速なタスクを実行できます。表面的には、EmacsはVimよりもはるかに肥大化しているため、Vimのように「起動」するのはそれほど便利ではありませんが、一方から他方へのユーザーインターフェイスの哲学がこのパラダイムをサポートしていることもわかりました。 Emacsは、ユーザーを内部に留めておくためにはるかに構築されており、物事を快適で快適なものにするので、vimははるかに「Unixy」であり、それ自体がより優れたツールベルトの一部と見なされます。

バッキービット に大きく依存しているため、多くの人々がEmacsから逃げ出しますが、これは私にとってかなり愚かな理由です。 EmacsがVimに対して持っている本当の力はカスタマイズ可能であり、Viperなどの力があれば、これは本当に問題ではありません。確かにVim-Scriptは独自のレベルのカスタマイズを提供します。たとえば、お気に入りのプログラミング言語に適切な構文強調表示機能が提供されていない場合は、間違いなくそれを調理できますが、Emacsは最終的に自己ホスティングLISPマシンであり、最後に、あなたはそれを使って、はるかに多くのことをすることができます。いくつか例を挙げると、Vimには gnusorg-mode などのツールはありません。簡単に言うと、Emacsは単なるエディターではなく、実質的にはありふれたオペレーティングシステムです。

テキストを操作するために、私はそれらがまったく同じだと思います。

21
Eli Frey

私はかなりの数年をemacsとXEmacsを使用して過ごし、その後vimに移ったので、私の$ 0.02の価値を投入します。公平を期すために、私は実際には1990年から1992年頃にかなりviを使用していたので、そのユーザーインターフェイスに精通していました。

Emacs

  • Emacsは、たまたまエディタを作成するために使用されたLISPシステムであると説明されており、これには真実の粒があります。環境を理解するために時間をかけたい場合は、elispに必要なほぼすべてのものを実装できます。そんなによく知ることができたとは言えないけど、時々フリガをやっていた。 EmacsとXemacsはこのレベルでは完全に互換性がないため、サードパーティのスクリプトは一方では実行できても、もう一方では実行できない可能性があります。

  • RMSと他の著名なEmacsハッカーは、Bill Joy、Bram Moolenaar、その他のさまざまな著名人がまだいるOOSの問題のため、プログラミングを辞任しなければならなかったことが確認されています。Emacsはあなたの小指にハード。

  • Emacsはviよりもはるかにカトリックのシステムであり、 software envelopment の標準的な例と見なされています。 Netscapeとともに、これはこの法則を証明するための jwz's 貢献の1つです。

かつてxemacsで行ったユニークなことの1つは、それをマシンで実行し、同じ実行中のインスタンスの同じバッファーに対して、別の部屋のxterminal(実際には古い再利用されたSun 3/60)でxセッションを開くことでした。

長所:拡張性があり、他の人に知られているどのエディタよりも強力で、ほとんどすべての主要なフリーソフトウェアプログラミングツールとの統合が成熟しています。

短所:人間工学に疑問があるため、elispは習得が容易ではありません。

Vim

Disclamer-約10年前にemacsからvimに移行しましたが、WindowsとUnix/Linuxベースのシステムでは習慣的にvimを使用しています。

  • Viとその子孫には、編集作業を自動化するための非常に優れたキーボードマクロ機能があります。 vimのスクリプト機能はelispほど洗練されていませんが、Python、Tcl、Perlなどのシステムをサポートしてビルドできます。 vim用のスクリプト(.vimrcファイル以外)をたまに書きました。

  • Vimはemacsよりもフットプリントが小さいですが、これは最近大した問題ではありません。

  • Vimのドキュメントとオンラインヘルプはかなり優れています。 Emacsには非常に優れたオンラインドキュメントがありますが、vimほど包括的ではないと思います。

  • Vimはviの風変わりなモーダルユーザーインターフェイスを継承しますが、挿入モードで移動できるため、今ではモドレスエディターのように振る舞うことができます。 Windowsでは、Windowsアプリケーションとまったく同じように動作します。

長所:優れたキーボードマクロ機能、ほぼ間違いなく優れた拡張性とスクリプトですが、emacsほどではありません。 Vimまたはviから派生したエディターは、すべてではないにしても、ほとんどのUNIXまたは汎用のLinuxディストリビューションで標準です。間違いなくより良い人間工学。

短所:モーダルユーザーインターフェイスは、Windows UIに慣れているユーザーにとっては奇妙に感じられます。最近のvimの問題は少なくなっています。

私は通常Vimを使用しますが、どちらも優れたエディターです。

Viの使い方を学ぶのは厄介でしたが、私はそれを経験し、好きになることを学びました。一番イライラしたのは、Caps Lockキーがオンのときでした。 gVimで試すこともできますが、viとEmacsの最大の利点の1つは、キーボードに手を触れたまま、きちんとしたことができることです。gVimは、マウスを使い続ける可能性があります。 (ローグライクゲームを同時にプレイすることを学ぶと、カーソル移動キーを使って練習できましたが、ドキュメント内で斜めに移動しようとすることがあります。)

Emacsはおそらくもっと親しみやすいです。それはモードレスであり、Caps Lockキーを押して自分を台無しにするつもりはありません。 Ctrlキーを押しながら文字を入力してエディタを制御するという考えは、現代のパワーユーザーにとってあまりに外見的ではありませんが、一般的なWindows/Mac OS Xユーザーにとっては、実際の操作はワイルドで恣意的です。繰り返しになりますが、マウスを使用できるバージョンでは、長期的にはほとんどメリットがありません。

どちらも、効果的に使用するにはある程度の専門知識が必要です。たとえば、メモ帳とは異なり、ただ座って編集することはできません。

どちらも構成可能ですが、私のお金のために、同じLISPで拡張機能を作成するために、エディターが記述されているため、エクスペリエンスがよりスムーズになります。 (通常配布されているEmacsは、実際にはエディタではありません。これは、エディタを含む多くの事前に記述されたソフトウェアを備えた、テキスト処理用に調整されたLISP環境です。より良いエディター。」)

私は通常、Vimを使用します。これは、広範囲にわたるトレーニングの後で、それがより簡単に感じるからです。これは、ホームシステムの近くで1本の指を使用して膨大な数のコマンドを使用できるモードシステムの利点、または編集者に非常に当てはまる「赤ちゃんアヒル症候群」が原因である可能性があります。それに。

どちらを使用しても問題はありません。

15
David Thornley

上記の「vimはモーダルです」というコメントは間違っていると思います。 Vimにはコマンドがあります。 「11aNowはすべての善良な人のための時間です。」を実行して、ファイルに11行の同一の新しいテキスト行を追加できます。これはコマンドではなく、モードです。しかし、実際にはVimコマンドとEmacsコマンドでは非常に基本的な違いがあります。私がそれを説明できるかどうかは完全にはわかりませんが、Eric Fischerは10年以上前にTTYドライバーにEmacsスタイルのライン編集を組み込み、それについて発表された論文を入手しました。

http://www.usenix.org/event/usenix99/full_papers/fischer/fischer.pdf

彼は、Emacsスタイルの行編集がviスタイルとは根本的に異なることを発見しました。

したがって、Emacsには、他の多くのもの(bash、gnuplot、zsh、ksh、頭の上では思いつかない他のもの)がすべてEmacsスタイルの行編集を実装することになるという利点があります。

私はいつもVimを個人的に使用しています。私は非常にまれなEmacsユーザーです。

9
Bruce Ediger

明示的に述べられていないので、少し変更されたEmacsディストリビューションよりも優れたプログラミング環境(ボックス内のLISP、SLIMEなど)はありません。私のすべてのプログラミングニーズ(99%)はVim内から処理されますが、私が作成するすべてのLISPライブラリおよびルーチンでは、Emacsを起動して何か生産的な作業を行う必要があります。

9
Shamster

Vi/vimを使用しない主な理由は、モーダルであることです。私がviを使用する主な理由は、viがほとんどどこでも利用できるということです。

私はVim/gVimを使用しています。

以前はEmacsを使用していましたが、gVimは一般的に遅いマシンでより高速に動作することがわかりました。さらに、POSIXの要件により、viはほとんどどこでも利用できます。

VimやgVimを使うときはマウスをよく使うので、サポートは素晴らしいと思います。

Emacsを使い始めたのは、初心者のユーザーにとって使いやすかったためです。何らかの理由でnanoを使用するとエラーが発生しやすくなることがわかりました。ある時点で、viを使用するほうがはるかに快適であることに気付きました。

現在、それは混合です。私もEclipseとgeditを頻繁に使用しています。ただし、Vimは今でも私のお気に入りで、最もよく使用されているエディターです。

8
polemon

私はgVimとEmacsの両方を十分に使用して生産性を上げていますが、どちらも専門家ではありません。私が確信を持って言えることの1つは、VimとgVimが私のWindows 7ラップトップ(私は仕事で使用しなければならない)で高速に実行できることです。 Windowsボックス上のEmacsは、キーボード入力を受け入れ続けている間でも、Rushのキーボードバッファーに蓄積されたすべてを吐き出す前に、最大1分間「一時停止」して応答しなくなるという奇妙な癖があります。これはMac OSまたはLinuxでは発生しません。それでも、ほとんどの場合、すべてのプラットフォームでVimまたはgVimを使用しているので、停止して、使用しているエディターを調整する必要はありません。とはいえ、純粋に* nixの環境では、モードレス編集のほうが少し自然だと思うので、おそらくEmacsを使い続けるでしょう。

結論:私の意見では、どちらのエディターもテキスト編集のあらゆるニーズに対応できるほど強力です。選択は、実際の考慮事項(プラットフォーム実装の詳細など)と作業スタイルに基づく必要があります。

7
Wing Flanagan

EmacsとVimの主な違いは人間工学です。ご存知のように、手根管症候群、CTSがあります。あなたがCTSを持っていてCTSを挑発しているなら、Emacsは非常に「危険」です。 Vim-違います。多くの場所でこの違いについて読むことができます。たとえば、Vimでは1本の指でのみテキストを編集できます。 Emacsでは-できません:)

3
Paul