質問

すぐ前:私はします ない 宗教戦争を始めたい。

使ったことがある ヴィ 覚えている限り、そして何度か拾おうとしたことも Emacs 迷ってしまったのですぐに諦めてしまいました。しかし、多くの人は Emacs が非常に強力であると感じています。そのプログラム可能性は、ある意味伝説的です。私は主に Solaris + Java 開発を行っているのですが、簡単な質問をしたいと思います。Emacs について理解することに時間を費やせば、生産性は向上しますか?提供される機能は次のとおりです ヴィム 妥当な期間内に生産性の向上として回収されるでしょうか?

繰り返す:「私の編集者はあなたの編集者よりも優れています」という答えは望んでいません。時間を投資する価値があるかどうかについて、イエスかノーで答えてほしいだけです。本当に生産性が向上するのでしょうか?

役に立ちましたか?

解決

私は vi よりも emacs の方が好きですが、どちらでも快適です。

emacs で実行できることによって、vi よりも強力なものがいくつかありますが、そのすべてがプログラミングに関連しているわけではありません。(vi 内から電子メールを送信したり、ニュースを読んだりできますか?いや、でも誰が気にする?) もしあなたが Lisp に慣れているなら (私はそうではない)、アドオンやモードなどを書いて作業を楽にすることもできるかもしれないが、それはおそらく構文の色分けと中括弧だけだろう。そのようなマッチングと目の保養。

もうとりとめのない話はやめます。あなたの 生産性 emacsを使って増やす?いいえ。

アップデート:以下の私のコメントを参照してください。これを投稿して以来、 持っている emacs を使用すると、vi を使用するよりも生産性が向上する方法を見つけました。

他のヒント

[免責事項: 個人的に, 私はVimの方が好きです。免責事項免責事項:読む。]

Vim は小さな点で優れています。モーションとアクションを別々の概念にし、複雑な繰り返しのための機能を提供することで、ほんの短いキーストロークで信じられないほど強力な編集操作を実行できます。通常の編集では、Emacs でスクリプトを作成する必要がある作業を、Vim で簡単に行うことができます。また、使用する電力のほとんどはそのままの状態で使用されるため、たとえ大規模な .vimrc カスタマイズすれば、生産的に作業できる可能性があります どれでも Vimのインストール。

Emacs は次のような大きな点で優れています。すべての UI 概念を Elisp の基本的な構造と概念に直接マッピングすることで、特定の種類のファイルや状況に合わせた機能をグローバルに導入することが非常に簡単になり、Emacs がテキストベースでより構造的にプログラム可能な形式の Excel のようなものになります。これは、個人のニーズや好みに合わせて環境をカスタマイズするのに多くの時間を費やすことを前提としています。もちろん、Emacs は、あなたがやりたいことすべてをその 1 つの環境内に留まりやすくするために最善を尽くしています。

結局のところ、どちらが優れているということはありません。それらはさまざまなスタイルを提供しており、あなたの性癖に応じて、どちらかが個人のニーズや考え方に適したものになります。もちろん、両方 (およびさらに多くのエディター) を知っていると常に役に立ちます。しかし、あれこれやっても生産性が大幅に向上するわけではありません。

viは包丁です。

vim は本当に素晴らしく、鋭く、バランスの取れたシェフナイフです。

Emacs はライトセーバーです。

ほとんどの場合、私の仕事では野菜を切る必要があります。場合によっては、ロボットの軍隊全体と戦わなければならないこともあります。

私は Emacs を 20 年間使っています。私は今、Emacs で というウィジェットを使って入力しています。 「すべてテキストです」 これにより、Firefox のテキスト ボックスにテキストを取り込んだり、テキスト ボックスからテキストを取り出すことができます。Emacs では非常に速く作業できます。これがないと生産性が大幅に低下します。

これには大いに議論の余地がありますが、私は Emacs を学ぶことでプログラミングについて驚くほど多くのことを学べると考えています。

コーディング方法に応じて、 5月 生産性の向上が見られます。背景として、私も長年の vim ユーザーですが、約 2 年前に emacs を学び、今ではそれらを同じ意味で使用しています。

私が emacs を実際に学習するところまで駆り立てたのは、一度に多数のファイルを開いて、それらを簡単に切り替えることができる便利な機能でした。私は、多数のクラスを追加して変更する機能を導入している最中でした。(これは C++ だったので、通常、クラスごとに 2 つのファイルがありました。) まだインターフェースを調整中だったので、通常、1 つのファイルを更新している途中で、別のファイルを変更する必要があることに気づきました。

gvim を使用すると、ファイルごとに新しいウィンドウを開くのが最も簡単でしたが、それは扱いにくくなり始めていました。しかし、Emacs では、同じウィンドウで新しいファイルを開くのは簡単でした (Ctrl-x、Ctrl-f)。Emacs でファイルを開いたら、開いているバッファ間を簡単に切り替えることができます (Ctrl-x、Ctrl-b)。

さらに一歩進めて、単一の emacs セッションで多数のウィンドウを開くことができるため、ウィンドウを垂直に分割することに加えて、ファイルでの作業を中断することなく、ファイルの隣に別のウィンドウを開くことを決定でき、効果的に並行して作業できるようになります。各ウィンドウをデフォルトの 80 文字幅のままにします。

vim の方が簡単だと思うことがまだいくつかあります (例:ブロック選択モード、単純なマクロ記録、差分モード)、および Emacs でより簡単なこと (行の配置、ファイル/バッファの管理、ウィンドウ/画面の管理)。したがって、私は予想される編集作業に応じて、この 2 つを交互に使用しています (場合によっては両方を同時に使用しています)。

まだ迷っているなら、試してみることをおすすめします。Emacs チュートリアルを一通り実行し、それを使用して朝または 1 日コードを書き、ヘルプに重点を置きます。それでも表示内容が気に入らない場合は、そのまま vim を使用してください。エディターが何をもたらすかに関係なく、ツールに対する慣れと知識が生産性において最も重要な要素となります。

聖戦は望んでいませんが、非常に主観的な質問にYes/Noで答えてください。

はい、強力な機能により生産性が向上する可能性があります。

いいえ、emacs で使用されるパターンや比喩があなたの脳と一致していない可能性があるため、生産性の向上は見られません。

あなたの質問に対する簡単な答えは「はい」です。詳細は以下をご覧ください。

私は 1980 年から 1991 年頃まで、ほぼもっぱら vi を使用していました。私が vi を使用しなかったのは、vi を含めるには小さすぎる Unix の最小インストールを扱っていたときだけでした。そのため、元の vi が構築していた編集機能の最小限のサブセットである ed に戻さなければなりませんでした。の上に。

1985 年頃から、私が働いていた他のプログラマーたちは常に emacs を称賛していました。しかし、それを学ぼうとしても、なかなか上達しません。emacs チュートリアル (C-h t) を 1 時間かけて学習しましたが、それが終わるまでにわかるのは、テキストの挿入と変更の方法、および画面内での移動の方法だけです。emacs でその 1 時間で学んだことよりも、vi を使用するとはるかに多くのことができるので、切り替えることができませんでした。3 か月後、時間を見つけてさらに 1 時間かけて、結局同じ内容を学習することになります。Emacs には大文字の「L」が付いた学習曲線があります。他の人が emacs を使用する契約を結んで初めて、最終的に一度に 1 時間以上を emacs の学習に費やす必要があると判断しました。チュートリアルと付属のドキュメントを読み進めるだけで 1 日ちょっと過ごした後、ついに vi ではできなかったことが emacs でできるようになりました。それ以来、戻りたいと思ったことは一度もありません。寝ている間に vi コマンドを入力することもできますが、emacs を使用するとさらに多くのことができます。

vim ではなく emacs と vi を比較していることを理解してください。私は vim が vi に追加した拡張機能については知りませんでしたが、おそらくそれらの多くは emacs からコピーされた機能だと思われます。もしそうなら、そしてあなたがすでに vim に習熟しているなら、emacs にはそれほど多くの利点がないかもしれません。

私が emacs で常に依存しているものには次のようなものがあります。

  1. emacs を使用すると、すべてがテキストとして扱われます。これは、ほぼ同じコマンドを使用して、任意のバッファ内の任意のデータを操作できることを意味します。また、バッファーのモードで一部の標準コマンドが使用できない場合は、基本モードで実行されている別のバッファーにテキストをコピーし、そこで標準コマンドを使用できます。

  2. Emacs は、文字セル端末上で表示可能なマルチ「ウィンドウ」環境を提供します。ビットマップグラフィックスや実際のウィンドウが登場する前の時代、emacs は、ASCII 文字とカーソル位置のみを使用してウィンドウのような動作をシミュレートするために作成されました。おそらくあなたはこう思うだろう、「それは古代の歴史だ。なぜ今日そんなことを気にする必要があるのでしょうか?」私は今でもその機能を毎日使っています。SSH アクセスを許可するウェブホスティング会社を使用しています。したがって、インターネット経由で Linux ホストにログインし、シェル コマンドを実行できます。これはかなり強力ですが、emacs を使用してターミナル エミュレータを「ウィンドウ」に分割し、それらの「ウィンドウ」のいくつかでシェルを実行し、他のウィンドウでファイルを編集し、さらに別のウィンドウでディレクトリを表示および編集できる方がはるかに強力です。ウィンドウズ"。

    実際、前の段落で「ウィンドウ」と言いましたが、実際には「バッファ」を意味していました。Emacs の Windows の文字セル エミュレーションは、画面の領域を分割する方法です。emacs バッファは、現在表示されている場合とされていない場合があるコンテンツ (ファイル、bash シェル、ディレクトリ、ファイルに関連付けられていない任意のテキストなど) に関連付けられています。バッファーの内容を表示するには、ウィンドウを選択して、どのバッファーを見たいかを指定します。そのため、画面上に表示できるスペースよりもはるかに多くの作業を行うことができます。これは、最新のビットマップ グラフィック GUI でウィンドウをアイコン化/非アイコン化するときに行うこととほぼ似ています。

  3. emacs バッファ内でシェルを実行できるという事実についてはすでに触れました。シェルを実行するバッファーは好きなだけ持つことができます。テキストをコピーしたり、異なる 2 つのテキストを比較したりする場合とまったく同じキーストローク シーケンスを使用して、シェル バッファとテキスト ファイルの間でテキストをコピーして貼り付けたり、シェル バッファとテキスト ファイルの間でテキストの一部を比較したりできます。テキストファイル。実際、これはシェル バッファやファイルに関連付けられたバッファだけでなく、ほとんどの種類のバッファに当てはまります。

  4. emacs のコマンドを使用してファイルを開くときに、選択したものが実際にはディレクトリである場合、バッファは dired (ディレクトリ エディタ) モードで実行されます。このモードでは、ファイルでもサブディレクトリでも、カーソルが現在指しているものを 1 回のキーストロークで開きます。dired モードのバッファはファイル マネージャーです。これは、Mac または Windows Explorer の Finder に類似した、キャラクタ セル ターミナル指向のファイル マネージャーです。

  5. 私がほぼ常に使用している emacs 機能の 1 つは、「compare-windows」です。私は、コマンドラインの「diff」や、Eclipse に組み込まれているような GUI 比較ツールよりも、これを非常に好みます。Diff または Eclipse はファイル全体を比較し、どの行が異なるかを表示します。しかし、非常に似ている 2 つの異なる線がある場合はどうなるでしょうか?次のことを考慮してください。

    この行と他の行の違いは何ですか?

    この行と他の行の違いは何ですか?

    違いが分かるまでどれくらい時間がかかりますか?(ヒント:ASCII と Unicode のアポストロフィは非常によく似ています)。

    異なる行を表示するだけの diff や Eclipse とは異なり、emacs の「compare-windows」機能は対話型です。2 つの隣り合ったウィンドウのそれぞれで、ウィンドウの内容が同じ位置にカーソルを置きます。「compare-windows」を実行すると、各ウィンドウ内のカーソルが異なる最初の文字に移動します。いずれかのウィンドウでカーソルを他のウィンドウと同じ位置に再配置し、「compare-windows」を再実行して次の違いを見つけます。これにより、ファイルの小部分を簡単に比較できます。

    私が定期的に「compare-windows」を使用するもう 1 つの目的は、チェックサムの比較です。多くのソフトウェア プロジェクトは、tar ボールの MD5 ハッシュも含まれるページ上でアプリケーションの tar ボールを配布します。では、配布ページの MD5 ハッシュと、ダウンロードしたファイルから計算された MD5 ハッシュをどのように比較しますか。Emacs を使用すると、これが簡単になります。

    まず、MD5 ハッシュを Web ページから新しい emacs バッファにコピーします。次に、.tar.gz ファイルをダウンロードした後、次のコマンドを実行します。

    md5sum ダウンロードファイル.tar.gz

    シェルバッファ内。これら 2 つのバッファを emacs ウィンドウに並べて表示した状態で、各ウィンドウのチェックサムの先頭にカーソルを置き、「compare-windows」を実行します。それらが同じ場合、各ウィンドウのカーソルは各チェックサムの最後に配置されます。

  6. 前のポイントでは、次の行で「compare-windows」を実行する例を示しました。

    この行と他の行の違いは何ですか?

    この行と他の行の違いは何ですか?

    「compare-windows」は、カーソルを各行のアポストロフィ上に配置したままにします。これで、どの文字が異なるかがわかりました。しかし、彼らはどんなキャラクターなのでしょうか?2 つのキーストローク コマンド CTRL-x = を入力すると、emacs は文字、その 8 進数、10 進数、および 16 進数の ASCII 値、ファイルの先頭からの文字オフセット、および行の先頭からの文字オフセットを表示します。ASCII は 7 ビット エンコードであるため、すべての ASCII 文字の上位ビットはオフになります。最初のアポストロフィの値が 0x27 で、2 番目のアポストロフィの値が 0x92 であることがわかると、最初のアポストロフィが ASCII 文字セット内にあり、2 番目のアポストロフィが ASCII 文字セット内にないことは明らかです。

  7. Emacs は最初の IDE の 1 つであり、おそらく最初のものです。特定の言語用のモードがあります。コードを読みやすくするために一貫したインデントを課すのに便利です。コードをコンパイルおよびデバッグするための組み込み機能もあります。私はコンパイル機能をあまり使用しません。なぜなら、C のようなコンパイル言語用に書いていたときは、シェル プロンプトでコンパイルを行うことに慣れていたからです。デバッグ機能は C および C++ にとって非常に優れていました。これは、Eclipse のデバッグ機能とほぼ同じ機能を利用できるように gdb をエディターに統合しましたが、最新の GUI ベースの IDE のように画面の領域を無駄にすることはありませんでした。理論的には、デバッガの統合は他の事実上あらゆる言語に簡単に適用できるはずですが、現在他のどの言語で動作するかは確認していません。

  8. Emacs を使用すると、入力している内容をいつ記憶し始め、いつ停止するかを指定してマクロを作成できます。これは、頻繁に行うタスクにとって非常に強力です。

  9. Emacs は、Lisp を知っていれば無限に拡張できます。しかし、私は Emacs Lisp を学んだことがありませんが、今でも Emacs が私が今まで使った中で最も強力なツールの 1 つであると感じています。

  10. Emacs のキーバインディング。Emacs のキーバインディングがひどいことを最初に認めるのは私です。しかし、これは私が使ってきた他のものよりもはるかに強力なので、キーバインドは我慢したいと思っています。

  11. ユーモアたっぷりに、数年前、Emacs の作者 Richard Stallman (GPL の創始者、GNU プロジェクトの創設者、FSF の創設者でもある) は、vi と Emacs を扱う人々を嘲笑しました。聖戦としての emacs。彼は Emacs 教会のキャラクター「Saint IGNUcius」を発明しました。そのような装いで、ストールマン氏は次のようにコメントしました。「Emacs 教会では他のテキスト エディター vi を使用するのは罪なのかと時々尋ねられます。確かに、vi vi vi が野獣のエディターであることは事実ですが、vi の無料バージョンを使用することは罪ではなく、苦行です。」 http://stallman.org/saint.html. 。彼のかわいい写真もありますが、私は StackOverflow を初めて使用するため、複数の URL を投稿することはできません。したがって、同じドメインに移動しますが、ファイル saintignucius.jpg を取得します)

私は 2 年前に Emacs を掘り下げるまで、10 年間 Vim を使用していました。私の生産性曲線が時間の経過とともにどのように変化したかについては、かなり新鮮に覚えています。

私のポイントはすべて条件付きで、YMMV はあなたの強みと経験に応じて異なります。

Unix とコマンド ラインを十分に長く使用しており、シェル上で機能する C-a、C-e、C-n、C-p、C-k、C-y などに慣れている場合は、同じバインディング (デフォルト) Emacs では。最近、XCode もこれらのバインディングを使用していることを発見しました。

常に実行中のエディター、(ブラウザーのタブのように) バッファーの管理、および (ブラウザー内の Web2.0 アプリケーションのように) アプリケーションでの生活に慣れている場合は、Emacs を使用するとすぐに生産性が向上する可能性があります。

一般に、多くの関連ファイルを含むプロジェクトで作業している場合、この永続性により、そのバッファーのコンテキストを維持するという追加の利点が得られます。各バッファーは開いているファイルでコンテキスト化され、そのプロジェクトのさまざまな生産性向上ツール (grep-find、eshell、run-python、slime など) を便利に使用できるようになります。これにテキスト補完やヤスニペットなどを組み合わせると、アドホックで構成によって大きく個別化されますが、IDE のように見え始めます。これは、ECB のような、より洗練された Emacs IDE のようなサービスとは異なります。

最初の 1 週間ほどは、「jjjkkk」と Esc-Esc-Esc-Esc と入力し続けたため、最初は生産性が低下しました。翌週、私は慎重に正しいナビゲーション キーを使い始めました。その後、設定ファイルを発見しました...正直なところ、もし持っていたら Emacs スターター キット 最初から、私の生産性は 3 ~ 4 週間でゆっくりと同等に戻ったと言えるでしょうが、設定ファイルのウサギの穴にはまりました。しかし、私の同僚は vim から emacs に移行したばかりで、スターター キットを入手し、これから移行しようとしています。入って最初の 1 週間、彼は快適に過ごし、驚くべき恩恵をすべて享受しているようです (その感覚はおそらく 10 年続くでしょう)。

最後に、間違いを犯した場合でも、循環キル/ヤンク リングとアンドゥ リングによってすぐに生産性 (および自信) を得ることができます。私も個人的には地域固有のアンドゥのファンです。

私の簡単な答えは、「はい、Emacs を学ぶために生産性が低下する 3 ~ 4 週間を費やす価値はあります」です。開発には Emacs よりも合理化された unix ユーティリティ コンボを好むと判断した場合でも、そこからエディタを超えて広く適用できる知識を得ることができます。

Emacs ドキュメントは森です。私が Emacs から Vim に来たのは、Vim のドキュメントがいかに整理されているか、そして多くの機能がいかに簡単にコード化できるかに気づいたからです。Emacs エキスパートへの道の先に何が待っているのかは知りませんが、Emacs で役立つことを学ぶには長い時間がかかり、nethack がさらに上手くなるわけではないことを警告しておきます。Vim を使い続けてください。

テキストメイト は Mac にとっては優れた Emacs ですが、Solaris では役に立ちません。Eclipse はとてもクールで、プラグインがたくさんあります。

Emacs を学び、ニーズに合わせてカスタマイズする意欲があれば、生産性が向上します。ほとんどの人はそうではありません。生産性を向上させるには、単純な編集以上の目的でツールを使用する必要があります。ほとんどの人は単純な編集を超えて進歩することはありません。

以下に簡単なテストを示します。環境をより効率的にするために (ニーズに合わせて調整して) ウィンドウ マネージャーをカスタマイズしましたか?「いいえ」の場合、emacs を学習しても ROI は得られない可能性があります。

そうは言っても、Java を開発している場合、Eclipse が標準的な答えであるため、あなたの質問はかなり意味がありません。

私は自分の Vim にとても満足していましたが、あるとき、 組織モード, Emacsを勉強し始めました。org-mode は Emacs を学ぶ強力な理由の 1 つになる可能性があります。

私は emacs が大好きで毎日使っています。

とはいえ、それを学ぶコストが、将来的に生産性の向上によって回収されるとは思えません。

Java をプログラミングしている場合は、優れた IDE が必要です。Emacs は Emacs に向けてかなりの道のりを歩んでいますが、正直に言って、IDEA らがそれを断然打ち負かしています。(おそらく emacs はこれらの IDE の多くに影響を与えたと思われますが、それはまた別の話です)。

私は Emacs を学ぼうと二度試みました。私の脳の仕組みに合わないので、使っていません。

Emacs (または vim) は vim (または Emacs) よりも大幅に優れているわけではありません。どちらにも、素晴らしいことを可能にする多くのオプションを追加できます。Emacs で実行できることはすべて、標準ではないだけで Vim でも実行できることに疑いの余地はありません。

Emacs を試してください。よりフィットするかどうかを確認してください。負けられない状況だ。

emacs についてさらに詳しく調べてみたいと思っていますが、長時間使用することはできません。手が痛いです。私は何かひどく悪いことをしているのでしょうか?

vim と emacs は最も有能なエディタであり、かなり長い間使用されてきました。もしあなたが本当によく知っているとしても、その過程でそれほど多くのことを得ることができるとは思えません...

ただし、いくつかの新しいプラグインが生産性に驚異をもたらす可能性があるため、利用可能なプラグインを調べることは常に良い考えです。

/ヨハン

いいえ(私は両方を使用したことがあります)。

宗教戦争を望んでいないという同じ方針に沿って (しかし、そうしなければならないと思うなら、どうぞ私に反対票を投じてください)、vi の唯一の選択肢が emacs であるとなぜ感じますか?それは開発に使用した OS ですか、それとも単に検討したオプションですか?

Java 開発環境では、コード編集とリファクタリングのサポートに関しては最高ではないにせよ、最近では最高の IDE (無料と有料の両方) を利用できます。IntelliJ IDEA には、より安心して使用できる vi プラグインもあります。たとえば (同様のものが Eclipse で利用できるかどうかはわかりません)。ツールの変更には学習曲線が必要ですが、飛躍が十分に大きい場合は、それに費やす時間は価値があるかもしれません。

どのくらいの速さで入力しますか?狩りとつつきをする人には、emacs は向いていません。速い人であれば、常にマウスを掴む必要がなくなるので便利です。

一般に、emacs は vi よりも強力です。emacs ではさらに多くのことができます。

テキスト エディタのプログラミングに時間を費やすことにすると、生産性が向上します。2 つのエディタのうち、emacs はより優れたフレームワークまたは継続的なカスタマイズを提供します。テキスト エディタをプログラミングしない場合は、使いやすいものをそのまま使用してください。

Emacs を学ぶ良い理由の 1 つは、他のプログラムでも Emacs キーバインドが使用されているからです。たとえば、bash プロンプトで Emacs キーバインドを使用したり、GNU readline を使用する他のもので使用したりできます。Emacs の基本的な動作や単語・行の削除、アンドゥ・リドゥのコードを覚えて、他のプログラムでも使えるようにしておくと良いでしょう。Emacs を二度と使用しなくても、他のツールを使用すると生産性が向上します。

私は Vim と Emacs を知っていますが、Vim の方が私の脳と私の習慣にぴったりです。しかし、Emacs については他の人も同じことを主張しています。試してみなければ自分自身では決してわかりません。Emacs を十分に学習して、気に入るかどうかを確認するには、それほど時間はかかりません。

本当に生産性が向上するのでしょうか?

最初の数日/数週間は、絶対にダメです。

何かを編集するたびにチュートリアルを読む必要がなくなったら、もちろんです。

Emacs vim よりも「強力」で、スクリプト エンジンははるかに柔軟で、emacs を中心に構築されたスクリプト、モードなどがはるかに多くあります。

とは言え、その逆も真実です。vim の知識を向上させるために同じ時間を費やした場合、同じくらい生産性が向上するはずです。

同じ方法では生産的ではないかもしれません - ファイルの編集には vim の方が速く、その他すべての作業には emacs の方が優れていると思います (繰り返しになりますが、私は個人的に次のように言います) flymake-mode, 、VCS バインディングは、同等の vim よりも速く使用できます)

私はアラン・ストームの意見に同意します。「Emacs で使用されるパターンや比喩があなたの脳と一致しない可能性があるからです。」

これは非常に重要な要素です。異なる脳は、異なるインターフェースに異なる方法で適応します。

私が Emacs を本当に気に入っており、生産性を向上させるものとして数えている主要な機能 (そして簡単に利用できる機能) のいくつかを以下に示します。
1.「yank-pop」機能 - すべてのカット/コピーがスタックに保存されるため、後でどれをペーストするかを選択できます (vi / Vim にこれがあるかどうかはわかりませんが、ほとんどの Java IDE にはありません)
2.Ctrl キー ナビゲーション マッピング - これにより、矢印キーを使用するために手を離さずにファイルをナビゲートできるようになります。(もちろん、他のエディタでのキーバインディングも役に立ちます)
3.ほぼすべてのプラットフォームで利用可能 (もちろん vi/Vim にも当てはまります) - GUI ベースかテキストベースかに関係なく (Java IDE はほとんどのプラットフォームでも利用できますが、GUI モードでのみ利用可能であり、非常にサイズが大きいため個別にインストールする必要がありますが、Emacs は一般に、より広く利用可能です - BSD / *nix / Linux / Mac システム
4.私はエディタが必要になるまで邪魔にならないようにしたいと思っています。Emacs の質素な表示は、入力する前に考えさせられます。
5.Emacs の基本的なナビゲーション キーは、一種の普遍的なものであり、私の Mac OS では、ターミナルや Mac メールなどでこれらのキーを使用できます。

最終的に、Emacs の哲学に魅力を感じるのであれば、それを学ぶために特別な努力をするでしょう。そしてそれはあなたに報酬を与えます。

vi/Vim と Emacs はできることとできないことの点で非常に近いため、これら 2 つのエディタの生産性は使用経験から生まれます。

プログラマーである私の意見では、Emacs を使い始めれば、Emacs についての一般的な概念を理解するのにそれほど時間はかかりません。他の人はそれしか言えないので、それを知るには自分で試してみなければなりません。

私の場合は両方使っています。それは戦争に複数の武器を持ち込むようなもので、適切な状況で適切な武器を使用してください。;)

私は Emacs が好きです。必要に応じて拡張できます。私の目には、自分で拡張できるシステムはすべて受賞に値します。

免責事項: 私は無知です。私は emacs ユーザーになってから約 4 年、vim ユーザーになってから約 6 か月、学習しようとして嫌いになった回数をすべて数えると 15 回くらいかもしれません。(書くモードと移動モードの区別は私にはわかりません。毎回。したがって、それがあなたを殺さないのであれば、私の意見はまったく価値がないかもしれません。)とはいえ、私の意見は、ここで見た他の26の意見とは実際には興味深いことに異なると思うので、私はそれを表明するつもりです。:免責事項

私の意見:

  • Emacs は、特に大規模な入力には適しています。「新しい機能を書いているので、実際に機能するまでにはしばらく時間がかかります。」 試す 実行できるかどうかを確認してください。」
  • Vim は編集、特にクイック編集に適しています。

8 つのファイルを同時に理解してハッキングする必要がある場合、マルチバッファを備えたタイリング ウィンドウ マネージャーとしての Emacs のプロパティ (バッファはファイルに対して 1.2:1 の対応関係を持ち、多くの場合同じですが、必ずしも同じではありません) 正規表現を使用します。 -検索 (および置換) は信じられないほど優れています。

もし私が何か小さなことで気に入らなかったら、 git diff シェル内で (私は emacs の VC 機能をあまり使用しませんが、使用するときは大好きです) vim で開いて、ヒットするよりも早く実行します。 Alt-TAB.

Emacs の編集コマンドは入力中にすぐに利用できるため、入力が容易になります。 多くの Vim よりも高速です。 Ctrl+a多くの よりも速い ESC ^ i, そして、「欲しいか?」という認知的負荷はありません。 a または i または o または O...」なんてことを考えるのは嫌いです。他のすべての移動コマンドについても同様です。

私は Emacs の方が速く入力できます。つまり、次のようなことを意味します 組織モード (私はすべてにこれを使用します:TODO リスト、バグ追跡、メモ、長いメール、ドキュメント...) は、Vim よりも Emacs の方が (私にとっては) 理にかなっています。

そして、Elisp はひどいですが、素晴らしいです。Emacs の壊れた正規表現を完全に補います。Emacs の能力を最大限に活用できます どこにでも, 、複数ファイルの正規表現置換を含む。そして、 テキストのスニペット.

心配な場合は あなたの手の健康 Vimを選択します。

私は過去にRSIの発作に苦しんでいましたが、主な原因の1つは「コーディング」であることがわかりました。同時に多くのキーを押し続けること。Emacs はコーディングを広範囲に使用しますが、VIM は 1 文字のコマンドを連続して使用します。これにより、エディターでコマンドを実行するために筋肉をひねったりねじったりする必要がなくなるため、手にかかる負担が大幅に軽減されます。RSI による負傷は生産性を損なう可能性があるため、計算には必ずこれを考慮してください。

本当に切り替える理由が見当たりません。私は長い間 vi を使用しており、非常に快適に使用しています。半年ごとに emacs をインストールして試してみて、すぐに元に戻しました。確かに、vi の方が気に入っていた点はありましたが、私が vi に固執しなかった主な理由は、すでに非常に有能なエディターを知っているのに、別のエディターを完全に習得するための時間投資に価値がないからです。
これを思い出しました かなり古い研究。

私の意見では、すでに vi に習熟している場合、SLIME が emacs に切り替える唯一の理由です。

いいえ

私は emacs を何年も使用しており、VIM からの変換者であり、emacs が大好きです。

しかし、より優れたプログラム可能なエディターを使用することによる生産性の向上は、emacs のコツを掴むのに必要な膨大な量の頭を使うことによって完全に台無しになってしまいます。これはコンソールエディタとして設計されたものであり、インターフェイスのアイデアはあなたのものではありません。

そして、完全に理解したとしても、追加の生産性は主に、作成できる追加の emacs lisp で表現されます。

誰が気にする?それはとても楽しいです、そして、Lisp は犬です!「何かを成し遂げたい」のであれば、プログラミングのことは忘れてください。「何か」を「行う」ためにプログラマーをいつでも雇うことができます。

私が emacs を学ぶことをお勧めする唯一の状況 生産性上の理由から あなたが lisp/scheme/clojure プログラマーの場合です。これは非常に優れた Lisp 環境を構築するため、何かをするたびに節約できる数秒がすぐに本当の利益につながるでしょう。また、本物の Lisp をすでに使用している場合は、elisp (Excel マクロが ALGOL に相当するのと同じように、Lisp に相当する) はそれほど違和感がなくなるでしょう。

試してみる場合は、エディタを配置するためのより健全な方法のように感じられる仮想コンソールでそれを使用してください。それが意味のある場合にのみ、ウィンドウ システムと競合するウィンドウ システムで使用するようにしてください。

アリストテレス・パガルツィスは以前の回答で次のように書いています。「Vim は小さな分野で優れています...通常の編集では、Emacs でスクリプトを作成する必要がある作業を、Vim で簡単に行うことができます。」

私は10年以上にわたってVIを使用してEMACSに切り替えました。最初は、「EMACSでスクリプトにドロップダウンする必要がある通常の編集のコースでVIMで簡単に物事を行うことができる」という主張に同意していました。しかし、その後、EMACSのマクロ機能と大規模な繰り返しカウントを使用することで、VIが簡単にしたほぼすべてのことを簡単に行えるようにすることができることを発見しました。

Emacs のマクロ機能には、次の 3 つのコマンドが含まれます。

C-x (       start remembering keystrokes
C-x )       stop remembering keystrokes
C-x e       replay the remembered keystrokes

たとえば、vi ですべてを検索したい場合、 <a> HTMLファイルにタグを付けて追加します target 属性を使用するには、次のようなことを行うとよいでしょう。

:g/^<a/s/>/ target="_blank">/

この例は完璧ではありません。 <a> タグは単独で一行にあります。しかし、2 つの異なるエディターで同等のタスクを実行する方法を説明するには十分です。

emacs で同じ効果を簡単に実現するには、次のようにします。

1.  C-x (
2.  M-C-s <a\>
3.  C-b
4.  C-s >
5.  C-b
6.   target="_blank"
7.  C-x )
8.  C-u 10000 C-x e

上記の各キーストロークの動作については次のとおりです。

1.  start remembering keystrokes
2.  regex search for <a.  Note that the "\>" after the "a" is not HTML.  It's emacs regex notation for end-of-word.
3.  back up one character - as a side-effect this gets you out of search mode
4.  search for the next ">"
5.  back up over the ">"
6.  enter space as an attribute-delimiter followed by the target="_blank" attribute
7.  stop remembering keystrokes
8.  replay the remembered keystrokes 10,000 times or until the search fails

複雑そうに見えますが、実は入力するのはとても簡単です。そして、このアプローチを使用すると、Lisp コードにドロップダウンすることなく、vi では実行できない多くのことを実行できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top