vim - emacs 開発 環境




EmacsとVimの違い (19)

何が他のものより優れているのかについての宗教的議論に惑わされることなく、EmacsとVimの実用的な違いは何ですか? 私はどちらかを学びたいと思っていますが、それぞれの学習曲線が高く、決めることはできません。 私はこのタイプのエディタを使ったことがありません(私はいつもIDEを使用しています)ので、初心者を助けるものはプラスです。

炎の戦争が始まる前に:私はどちらが良いか尋ねていません、私は2つの違いを尋ねています。 私は客観的な比較をしたいと思います。


  1. VimはEmacsよりも起動が速かったです。 私は、どのマシンでも、Vimのすぐにインストールできるインストールは、Emacsのすぐにインストールされたものより速く起動すると言っています。 私はどちらか一方を適度な量にカスタマイズすれば、VimはEmacsよりも早く起動すると思う傾向があります。

  2. その後、Emacsのモードが実際的な違いでした。 XML、C / C ++ / Java /何でも、LaTeX、そしてあなたが考えることができる最も一般的な言語を編集するとき、彼らはあなたの人生を非常に簡単にします。 彼らは長いセッションと作業のためにエディタを開いたままにしたいと思う。

全体的に、Vimは短くて速い編集作業のためにそれをあなたに引き出していると言います。 Emacsはあなたに長いセッションのために飛び込むことを勧めます。



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

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

Emacsはプログラマブルな2つのエディタの唯一のエディタでしたが、VimはPythonとRubyのバインディングを追加して(そしてそれ以上は)忘れてしまいましたが、ほとんどの方法でプログラム可能ですあなたは気にします。

私はVimを使用しており、私はそれにかなり満足しています。


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


(以下の文章は私の意見ですが、事実または侮辱ではありません)

Emacsを使うと、24時間365日オープンしてプログラムの中で暮らすことが期待されています。ほとんどの場合、そこから実行できます。 あなたは独自の拡張機能を書いて、メモを取ったり、組織、ゲーム、プログラミング、シェルアクセス、ファイルへのアクセス、音楽の聴取、Webブラウジングに使用します。 それが幸せになるまで数週間から数週間かかるので、常に新しいものを学びます。 あなたはそれにアクセスすることができず、あなたの設定を絶えず変更するときには、迷惑になります。 あなたは他の人のemacsバージョンを簡単に使うことはできず、インストールされるだけではありません。 これはLispを使用しています。これは素晴らしいことです。 あなたはそれがあなたが望むものにすることができます。 (何でも)

Vimでは、ほとんどの場合、あらかじめインストールされています。 これは速い。 あなたはファイルを開き、クイック編集をしてから終了します。 あなたが他の誰かのマシンにいる場合、基本的なセットアップで作業することができます。 それはあまり編集可能ではありませんが、ほとんどのテキストエディタよりもはるかに優れています。 これは、あなたが入力していないものを読む/編集している時間のほとんどを認識し、その部分をより速くします。 あなたはemacs pinkieに苦しむことはありません。 それほど怒らない。 学ぶのは簡単です。

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


Vim:

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

Emacs:

  • デフォルトでは非モーダルです(今日の編集者のほとんどがこのアプローチを採用しています)。 vimの動作をエミュレートするevil-modeがありますが。
  • 欠けているところでは、vimscriptは今日の動的言語に比較的似ていますが、elisp(以下、elispという)は比較的機能が豊富ですが、かなり何かに似ていない)
  • より拡張可能な
  • GNUツール(それらの束)に対する優れたサポート

個人的には、私はvimを好む - それは小さいです、それは何をすべきかを行います、そして、私が完全に吹き飛ばされたIDEを望むとき、私はVSを開きます。 EmacsがIDEになりたいエディタ(あるいはOSと言うべきですが)ではないエディタであるというアプローチは、IMHOが古くなっています。 昔、電子メールクライアント、ftpクライアント、テトリス、あるパッケージ(emacs)のなんとかなんて意味がありました...今はもうそれはありません。

しかし、両方ともプログラマーやスーパーユーザーのコミュニティユーザーの間で宗教的議論の話題になっています。その点で、両方とも連絡が取れば(同じ文章/質問内で)、炎の戦争を開始するのに優れています。


vimは便利なエディタですvim filename。ファイルを開いたり、編集したり、保存したり、閉じることができます。

emacsは "オペレーティングシステム"であり、エディタのようなふりをしevalています。その動作を変更するようにコーディングして、好きなだけ拡張することができます。modeemacsの上で電子メールを送信/受信するには、オペレーティング・システム上のメールソフトのようなものです。

例えば、設定ファイルを変更するなどの簡単な編集を行う場合、私はvimを使います。

それ以外の場合、私はemacsを残すことはありません。


ここでは、 "The Programming of UNIX Programming"という本の引用文を載せたいと思います。

viとEmacsの両方を定期的に使用する多くの人々は、さまざまなもののためにそれらを使用する傾向があり、両方を知ることが価値があることがわかります。

一般的に、viは小規模な仕事に最適です - メールへの迅速な返信、システム構成への簡単な調整など。 これは、新しいシステム(またはネットワーク上のリモートシステム)を使用していて、Emacsのカスタマイズファイルを手元に置いていないときに特に便利です。

Emacsは、複雑なタスクを処理し、複数のファイルを変更し、セッション中に他のプログラムの結果を使用する必要のある拡張編集セッションのために独自のものです。 コンソール上でXを使っているプログラマー(現代のUnix上では典型的です)では、大きなウィンドウでログインした直後にEmacsを起動し、それを永久に実行して、数十のファイルを訪れ、複数のEmacsサブウィンドウでプログラムを実行することも可能です。

私がここで強調したいのは、« 多くの人が両方を知ることが価値があると感じている»


両方のエディターの客観的な分析をお探しの場合は、その起源とそれぞれの設計の背後にある哲学を見てください。 あなたがどんなIDEに比べて本当のユーティリティを発見する前に時間がかかるので、どちらがあなたにうってつけ、それを学び(それを学んでそれを学ぶか)考えてください。 Viを使用したディスプレイの紹介は、Bill JoyとMark Hortonによって書かれました。なぜ彼はさまざまなキーストロークに対してモーダル設計と理論的根拠を選択するのかを説明します(CTRL-W + W Ctrlキーを長押しした場合のCTRL W + CTRL Wと同じです。

ここにEmacsのタイムラインへのリンクがあり、Multics Emacsの論文への参照があります。 Hereis RMSのEmacsに関する論文です。私はストレスがプログラム可能なテキストエディタ(1981年以前でさえ)にあると見ています。

私はemacsの論文を読んでいないが、Bill Joyのvi紙を数回読んだ。 両方とも古いですが、依然としてあなたは哲学を得て、現在のツール(vim 7.xまたはemacs 25?)を使用することを選ぶかもしれません。

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


両方の編集者について言われていることがたくさんありますが、私は追加する5ペンスを持っています。 両方の編集者は素晴らしく、あなたはどちらかに間違って行くことはできません。

私は約15年間、vi / vimユーザーです。 私はemacsに何回も変換しようとしましたが、毎回、vimが実際にはLispエクステンションを書くか、何かをインストールする必要なしに、欠けているものを実際に実行できることを発見していました。

私にとってエディタの主な違いは、emacsがカプセル化したり置き換えようとしている間に、vimは環境/ OSを使います。 たとえば、あなたのテキストに日付をvimで、またはカレンダーを:r!cal 1 2014で追加したり、あなたの内容を16進版の内容に置き換えたりすることができます。 例えば。 :%!xxd、16進数を編集して戻ってくる:%!xxd -r、grep、sedなどの組み込み関数

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

言い換えれば、IMHO vimはUNIX哲学に近づきます。 それは一般的にはより単純で小さくなりますが、あなたがOSとツールを知っていれば、それ以上のもの(VIM)が必要です。 私は決してしません。

vi以外にも、unix / linuxシステム上のdefacto標準がありますが、同じことをする2つのツールを使うことを学ぶのはなぜですか。 もちろん、いくつかのシステムはmgやそれに類するものを提供しますが、確かにそれらのすべてではありません。 Unix + Vi <3。

まあ、私の5ペンス。


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

一方、Emacsはほとんどのエディタやワードプロセッサなどに非常に近い。 あなたは今日を見ます。 高度にプログラマブルなインターフェイスを備えたワークスペースがあります。 だからあなたは電子メール、irc、シェルなどのものを見るのです。プログラマとしては、「私が行っている行番号をとり、その情報で何かをする」という言い方で考えるのは簡単です。 終了する必要はなく、他のアプリケーションや言語を開いてテキストを操作する代わりに、エディタの範囲内でこれらのことを行うことができるEmacsがあるため、エディタを終了するという希望は少なくなります。

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


私にとって、エマックの賛否両論は、

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

私は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とemacの両方を使っていたので、私はemacsがviよりずっと遅くロードされ、初期のUNIXボックスで物理メモリのほとんどを使用していた時期を覚えていますが、これはもはや当てはまりません。 20年。

私が認めている1つの苦情は "emacs pinkie"です。これは、私が若くても全く気にしませんでした。私が58歳になった今、私のピッコリーは、emacsのchordingのControlキーに繰り返しアクセスすることで少し痛いです。これは特に、「fn」キーのためのスペースを確保するために、コントロールが右に1つ移動されたMacBook Proのキーボードに当てはまります。Controlが左下のキーである場合、それほど迷惑ではありません。


私はviで始まり、emacsに行き、次にvimに行きました。 私は過去5年間に何が変わったのかを見るためにEmacsを試してみようと考えていました。 (IDEについて言えば、しばらくの間Eclipseになっていましたが、私のMacを私の(夫の)Linuxボックスに接続するのが私の端末ウィンドウよりも好きです)。

最近カット&ペーストの事が気になりました。 Vimでカットアンドペーストするには、Emacs、IIRCよりも多くのステップが必要です。 そして、ブラウザから端末ウィンドウに貼り付けるのは、あなたが何か気にかけないように気をつけなければ、刺激的です。私は奇妙なインデントを付けます。 私は、emacsで複数のファイルを編集する方が簡単だと思います。 画面上に両方のファイルがある場合は、少なくとも1つのファイルから次のファイルにジャンプします。

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

私はすべてあなたが使いたいかどうかにかかっていると思います:wqあなたが気に入っているものを気にしない場合は、ファイルを保存するために:wqまたはCtrl-x Ctrl-s (IIRC)を使います。

@mgbは正しい。 私はDebianディストリビューションの1〜2ヶ月前に何かを修正するために最低限のLinuxにいました。 viは唯一のエディタでした。


風刺的な視点:

vi(vimではない)はプロの必需品です。 どんな環境であっても、viの形式はいつでも簡単に利用できます。 あなたはemacsのときにviに入ることができます。viでunix-landにbashコマンドを作ることができます。

Microsquishでさえ、公表された標準の法令遵守のためにviをサポートしなければなりません(彼らはそれを隠しています)。

私の意見では、忙しい環境で実践的な仕事をしている人は、開発環境や学問分野のファン・リグに限定されている花屋ではなく、派手な編集者についてたくさん知っていることは、仕事のハンディキャップです。vimやemacsのすばらしいテクニックをすべて学んではいけません。また、編集環境を意欲的に曲げるためのマクロを開発しないでください。工場環境ではおそらく正当化できないさまざまなマシンに出向いたときに、あなたの道に迷い込んでしまいます。

Bill Joyの論文を読んでください。これは非常に有能で、おそらく美しいものでも、プレーンテキストを非常に速く編集するエンジニアリングです。Paritoのルールが適用されます:フルーツの80%がバスケットの20%にあります。プレーンテキストを非常に速く編集することは、コンピテンシーの編集の要点です。それ以外はすべてオプションです。時には害です。


Emacsは本当にもっとすべてのことをするプログラムであり、vi(m)は本当に単なるエディタです。テキストを編集している場合はどちらも問題ありませんが、私はemacsが好きです。なぜなら、移動するために家の列を移動してコマンドモードで間違ったものを入力しなければならないからです。私はあなたにその問題がない、vi(m)があなたのための編集者かもしれません。


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

私はVimを使用しています。その理由は、速く、熟していて、テキストを操作することが本当に良いからです。それはあなたの開発タスクを本当に調和させることができる、構成可能な自然なキーバインディングを持っています。Vimは、本当にうまくやっている単純な* nix philiosphyに基づいています。つまり、Text Manipulationです。

bash / zshとtmuxを使ってVimを拡張するのは簡単で、多くのことを学ぶことができます。 IMHOこれは良い学習曲線です。重要なことは、これらのことを統合してより大きな作業アプリケーションを得る方法を学ぶことです。 Vimを使用すると、それを教えない限り自然に統合されないため、統合を学ぶ必要があります。私が使用するもう一つの価値ある拡張はTigです。そのncursesベースのGitフロントエンド。私はちょうどTigをサイレントに開いて、それから私はGitのものをすべてそこで行います。

最終的なユーザーが最高のものを決めるまでです。EmacsとVimが時間のテストに立っていることは、その価値があることの証明です。最終的に、良いプログラマは、創造的なペンと紙以上のものを必要としません。良いアルゴリズムでは、編集者がそれを裏付ける必要はありません。だから両方を試して、あなたの生産性を向上させるものを見てください。これらのソフトウェアの両方からデザインパターンを学び、学び、発見することがたくさんあるので!


キーストロークの実行::: viの編集では、型付きキーの各順列が保持されます。Emacsコマンドは即座に実行される型付きキーの組み合わせであるのに対し、コマンドを使用するかどうかの選択はユーザに任せています。

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


最初に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も読んでhttp://www.dina.dk/~abraham/religion/vi-tutorial.html(リンクは下に行くのでこれを使用しthis

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





editor