EmacsとVimの違い


685

EmacsとVimの実際的な違いは何ですか?どちらかを学びたいと思っていますが、それぞれの学習曲線が高く、決定することができません。私はこのタイプのエディターを使用したことがない(私は常にIDEを使用してきた)ので、初心者を助ける何かはプラスです。


炎の戦争が始まる前に、私はどちらが良いかを尋ねているのではなく、2つの違いを尋ねています。客観的な比較をお願いします。


3
Mac(OSX)を使用している場合、多くの基本的なemacsカーソル移動コマンドがほとんどどこでも機能することがわかります。(たとえば、私はこのコメントをWebページに入力している場合、ここで機能します。)したがって、Macユーザーの場合、少なくとも次のemacsのサブセットを学習すると、システム全体にメリットがあります。^ A ^ B ^ D ^ E ^ F ^ K ^ L ^ N ^ O ^ P ^ T ^ V ^ Y
Matt

2
@JamesAnderson:私の経験ではそれは逆です。2.5年間vimを使用していて、その後emacsに切り替えました。emacsの人々はほとんど気にしません...「あなたのために働くものは何でも」。ここでは何です,salespitch#emacsで述べている<fsbot> We aren't gonna lie. Emacs sucks. Some of us tolerate it, but we can't tell you if YOU'LL be able to. Try it and make up your own mind.
サイレックス

2
Emacsは間違いなく優れたオペレーティングシステムですが、適切なエディタしかありません。
technical_difficulty

1
@ JimmyM.G.Limいいえ、システムの現在のポケットベルを使用します。実行するとPAGER=cat man、男はテキストを画面に直接表示します。
SSアン

1
これが最初に尋ねられたとき、「主に意見に基づく」警察は存在しなかったと思います;-)ああ、もっと簡単な時間...私が言う1つのことは、一度、emacsの本を読んで試してみて、爆弾でした。3週間の休暇の後、すべてのキー入力を完全に忘れてしまったことがわかりました。一方、vimは実際には私のものではありませんが、必要なときに、だけを使用して確実に半機能させることができますi, esc, wq
JL Peyret

回答:


491

(以下のテキストは私の意見です。事実または侮辱と見なしてはいけません)

Emacsを使用すると、24時間年中無休でプログラム内に常駐し、ほとんどすべての作業をそこから行うことができます。独自の拡張機能を作成し、それをメモ作成、整理、ゲーム、プログラミング、シェルアクセス、ファイルアクセス、音楽の再生、Webブラウジングに使用します。あなたがそれに満足し、それからあなたはいつも新しいことを学ぶまでに数週間から数週間かかります。それにアクセスできず、常に設定を変更するとイライラするでしょう。他の人々のemacsバージョンを簡単に使用できなくなり、インストールされるだけではありません。Lispを使用しています。あなたはそれを何にでもなりたいものにすることができます。(何でも)

Vimでは、ほとんどの場合、プリインストールされています。これは速い。ファイルを開いて簡単な編集を行ってから終了します。他の人のマシンを使用している場合は、基本設定で作業できます。それほど編集可能ではありませんが、ほとんどのテキストエディタよりもはるかに優れています。ほとんどの場合、入力ではなく読み取り/編集を行っていることを認識し、その部分を高速化します。あなたはemacs小指に苦しむことはありません。それはそれほど腹立たしいことではありません。学ぶ方が簡単です。

あなたが選択したプログラムで多くの時間を費やすつもりでない限り、私は毎日Emacsを毎日使用しています(そしてそれを愛しています)が、vimを選択します


153
Wrtが利用できない場合:.emacsと.emacs.dをソース管理リポジトリに配置することをお勧めします。したがって、完璧なEmacsセットアップを取得することは、単にチェックアウトの問題です。
ダンカンベイン

7
emacsとvimはどちらも、上で説明した問題の影響を受ける可能性があります。どちらも、バニラフォームと比較して認識できない程度まで構成できます。また、私は2番目にvcsを使用します。
Alexej Magura 14

11
@Raduはどのシステムに取り組んでいますか?2010年代には、実際のシステムvivimエイリアスではなく実在するシステムを見たことがありません。
ELLIOTTCABLE 2015

9
たぶんVimはEmacsよりも習得が簡単ですが、Vimを初めて使用するときは、これまでの経験がないと信じられないほど混乱します。私はそれを閉じることができるようにするためにグーグルを使わなければならなかった、そしてそれを正しくするために数回試みなければならなかった。
HelloGoodbye 2015年

9
VIMの「プリインストールされた」特典を過小評価しないでください。どこにいてもほとんどいつでも利用でき、ほとんどカスタマイズせずに使用できます。私はssh他のマシンにingするときにいつもそれを使います。これが私が最初にそれを学んだ理由です。それは、友達がVIMを知っていて、私を助けることができるからです。(友達のサポートも過小評価しないでください!)
jvriesem

137

Vimはシェルではありません。そして、それはサブプロセスとうまく通信しません。これはほぼ仕様によるものですが、Emacsではこれらの要素が仕様に含まれています。これは、デバッガーやインタープリターを埋め込む(ある種のIDEを生成する)など、Vimでは難しいことを意味します。

また、Emacsのショートカットは主に修飾子を介してアクセスされ、明らかにVimインターフェースはモーダルとして有名であり、操作のために不合理な量の直接キーにアクセスできます。

Emacsは、プログラム可能な2つの唯一のエディターでしたが、Vimにはそのプログラマビリティに多くの奇妙なレベルがあり、PythonとRubyのバインディングが追加されています(さらに、忘れています)、Vimもほとんどの方法でプログラム可能ですあなたが気にするだろう。

私はVimを使用していますが、かなり満足しています。


6
小さな更新:Vimは、バージョン8.0と8.1からターミナルバッファーが導入されて以来、サブプロセスとの通信をより良くサポートしているため、emacsに少し近づいています。
DarkWiiPlayer 2018

110

Vim:

  • シンプルなエディターとして優れている(シンプルなタスクに必要なキーが少ない)
  • よりアクティブなスクリプトコミュニティ-内部言語:vimscript
  • スクリプト、プラグイン、配色などの1つの中央リポジトリ
  • Python、Rubyでも拡張可能
  • ポータブルにすることができます(emacsにはいくつかの問題があります)

Emacs:

  • デフォルトでは非モーダル(今日のほとんどの編集者はこのアプローチを採用しています)。vimの動作をエミュレートするevil-modeがありますが。
  • それを拡張するためのより強力な言語(elispは本格的な言語であり、emacsではすべてを実質的に再定義できますが、vimではエディターの組み込み関数を再定義できません。欠点としては、vimscriptは現在の動的言語と比較的似ていますが、elispあまり似ていません)
  • より拡張可能
  • GNUツールの優れたサポート(それらの束)

個人的には、私はvimを好む-それは小さい、それがすべきことをする、そして私が本格的なIDEを望むとき、私はVSを開く。EmacsがIDE(または私はOS)になりたいエディタであるというアプローチは、完全ではありませんが、私見では時代遅れです。昔はメールクライアント、ftpクライアント、テトリスなどがありましたが、1つのパッケージ(emacs)に含まれていないことには意味がありました...今日では、もう意味がありません。

ただし、どちらもプログラマーとスーパーユーザーコミュニティのユーザーの間での宗教的な議論のトピックであり、その点では、どちらも(同じ文/質問で)接触した場合に炎上戦争を開始するのに優れています。


47
「編集者として優れている」というのはかなりあいまいです。その理由を知りたいのですが。
アレン

41
@アレン-曖昧なものは何ですか?vimとemacsの両方のユーザーに会うことはめったにありません。筋金入りのemacsユーザーでさえ、通常それを事実として受け入れます。両方のエディターを使用しましたか?vimがテキスト編集機能の面で有利であることは比較的明白だと思います。
ルーク

36
私は誰もがそれを事実として受け入れると信じています。emacsとプレーンVIの両方の長いユーザーとして、私はvimを数回使用しましたが、メジャーおよびマイナーモードのはるかに幅広い選択以外に理由がない場合は、「エディターとしての方が優れている」ということを心に留めておく必要があります。入力するときに役立ちます。
Kendall Helmstetter Gelner、

61
テキストの操作に必要な手や指の動きは、emacsよりも少ないため、Vimはエディターとして優れています。少なくともそれは私の経験です。
StackedCrooked 2009

7
しかしそれはさておき、vimは編集に適しています:行番号、ビジュアルモード、操作wint1.kaist.ac.kr/files/attach/images/59/450/…。FCOL、私は一度に1行スクロールするだけでemacsを取得するのに苦労しました。
ルーク

52

両方の編集者の客観的な分析を探している場合は、それらの起源とそれぞれの設計の背後にある哲学を見てください。どちらがより適しているかを考えて、それを学んでください(IDEに対する真のユーティリティを発見するまでに時間がかかるので、学んで学んでください)。 Viを使用した表示編集の概要は、Bill JoyとMark Hortonによって書かれ、さまざまなキーストロークに対してモーダルデザインと理論的根拠を選択する理由を説明しています(CTRL-W + W(次のWウィンドウに切り替わり、CTRL W + CTRL Wでも同じですが、CTRLキーを長押しした場合に備えて。

これはEmacsタイムラインへのリンクで、Multics Emacsペーパーへの参照があります。これはEmacsに関するRMSの論文です。ここでは、プログラム可能なテキストエディタに重点が置かれていることを確認しています(1981年以前にさかのぼります)。

私はemacsの論文を読んでいませんが、Bill Joyのviの論文を数回読んだことがあります。どちらも古いですが、それでも哲学を理解し、現在のツール(vim 7.xまたはemacs 25?)を使用することを選択できます。

編集:私はこれらの両方の論文を読むには忍耐力と想像力が必要であることを言及するのを忘れていました。しかし、それは価値があります。


43
  1. Vimは常にEmacsよりも起動が高速でした。どのマシンでも、Vimの標準インストールはEmacsの標準インストールよりも速く起動します。そして、どちらかを適度にカスタマイズした後でも、VimはEmacsよりも早く起動すると思います。

  2. その後、他の実用的な違いはEmacsのモードでした。XML、C / C ++ / Java /何でも、LaTeX、そしてあなたが考えることができる最も人気のある言語を編集するとき、彼らはあなたの人生を途方もなく簡単にします。長いセッションや作業のためにエディターを開いたままにしておく必要があります。

全体として、Vimは短時間で高速な編集作業を行うためにあなたを引き付けると言います。Emacsは長いセッションに飛び込むことを勧めます。


1
逆に、モードが人生を楽にするとは思いません。そしてラリー・テスラーも同じことを考えています。
Eliran Malka 14

2
Emacsのモードはコーディングにどのように役立ちますか?(私はそれが
初めて

4
ずっと前に、私は4つの理由でviからemacsに切り替えました:(a)ワンクリックで次のコンパイラエラー、(b)gdb統合、(c)grepおよびfind-grep 今、vimでこれらのことをすることは可能ですか?
zzz777

「Vimは常にEmacsよりも起動が高速でした」-emacsサーバーを実行し続けている場合、emacs-clientのターティングは非常に高速です。そのためのスクリプトがあり、すべてのマシンで(gitを使用して)複製しています。(私は実際にはvimも使用します。実際、それは常に私がどこにいるか、およびタスクが何であるかに依存します)
Jay

「Vimは常にEmacsよりも起動が速かった」-また、use-packageその:deferオプションを使用すると、Emacsはほとんどすぐに開きます。私はemacsclientの使用をあきらめました。
ジェイ

37

VIは常に利用可能であり、最も不自由なシングルユーザーモード、壊れたグラフィックス、キーマップなし、スローリンクマシンで実行されます。そのため、sysadminタスクのためだけに単純なファイルを編集する方法を知っておく価値があります。

Emacsはエディターの完全なユーザーインターフェイスです。マシンを起動したときにEmacsを起動し、マシンから離れないという考え方です。何千ものセッションが存在する可能性があります。

Emacsの機能を学ぶことは、GUIエディター/ IDEを使用したり、追加のタスクにpython / awk / etcなどを使用したりすることに比べて価値があるかどうかはあなた次第です。


2
私はこれらの理由でVIを知っていますが、最近では、少なくとも基本的なEMACSがインストールされていないUNIXシステムに遭遇することはほとんどなく、貧弱なシェル環境を許容できるようになっています。
Kendall Helmstetter Gelner、

3
または、busyboxをinitrdに詰め込み、起動デバイスの壊れたストレージドライバーをデバッグします。これにより、初期化プロセスの早い段階で、最初のramディスクだけが手元にあり、しかもエディターが残っています-vi。
smcameron 2009

2
viでしばらくすると、指は動きを認識しますが、実際のキーが何であるか思い出せません!
マーティンベケット

10
edそれは「常に利用可能であり、最も不自由なシングルユーザーモード、壊れたグラフィックス、キーマップなし、スローリンクマシンで実行される」と思っていました。待って、何年ですか?(ため息- ed、私はあなたのことを決して忘れません。)
belacqua

2
@Kendall:現在のUbuntu Linuxには、emacsがインストールされていません。
2011年

25

私は本格的なEmacsのファンですが、Emacsを知るずっと前からVIを知っていました。とはいえ、VIはいつでもどこでも利用できるため、すべての人にVIを学習させるようにしています。どちらでも問題はありません。


2
これは私の経験でもあります... EmacsまたはuEmacsは決して利用できませんでした。私の最初のエディターは(Amigaの)uEmacsでしたが、vimを習得して以来、持ち歩くにはあまりにも便利でした。
Marius

これは基本的に私の経験でもあります。Viはどこにでもあり、一般にUNIXシステムのデフォルトの$ EDITORとしてインストールされるため、UNIXで作業している場合はそれを知っておく必要があります。とはいえ、私は毎日テキスト編集にemacsを使用していて、大好きです。
ファーギー

14

答えはすでに選択されているようですが、私にとって大きな違いは常にモーダルと非モーダルです。Vimはモーダルです。つまり、特定の使用モードのセットに基づいて最適化を行います。少なくともそれは私がいつもそれを見てきた方法です。これにより、コードを入力する作業領域ではなく、実際に環境でテキストを操作するように指示するため、Vimの使用が別の体験になります。これが、Vimであなたが本当に言語を学んでいるようなことを人々が言う理由です。:wqと:s / foo / barはすべて、テキストを編集して読み取るシェルのような環境の一部です。

一方、Emacsはほとんどのエディター/ワープロなどに非常に近いです。今日見ます。高度にプログラム可能なインターフェイスを備えたワークスペースがあります。そのため、電子メール、irc、シェルなどが表示されます。プログラマーは、「自分が使用している行番号を取得し、その情報を使用して何かを行う」と考えるのは簡単です。エディターを終了したいという欲求は少なくなります。なぜなら、終了して他のアプリや言語を開いてテキストに対して何かをする代わりに、エディターのスコープ内でこれらのことができるEmacsがあるからです。

2つのアイデアは必ずしも対照的ではありませんが、2つの異なる焦点を明らかにしているだけです。個人的にはEmacsを使っていますが、Vimをよく知っていて、どちらを選んでもかまわないと正直に言うことができる人を見てきました。私は最初にVimを試しましたが、Emacsは私に固執してしまいました。何を選択しても、Vimは常に利用できるため、少なくともある程度はVimに習熟している必要があります。


13

私はviから始めて、emacs、それからvimに行きました。私はEmacsを試して、過去5年間に何が変更されたかを確認しようと考えてきました。(IDEと言えば、しばらくの間日食に入っていましたが、ターミナルウィンドウでMacと(夫の)Linuxボックスを接続することを好みます)。

最近、カットアンドペーストが気になっています。Vimでのカットアンドペーストは、Emacs、IIRCよりも多くの手順を実行します。そして、ブラウザからターミナルウィンドウへの貼り付けは、私が気に入らない気の利いたことをしない限り不愉快なことなので、奇妙なインデントに我慢しています。emacsで複数のファイルを編集する方が簡単だったと思います。画面上に両方ある場合は、少なくとも1つのファイルから次のファイルにジャンプします。

私はコーディングの仕事に行きたいだけなので、viやemacsの派手な機能を試していません。私が必要なのは、きれいな色と適切なタブからスペースへの変換(特にpythonで重要)だけです。

すべてを使用する:wqかどうか、またはCtrl-x Ctrl-s(IIRC)を使用してファイルを保存するかどうかに依存します。

@mgbは正しかった。私は、Debianディストリビューションで1か月か2か月前に何かを修正するために最低限のLinuxを使用しています。viが利用可能な唯一のエディターでした。


1
これはまだ完全ではありませんが、端子の貼り付けを混乱させるすべての設定を調整するよりもはるかに簡単です。を使用し:set pasteてテキストを貼り付けると、完了したら:set nopaste通常モードに戻ります。:set pastetoggle=<F2>選択したキーの組み合わせを使用してこれを切り替えるコマンドもあります。
hbar

インデントモードで^R^P+は、クリップボードから貼り付けて現在のインデントを維持することができます。 ^R^O+インデントを削除します。 ^R+入力したかのように挿入します。 :help i_^R^P詳細については。
2011年

3
カットアンドペーストがに比べて簡単であるとは思えませんyyp。また、ここを参照して、さまざまなウィンドウとの間で切り貼りを行ってください。stackoverflow.com
a/8757876/

@puk-Ctrl-k(ヤンク)/ Ctr-y(プット)は、emacsと同じくらい簡単です。Emacsには複数のレジスター(az)もあり、テキストまたは現在位置のいずれかに保存できます...
Kendall Helmstetter Gelner '13

3
vimのは、同様に複数のレジスタを持っている
TamaMcGlinn

12

日常的なレベルには大きな違いがあります-Vim(または任意のviバリアント)は本質的にモーダル(編集できないコマンドモードに入る)であり、Emacs(他のほとんどのエディターと同様)はそうではありません。

もちろん、メニューなどを使用すると、最初は実際にVimでコマンドモードに入る必要はありません。しかし、Vimのパワーのごく一部を使用することもできます。それがVim / Emacsの議論の中心です。

個人的には、Emacsの方がはるかに拡張可能だと思います。あなたは多くのことのためのElispパッケージを見つけることができます。

しかし、なぜ従来のIDEでこれらの1つを学ぶことを考えているのか、私は興味があります。あなたはこれらのうちのどれを学びたいのですか?


8
正直に言うと、それがその誇大広告に耐えられるかどうかを確認するためにそれを学びたいだけです。それらの両方がどれほど柔軟であるか、エキスパートがかなりクレイジーなことをするのを見てきました。それが学習曲線に値するかどうかを確認したいと思います。さらに、私のIDEはLispをサポートしていません。:)
サーシャチェディゴフ2009

3
うーん。問題は、Emacsが非常に多いことです...しかし、emacsを使用するためにIDEに残したのは、マクロの記録を使用して自動化する、一連の複雑な反復タスクです。たとえば、現在の単語または表現を取得して、それを「バッファ」にコピーし(カットアンドペーストは複数のみ可能です)、別のファイルに移動し、コピーした値を使用して一部のテキストを入力し、次に別のテキストを入力します。コピーされた値も同様に、カーソルを進めて位置を保存し、最初のバッファーに再び戻ります...次に、元のファイルの次の行に対してプロセスを繰り返します。
Kendall Helmstetter Gelner、

1
私はviとEmacsの両方でマクロを頻繁に使用しています。Emacsには、マクロを使用しているときにアクセスするメソッドの選択肢がはるかに広いという事実と、たとえば検索語の途中であっても、どこでもカットバッファーを使用できるという事実が欠けています。正規表現に基づいて式の1つの単語を選択し、見つかった用語を取得し、その用語の別のドキュメントを検索して、その置換を行うマクロをどのように記述しますか?
Kendall Helmstetter Gelner、

2
@ kendall-helmstetter-gelner-vimscriptまたはvimがバインディングしている言語(ruby / vim / tcl / perlなど)で可能です。スクリプト言語からvimのすべての関数とエディターバッファーにアクセスできます。
SEGY

1
それは印象的ですが、Emacsで同じことを行うには、複雑なマクロを形成するために手動で書き出す代わりに、すでに知っているキーストロークを使用するだけで済みます。emacsを知っている人なら誰でもそのタスクを実行するマクロを作成するのは簡単ですが、かなりの量の調査なしにレイアウトしたマクロを構築できるVIユーザーは多くないと思います。
Kendall Helmstetter Gelner 2011

11

どちらのエディターについても多くのことが言われていますが、追加するのは5ペンスだけです。どちらのエディターも素晴らしく、どちらでも問題はありません。

私は約15年間vi / vimユーザーです。私はemacsへの変換を数回試しましたが、vipは実際にはlisp拡張機能を記述したり何かをインストールしたりする必要なく、箱から出してすぐに欠けていることを実行できることを発見していました。

私にとって、vimは環境/ OSを使用させるエディターの主な違いですが、emacsはそれをカプセル化または置き換えようとします。たとえば、vimで:r!dateを使用してテキストに日付を追加したり、:r!cal 1 2014でカレンダーを追加したり、バッファーのコンテンツを16進数バージョンのコンテンツに置き換えたりすることもできます。例えば。:%!xxd、16進数を編集してから:%!xxd -r、および組み込みのgrepやsedなどの他の多くの用途で戻ります。

もう1つの例は、jqおよびでの使用gronです。例えば。json blobをエディターに貼り付け、変換のために実行します。

:r!curl -s http://interesting/api/v1/get/stuff
:%!gron | grep 'interesting' | gron -u

または

:%!jq .path.to.stuff

上記パイプコマンドの各々は、を介して別々に実行することができ:%!<command>、ここで、%すべてのドキュメントの手段だけでなく、選択、選択されたライン、などここGRON上で実行することができるoutputように使用することができるjq経路。

また、EXバッチ編集機能も利用できます。特定の単語の置き換え、コードの再フォーマット、dos-> unix改行文字の変換、一度に100ファイルなどでマクロを実行します。exで簡単にできます。emacsに似たようなものがあるかどうかはわかりません。

言い換えると、IMHO vimはUNIXの哲学に近づいています。一般的にはシンプルで小型ですが、OSとツールを知っている場合は、VIMが提供する以上のものは必要ありません。私はしません。

viがunix / linuxシステムの事実上の標準であることに加えて、なぜ同じことを行う2つのツールの使用を学ぶのか。もちろん、いくつかのシステムはmgまたはそれに類似したものを提供しますが、すべてを提供しているわけではありません。Unix + Vi <3。

まあ、ちょうど私の5ペンス。


8
「VimはUNIXの哲学に近づいています。」-ここで、シェルから利用できるツールに関する哲学について話します。ただし、シェル自体は、組み込み、履歴、グロビング、プロセス制御、プログラミングなどの大きな集合体です。Emacsは明らかにUNIXシェルの哲学に近いものです。ツールを一緒に使用できる高度にカスタマイズ可能な環境を提供し、ユーザーが独自のコードスニペットを使用してツールセットを簡単に拡張できるようにします。emacsvimの両方 がUNIXの伝統に強く根付いていることがわかります。
Matt

1
ご意見ありがとうございます。 ここで編集者戦争を始めることは決して私の意図ではなく、emacsユーザーを怒らせることでもありませんでした。emacsに機能をカプセル化する複雑な拡張機能を作成するのではなく、シェルから(またはエディター内から)実際のコマンドを呼び出す方が簡単で移植性が高いため、環境が時間とともに肥大化する傾向があります。ただし、これらの拡張機能はユーザー設定に依存し、実行できますが、いずれのエディターによっても強制されません。したがって、UNIXの伝統におけるemacsおよびvi(m)の位置については、あなたに同意してください。
Alex

1
非戦争を続けるために、私はあなたのアナロジー「vimはよりUNIXツールのようなもの」に同意しなかったことを明らかにしました。この直感は「emacsはUNIXシェルのようなもの」で拡張できると思いました。:-)
Matt

@マット:アナロジーが好きです。それにアーメン。;)
Alex

2
emacsでは、言及したすべてのことを実行できますが、さらに多くのことを実行できます(たとえば、hexl-modeを使用すると、ASCIIプレビューを横にして、16進数でファイルを編集できます)。VIもかなりよく知っていますが、Emacsでマクロを作成する方がはるかに簡単で柔軟性があり、最新のVIM実装よりもはるかに簡単に実行できます。emacsはほとんどの場所にあり、実際のテキスト編集を強化できるため、それがそれを知る理由です。
Kendall Helmstetter Gelner 2014

10

私にとって、emacsの長所は、

  • tramp-modeを使用すると、ssh経由でリモートファイルを編集できます。ローカルファイルと同じように。
  • tramp-mode + dired =フル機能のsftpクライアント
  • あなたが必要とするあらゆる言語のサポート。
  • 端末エミュレーター(term-mode)が組み込まれているため、アプリケーションを切り替えなくてもコーディングを続けることができます。
  • lispを使用して変更できる拡張性。

11
FWIW:vimには最初の3つがほとんどあります(ただし、名前は異なります。「tramp-mode」はvimでは「netrw」です)。#4は一般的にバグと見なされ、vimユーザーの機能ではありません。#5は、「elisp」(これまでで最悪のlisp方言であり、Emacsを愛する友人が教えてくれます)をpython / mzscheme / perl / ruby​​ / tcl / vimscriptに置き換えると、vimでtrueになります。
ローレンスゴンサルベス2010

3
#4なぜバグなのかコメントできますか?
Hamza Yerlikaya、2011年

2
vimの組み込みシェルのConqueアドオンを確認してください。
2011年

9

私にとって、emacsにはより優れた開発ツールがあります(タグベースのツールだけでなく)。


9

ここで、「The Art of UNIX Programming」という本からの引用を申し上げます。

viとEmacsの両方を定期的に使用する多くの人々は、それらを別のものに使用する傾向があり、両方を知ることは価値があると思います。

一般に、viは小さなジョブに最適です。メールへの迅速な返信、システム構成の簡単な調整などです。これは、新しいシステム(またはネットワークを介したリモートシステム)を使用していて、Emacsカスタマイズファイルが手元にない場合に特に便利です。

Emacsは、複雑なタスクを処理し、複数のファイルを変更し、セッション中に他のプログラムからの結果を使用する必要がある拡張編集セッションのために独自に使用されます。コンソールでXを使用するプログラマー(これは最近のUnixで一般的です)は、ログイン時間の直後に大きなウィンドウでEmacsを起動し、それを永久に実行したままにするのが普通です。

ここで私が本当に強調したいのは:« 多くの人が両方を知ることは価値があると思います。»


これはおそらく時代遅れです。Emacsには、ブラウザ、SSH、ミュージックプレーヤー、および他のアプリの起動を停止する低速システムを組み込む機能があったので、1つのアプリを開いてそれを使い続けるほうがよいと思いましたか?
Nishant 2014年

すばらしいニュースは、古くなっていないということです。Emacsの外でブラウザ、ミュージックプレーヤーなどを使用できますが、Emacsが実際に提供するのは、これらすべての関数に対する同じ優れたインターフェースと、それらを拡張する1つの方法(Elisp)です。
Andriy Tykhonov 2014

私によるとEUPのEmacsの見方は時代遅れです。なぜなら、当時のEmacsは、irc、音楽、リモート編集など、一度に複数のことを実行できる単一のアプリを実行していたため、それを持っていることの利点でした。ただし、今日、これらの目的のそれぞれに優れたアプリケーションがあり、メモリも以前のように問題ではありません... EmacsでGmailを読んでいることを想像してみてください-Gmailのインターフェイスには組み込みのすばらしいキーバインディングがあり、Emacsメールクライアントにカスタマイズすると、かなりの時間がかかり、元のGmailインターフェースなどほど良くない場合があります。
Nishant 2014

古くない!:)
Andriy Tykhonov 2014

>しかし、今日、これらの目的ごとに優れたアプリケーションがありますはい、しかし、これらのアプリケーションはすべて、非常に異なるインターフェース、構成、ユーザーエクスペリエンスなどを備えています。しかし、Emacsは1つのツールです!たとえば、私はEmacsのキーバインディングが非常に好きで、ブラウザのシェルでそれらを使用しています。そして、少なくともいくつかのことがアプリケーション内で同じであるのは非常に良いことです
Andriy Tykhonov 2014

9

Emacsの利点

  • Emacsには、非モーダルインターフェイス(デフォルト)とモーダルインターフェイスの両方があります(たとえば、Evil、Viper、またはVimpulseを介してvimとviをエミュレートできます)。

  • 最も移植されたコンピュータープログラムの1つ。これは、ほとんどのUnixライクなシステム(Linux、さまざまなBSD、Solaris、AIX、IRIX、macOSなど)、MS-DOS、Microsoft Windows、AmigaOSなど、さまざまなオペレーティングシステムのテキストモードおよびグラフィカルユーザーインターフェイスで実行されます。およびOpenVMS。フリーとプロプライエタリの両方のUnixシステムは、オペレーティングシステムにバンドルされたEmacsを頻繁に提供します。

  • Emacsサーバーアーキテクチャでは、複数のクライアントが同じEmacsインスタンスに接続し、バッファーリストを共有し、リングを削除し、履歴やその他の状態を元に戻すことができます。

  • その場で文書化されたキーバインド、機能、およびコマンドを備えた広範なオンラインヘルプシステム。

  • 拡張可能でカスタマイズ可能なLispプログラミング言語バリアント(Emacs Lisp)。

  • 強力で拡張可能なファイルマネージャー(dired)、統合デバッガー、および開発とその他のツールの大規模なセット。

  • すべてのコマンドをEmacs Lisp関数にすることで、過去のアクションとドキュメントの状態にプログラムで応答することで、DWIM(Do What I Mean)へのコマンドが可能になります。たとえば、switch-or-split-windowコマンドは、存在する場合は別のウィンドウに切り替えたり、必要に応じて作成したりできます。これにより、ユーザーが覚えておく必要のあるキーストロークとコマンドの数が削減されます。

  • 「OS内のOS」。Emacs Lispを使用すると、編集機能をはるかに超えてEmacsをプログラミングできます。基本インストールでも、2つのWebブラウザー、ニュースリーダー、いくつかのメールエージェント、4つのIRCクライアント、ELIZAのバージョン、さまざまなゲームなど、数十のアプリケーションが含まれています。これらのアプリケーションはすべて、Emacsが動作する場所であればどこでも利用でき、同じユーザーインターフェイスと機能を備えています。バージョン24以降、Emacsにはパッケージマネージャーが含まれており、代替のWebブラウザー、EMMS(Emacsマルチメディアシステム)などを含む追加のアプリケーションを簡単にインストールできます。特定の言語/ライブラリの組み合わせやコーディングスタイルを対象としたものを含む、プログラミング用の多数のパッケージも利用できます。

viのようなエディターの利点

  • 編集コマンドは合成可能です
  • Viにはモーダルインターフェイスがあります(Emacsはこれをエミュレートできます)
  • 歴史的に、viはEmacsよりも速くロードされます。
  • UNIXの伝統に深く関わっていますが、UNIX、Linux、AmigaOS、DOS、Windows、Mac、BeOS、OpenVMS、IRIX、AIX、HP-UX、BSD、POSIX準拠など、標準Cライブラリを実装できるすべてのシステムで動作しますシステム。
  • VimスクリプトまたはPython、Ruby、Perl、Luaなどのインタープリター言語用のAPIを介して拡張およびカスタマイズ可能
  • ユビキタス。基本的に、すべてのUnixおよびUnixライクなシステムには、vi(またはバリアント)が組み込まれています。Vi(およびexではなくvim)は、POSIX標準で指定されています。
  • システムレスキュー環境、組み込みシステム(特に、busyboxを備えたシステム)、およびその他の制約された環境には、viは含まれますが、emacsは含まれません。

出典:https : //en.wikipedia.org/wiki/Editor_war


7

Spacemacsのおかげで、これら2つの違いを考える必要はありません。コミュニティ主導のEmacsディストリビューションです。

それが言ったように、

最高のエディターはEmacsでもvimでもありません。EmacsとVimです。

SpacemacsはEmacsとVimの両方の優れた機能を組み合わせているため、人生と仕事がずっと簡単になります。

下のスクリーンショットを参照してください。


(ソース:spacemacs.org


3
これは不正行為です...それはいくつかのファンキーな設定を持つemacsです;)実際にはかなり多くの設定
Alex

2
これは素晴らしいです-うまくいくとき。そうでない場合-elispとemacsをまだ知らない場合や、gitterチャットで主要な貢献者を見つけることができない場合-通常、行き詰まって運が悪い。(ただし、.emacsでmelpaディレクトリを削除すると問題が解決する場合があります...)
アーロンホール

1
必要以上に多くのものがありますが、Spacemacsには本当に満足しています。私のドットファイルはgithubにあるので、新しいマシンを簡単/高速にセットアップできます。悪(vimキーバインディング)を使用しているので、自分のspacemacs構成をインストールできないマシンで作業しなければならないときに十分なスキルがあります。
anr78 2017

6

vimではなくemacsを使用することを選択したときの最大の違いは、emacsに組み込まれたgdbサポートでした。Vimにはこれがデフォルトのディストリビューションに含まれておらず、gdbとvimを統合するためのプロジェクトはMacVimで作業するのがほぼ不可能でした


1
私が編集にVimを使用して、Xcodeのデバッグのために、それはあまり理想的ですが、なんとか...
StackedCrooked

4

りんごとオレンジのようです。どちらも異なるデザインと哲学を持っています。Vimはテキストエディターであり、Emacsはテキスト編集を行うLispインタープリターです。

私はVimを使用します。高速で滑らか、そしてテキストの操作が本当に得意だからです。それはあなたの開発タスクを本当に調和させることができる構成可能な自然なキーバインディングを持っています。Vimは、* nixという単純な哲学に基づいて、1つのこと、つまりテキスト操作を非常にうまく行うことができます。

bash / zshとtmuxを使用してVimを拡張することは通常簡単で、多くのことを学ぶことができます。私見これは良い学習曲線です。重要なことは、これらのものを統合してより大きな動作するアプリケーションを取得する方法を学ぶことです。Vimでは統合方法を学ぶ必要があります。統合方法は、指示しない限り自然には統合されないためです。私が使用するもう1つの価値のある拡張機能はTigです。ncursesベースのGitフロントエンド。Tigをサイレントで開くバインディングがあり、Gitに関するすべての処理をここで行います。

何が最適に機能するかを決定するのはエンドユーザー次第です。EmacsとVimが時の試練に耐えてきたことは、その価値の証拠です。結局、優れたプログラマーは、創造性を発揮するためにペンと紙だけを必要とします。優れたアルゴリズムは、それらを裏付けるために編集者を必要としません。両方を試して、あなたの生産性を向上させてください。そして、学ぶことや発見することがたくさんあるので、これらの両方のソフトウェアから設計パターンを学びましょう!



3

Emacsは本当にすべてを実行するプログラムであり、vi(m)は本当に単なるエディターです。テキストを編集している場合は、どちらも問題ありませんが、移動するためにホーム行から1つシフトして、コマンドモードで間違ったものを入力し続ける必要があるという理由だけで、emacsを好みます。私はあなたがその問題を抱えていなければ、vi(m)があなたのためのエディタかもしれません。


2

黄疸の視点:

vi(vimではない)は専門家の必需品です。どのような環境であっても、常に何らかの形でviを簡単に利用できます。emacsの場合はviにいることができ、vixの場合はunix-landでbashコマンドをビルドできます。

Microsquishでさえ、viをサポートする必要があります(ただし、非表示には十分対応していますが)。

私の意見では、忙しい環境で実践的な仕事をしている場合-開発環境や学界で1つの豪華なリグに限定された温室の花ではない場合-豪華なエディターについて多くを知ることは仕事のハンディキャップです。vimやemacsの凝ったトリックをすべて学んだり、編集環境を思い通りに曲げるためのマクロをたくさん開発したりしないでください。これは、工場環境では正当化できないさまざまなマシンに参加するときに邪魔になる巨大な時間シンクです。

ビルジョイの論文を読んでください。これは、プレーンテキストを非常に高速に編集するための、非常に有能で、おそらく美しくさえあるエンジニアリングの練習です。パリトの規則がここに適用されます。果物の80%がバスケットの20%に入っています。プレーンテキストを非常に高速に編集することは編集能力の核心であり、それ以外はすべてオプションであり、時には害を及ぼします。


3
どの紙について話しているのですか。リンクでない場合でも、少なくとも名前を付けることができますか?
darkfeline 14

2
「MSでもviをサポートする必要があります。」これをバックアップできますか?
dodgethesteamroller 2014年

1

サイト間を頻繁に移動する場合、または本番システムへのログオンがジョブに含まれる場合は、vimが適しています。

すべての* nixマシンには、デフォルトでviがインストールされます。

ほとんどのsysdaminsは、デフォルトのシェルとしてkshを好みます。kshは、vi(またはemacs)コマンドのキーストロークを使用して、履歴を検索し、コマンドラインを編集します。

viをよく知らない場合、標準の構成でUNIXボックスにログインすると、重度の障害が発生します。

この理由だけで、私は通常の毎日のエディターとしてvimをお勧めします。私は、emacsファンが必要最低限​​のUNIXサーバー上の設定ファイルを修正しようとして髪を引き裂くのを見てきました。


1
bashの場合、デフォルトで使用されているではなく、で使用set -o viしてみてください。私はkshを使用したことがありませんが、同じかもしれません。.bashrcset -o emacs
sjas 2013

1

あなたの質問では、Lispでプログラミングすることを望んでいません!しかし、あなたがあなたの答えをコメントしているように、私はあなたが実際にLISPプログラミングインターフェースを望んでいることを理解しました。

その正確なタスクについては、Viを忘れてください。EmacsとLISPの統合は素晴らしいです!SLIMEを使用してください。次に、REPLとの素晴らしい統合が実現evalし、emacsバッファーで実行中のインタープリターに関数、バッファー、またはファイルを直接アクセスできるようになります。


1
はい、私はこれを認識していますが、適切なLispエディタを探しているのは、この質問をする理由ではありませんでした。これは単なる例です。回答ありがとうございます!
Sasha Chedygov

1

私は約2年間はspacemacsで、約1年間はneovimをプロダクション/研究環境で使用してきました。Spacemacsは、レイヤーなどのいくつかの優れた追加機能を備えたemacsです。neovimは、いくつかの追加機能を備えたvimのフォークです。

私は経験の点でどちらにも全く満足していません。そして、私はまだテキスト編集のニーズに対する長期的な解決策を探しています。

ここに簡単な比較があります:

  • Neovim、vim、emacs、spacemacsなど、これらすべてのエディターは、他のほとんどのエディターと比較して、より少ないリソースを消費します。

  • Neovim / vimはemacsよりわずかに高速で、特にspacemacsより高速です。

  • 編集経験に関して。emacsパッケージは優れていると簡単に言えます。それは、emacsのコアとよりよく調和するためだと思います。

  • Vimscriptは素晴らしく、Vimエコシステムにも確かに素晴らしいプロジェクトがあります。良い点は、これまでに見たほとんどのemacsプロジェクトよりも文書化されていることです。

  • どちらのパッケージも、使用しているパッケージによっては問題がある場合があります。Spacemacsはフリーズする傾向があり、neovimは恐ろしいエラーメッセージを表示する傾向があるので、そこで毒を選びます。

  • vimでのモーダル編集は直感的な概念ではありませんが、一度慣れると、それが必要になります。両方のエディターがそれを提供します。


1
「モーダル編集(...)いったん慣れてしまえば、何でもしたい」-それは興味深い。Emacsをevilモードで何年も使用し、モーダル編集に慣れていましたが、今度は非モーダルに戻りました...気分が良くなりました。これは、人だけでなく、コンテキスト/人生の時間/何にでも依存すると思います。味だと思います。:)
ジェイ

1
@Jay私は推測しますが、列の選択のようなもの、そして ":XX"でジャンプすることをお見逃しなく?
Kaan E.

Emacsの四角形の選択を使用することもあります。:xxの代わりに "Mg g XX"を実行します。キーストロークをいくつか追加しますが、行の右側に移動する必要はほとんどありません。通常、Emacsアプリケーション(デバッガーなど)を使用すると、正しい行に移動します。
ジェイ

0

キーストロークの実行::: vi編集では、入力されたキーの各順列が保持されます。これにより、決定ツリーにパスが作成され、コマンドが明確に識別されます。一方、Emacsコマンドは、入力されたキーを組み合わせて即座に実行されるため、ユーザーはコマンドを使用するかどうかを選択できます。

メモリ使用量とカスタマイズ可能性::: viはより小さくて高速なプログラムであり、カスタマイズの容量が制限されていますが、Emacsは起動に時間がかかり、より多くのメモリを必要とします。しかし、それは高度にカスタマイズ可能であり、本質的にテキスト編集用に設計されたLispプログラムの実行環境であるため、多数の機能が含まれています。


0

vimは便利なエディターでありvim filename、ファイルを開いて編集、保存、閉じるための単純なタイプです。

emacsは、エディタを装った「オペレーティングシステム」であり、evalコードを記述してその動作を変更し、必要に応じて拡張することができます。A modeemacsのオン/送信メールを受信するためには、オペレーティング・システム上の電子メールソフトウェアのようなものです。

設定ファイルを変更するなど、簡単な編集を行うときは、vimを使用します。

そうでなければ、私はemacsを離れることはありません。


0

主な違いはデザインのターゲットだと思います。VIMは、UNIX用の作業エディターです。EmacsはGNUとlispハッカーのためのものであり、いくつかの設計要素が混在しています。

私は自分のワークステーションでvimを使用していますが、emacsも大好きです。


0

私はEmacsのファンですが、他の開発者にVIを学ぶよう勧めています。

  1. VIを使用してemacsメイクファイルを編集できます。
  2. VIにはedコマンドが含まれており、すべてのUNIXユーザーはedとsedを知っている必要があります。

VIMがemacsよりも速く起動することについて、いくつかのコメントに気づきました。本当に気にするなら、emacsをサーバーモードで実行し、 'emacs'を 'emacsclient'にエイリアスしてください。クライアントは、肩の上のサーバーをタップして、編集するファイルを指示するだけなので、超高速です。MacOSXでは、emacsclientは33Kしかありませんが、emacsは287Mです。

最近のハードウェアでこれが必要かどうかはわかりません。MacBook Pro(2013 Retina)では、シェルから実行するとemacsがほぼ瞬時にロードされます。一時停止はまったく検出されません。Emacs.app(GUIバージョン)を実行すると、すべて3秒かかる場合があります。

私がemacsについて聞いたほとんどの不満は、emacsについて誤解している人々から来ているようです。1982年以来viとemacsの両方を使用してきたので、emacsがviよりもはるかに遅く読み込まれ、初期のUNIXボックスでほとんどの物理メモリを使用したときを覚えていますが、それはもはや当てはまりませんし、少なくとも15- 20年。

私が認める一つの不満は「emacs pinkie」です。私が若い頃、これはまったく気になりませんでした。58歳になった今、私の小指はControlキーに繰り返しアクセスしてemacsのコードを作成することに少し苦痛を感じています。これは、MacBook Proキーボードで特に当てはまります。Controlを右に1ポジション移動すると、「fn」キー用のスペースが確保されます。Controlが左下のキーである場合、それほど煩わしくはありません。


emacsを「ダンプ」することもできます。これは、基本的に、コンパイルしたelisp拡張機能のスナップショットを撮ることを意味します。Emacsはこの方法ではるかに速く起動しますが、どの拡張機能を含めるかを決定するのに少し時間がかかります。
Phil Harbison

さらに、emacsで「ハノイの塔」をプレイできます。なんてクールなの?:)
Phil Harbison

Re: "emacs小指"。HHKB Professionalのベースとなっている一部の古いキーボード(Sun Type 3/4など)では、コントロールは通常Caps Lockがある場所に配置されます。私はあなたが持っているようなemacsの経験はありませんが、私はすぐにホームローをコントロールすることに慣れました。私のすべてのキーボード(MacBook Proも)でその変更を加えたほどです。HHKBは、いくつかのさらなる改善、例えば、バックスペースがちょうど上記の入力を持ち、そして次の1にEscキー
martinweiss

@PhilHarbisonは「ダンプ」について詳しく説明できますか?
A_P

0

私は最初にvimのユーザーでしたが、次にemacsに切り替えてから、vimに切り替えました。今は再びemacsを試しています。

  • どちらも優れたエディターです。
  • どちらも今日は非常に拡張可能です
  • どちらにも優れたプラグインとコミュニティがあります

開発者は多くのことを入力しますが、ついにバッファとファイル内を移動することが最大の反復作業であるため、すばやく移動できるエディタが必要です。

emacsを実験する動機は、vimよりもCtrlが主導するキーバインドの方が速く、推論しやすいことです。

vimにはモードがあり、挿入モード、ビジュアルモード、通常モードがあります。何かを押したときに何が起きているかは、現在のモードによって異なり、編集へのステートフルなアプローチです。あなたは移動し、挿入モードに入り、編集し、挿入モードから抜け出し、再び移動します。ESCプレスなどを見逃すと、よく自分を失います。

emacsにはモードはありません。基本的に、ピンクでCtrlを押し、Cx Cf、Cx Cs、Cx Ccのようにキーストロークを入力します。Ctrlキーを放す必要があるキーバインドがあります。これは嫌いで、常にコントロールが押されたキーバインドに置き換えます。

emacsアプローチの方が考えてタイプする方が速いと思いますが、vimにはもう1つの強みがあります。そのコマンドは合成可能で、通常はフォーマットがあります。たとえば、行ddを削除するには、単語を削除するにはを使用できますdw。プラグインはその伐採を利用します。vim-surroundプラグインを使用すると、ds "(サラウンドの削除")で引用を削除し、次の/まで削除できdt/ます。以前の/:まで削除しdT/ます。ですから、動くものを学ぶ限り、非常に面白くなるでしょう。

まとめると、今日私はemacsキーバインドがマクロ編集の方が速く、vimコマンドがマイクロ編集の方が強力であることに気づきました

私は過去5年間vimを使用してきたので、主に単語、行、周囲、ブロックなどについて考えて編集します。この行を削除し、引用符を削除し、引用符を置き換え、カーソル内の単語を削除します。emacsを見つけようとしていますそのために動く

最後の引用として、私はemacsやvimよりもfzfに関心があると思います。完全にfzfベースのエディターが欲しいです。


-9

まず、Vi(元の実現)は現在使用されていません。あなたが言うことは、いくつかのVimの派生物です。

Vimの機能を拡張するには、Vimを再コンパイルする必要がありますが、Emacsはそうではありません。

EmacsはVimを自己(viper-mode)で持っています。

Emacsは通常手動でインストールする必要があり、Vimは通常、OSのようなすべてのUnixにプリインストールされています(ただし、ホストのtramp-mode win Vimへのsshアクセス権がある場合)。

Vimを試す場合はEmacsが嫌いなので、まずEmacsから始めます。

また、http://www.dina.dk/~abraham/religion/vi-tutorial.htmlも読んでください(リンクを下に移動するので、これを使用してください

Anwerのhxxp://en.wikipedia.org/wiki/Editor_warでの検索


8
それを拡張するためにvimを再コンパイルする必要はありません。vimを終了する必要すらありません。
phpが多すぎる

1
vimscript / Python / Ruby / etcがすべてのVim内部構造にアクセスできますか?エディターのコードベースがEDITORの1つのレベルの複雑さで拡張または拡張の複雑さを作るのに役立ちますか?
ギヴェンコア2009

1
知的マクロのようなVimスクリプトの多く。Vimを拡張するにはプラグインが必要です((
gavenkoa

1
Vi使わない?!?!何?nviはオリジナルと見なされますか?それとも「伝統的なvi」?FreeBSDやArchLinixなどの多くのシステムには、従来のviまたはnviがバンドルされており、それを感謝しています。Debianのような一部のシステムは、デフォルトで互換モードになっているvimに対応しています(従来のviとほとんど同じように感じています)
Alex

1
@gavenkoa、私はアレックスに完全に同意します。Gentoo、一部のBSD、Arch Linuxなど、手動でのインストールが必要なシステムを試したことがないことは明らかです。また、「Vimを試す場合はEmacsが嫌いなので、まずEmacsから始めてください。」最初にVIMを試してみると、少し考えればあなたもそうです。これは、関数型プログラミングを最初に試みないように言っている人々を思い出させます。私はもっ​​と早く試さなかったのが残念です...
JMCF125
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.