web-dev-qa-db-ja.com

IDE(Eclipse)を使用してソフトウェアを開発しています。なぜvimまたはemacsに切り替える必要があるのですか?

私の日々の仕事はJava/web開発者です。私はEclipseを5年ほど使用しています。私はそれは素晴らしいと思いますし、JavaScriptとhtml/jspにもWebstormを使用しています。

サーバーにSSHで接続し、設定ファイルをいじる必要がある場合があります。このため、私はviを使用します。 エスケープを押してからアスタリスクを押して3回めくると、カーソルの上の2行にテキストが入力されます。そう直感的ではない私には、そして私は80年代後半に90年代に育った人を想像します。

Eclipseが優れている(そして他のIDEを想定している)と私が思う主な理由は次のとおりです。emacsやvimに切り替えないでください。

  • プロジェクトを再コンパイルする必要がないエラーの強調表示。
  • コードアシスト。
  • リファクタリング。
  • オープニングコール階層/オープニング宣言。
  • ソース管理と完全に統合されています。
  • デバッガが含まれています。
  • サードパーティのプラグインの利用可能性-たとえば、findbugs/checkstyle。

私が聞いた議論の1つは、emacs/vimを使用して独自のプラグインを作成できるということです。まあまあですが、Eclipseでも作成できます。しかし、すべてがすでにそこにあるので、あなたはする必要はありません!これは、この半分製造された車を買うと言っているようなもので、残りは自分で作ることができます。

なぜ人々はemacs/vimを使っているのですか?それを使用する人々は実際に大規模組織の複雑なオブジェクト指向プロジェクトに取り組んでいますか?

vim/emacsに切り替える理由は何ですか。切り替えた場合、生産性はどのように向上しますか?

31
NimChimpsky

ニーズに合ったツールを使用してください。 VIMまたはEmacsを知っていることは、リモートサーバーにログインして設定ファイルなどを編集する必要がある場合に適しています。VIM 、しかし私はそれをJavaで開発するために使用しないでしょう。

36
user281377

EmacsとViにはまだ場所があります。

  • それらは、UnixおよびUnixライクな環境でユビキタスに利用でき、他のほとんどの一般的なプラットフォームにインストールできます。

  • 彼らは人気があり安定しているので、一度学ぶと長期的に見れば成果が上がります。

  • これらはテキスト端末で実行されるため、Telnetおよびsshセッションで使用できます。

  • 非常に新しい言語や非常に珍しい言語など、さまざまな言語に編集モードと構文の強調表示を提供します。 (これは私のお気に入りの利点の1つです。)

ただし、これらのプログラムを理解するための鍵は、プログラムが本来解決すべき問題を知ることです。 Viの場合、これは300ボーの低速の端末接続を介してテキストファイルを編集していました。その環境では、メニューを表示したり、画面の内容を根本的に変更したくない場合は、それを回避できます。

Emacsは、より高速な環境で使用することを目的としています。それは一度ロードされることができて、決して出られないということが強みでした。ユーザーは、Emacsから必要な他のタスクを終了せずに実行でき、多くの場合、コマンドラインから実行する必要がある場合よりも、よりフレンドリーな方法で実行できます。 Emacsウィンドウが開いているグラフィカルデスクトップ環境はありませんでした。 Emacsを使用すると、ユーザーはほんの数回のキーストロークでほとんどすべての通常のタスク(および多くの奇妙なタスク)を実行できます。組み込まれていないものはスクリプト化できます。

これらのプログラムが導入されて以来、明らかに人々のニーズは大きく変化しましたが、それでもまだいくつかの長所があります。私は両方の基本を学び、それらを毎週使用しています。それでも、私は彼らの強みがしばしば誇張されていると思います。 Emacs/ViがEclipseやVisual Studioよりも生産性が上がらない場合、人々は自分の弱点を認めず、代わりに何かが間違っていると考える傾向があるという伝説的な地位を達成しています。

さてポイントに。

Javaは人気の高い言語であり、Eclipseで優れたサポートを提供しています。また、一般的なタスクをすばやく実行し、IDEを介さずに他のユーザーをスクリプト化できる最新のオペレーティングシステムでコードを開発している可能性があります。切り替えても意味がないと思います。

39
PeterAllenWebb

私は5年以上emacsを使用しています。私が使用しているキーの組み合わせをもう伝えることはできません。私の指はそれらを覚えているだけであり、私の手が何を入力しているかを確認するためだけにキーボードを見なければなりません。

数年前にEclipseを使い始めましたが、自由にemacsに戻ることはできません。あなたがたはあなたがたを失っていても、申し訳ありませんが筋肉の記憶C-x r SPC 1、Eclipseを使用すると生産性が大幅に向上します。それが重要です。

いいえ、切り替えるべきではないと思いますですが、vimの基本を学ぶために2、3時間を費やす必要があるので、もう調べる必要はありません。

16
Martin Wickman

なぜvimまたはemacsに切り替える必要があるのですか?

ほとんどの場合、切り替えるべきではありません。 Vimは優れた強力なテキストエディターですが、はIDEの代用ではなくはそうではありません!EclipseはIDE固有のもののサブセットが非常に得意で、vimはテキスト編集固有のもののサブセットが非常に得意です。それぞれに独自の異なる焦点があります。

IDEでできるのと同じIDE固有の多くのことを実行できるようにvimの機能を拡張するプラグインがあることを知っています。しかし、それはまだvimの主な長所ではなく、IDEは、ほとんどの場合、それをよりよく行うことができます。それが彼らが焦点を合わせているものだからです。

私の毎日の仕事でVisual Studioとvimの両方を使用してC#を編集します。それは私にとって非常にうまく機能し、私はそれらの1つを他のものだけに依存するように切り取ることは決してしませんでした。

Emacsに関しては、私は専門家ではありませんが、EclipseのIDE機能と競合する可能性があるとは思わないJava LISPで開発している場合、それは確かには優れたIDEと見なすことができますが、同じサポートはないと思いますJava。

より強力なテキストエディターをEclipseと一緒に使用する場合は、vimまたはemacsのいずれかを学ぶことをお勧めします。ただし、置換ではなく補足として。どちらも特に簡単な学習曲線はありませんが、長期的に見れば本当に効果があります:)

これがvimの強みについての Nice longish read です。そして、これが リスト のいくつかの素晴らしいトリックです。

7
Nick Knowlson

基本的に、 this (PDF)を読んで、Emacsが強力な理由を確認してください。 LISPを知ったら、それを拡張することはほとんど簡単です(私は、自分用にemployer-modeと呼ばれるアドオンを使用してスクリプト化されたいくつかのソース管理ワークフローと展開をスクリプト化しています)。あなたが上にリストしたものに関して;

  • プロジェクトを再コンパイルする必要がないエラーの強調表示。 すべての言語に意味があるわけではありません。多くの言語のREPLsを簡単に統合できます。現在、Rubypythonhaskellcommon LISPschemeおよびerlangをすべてemacsに接続しています。ちなみに、JavaScriptアドオンjs2-modeには完全なインクリメンタル「コンパイル」機能があるため、構文エラーなどが強調表示されるので、それは確かに可能ですが、標準ではありません
  • コードアシスト。 autocomplete.elという名前のアドオンがあります Emacs wikiを確認してください
  • リファクタリング。 私はあなたが「自動リファクタリング」を意味していると思います、それはすべての言語で意味をなさない。おそらく存在するかもしれませんが、私にはわかりません。
  • オープニングコール階層/オープニング宣言。
  • ソース管理と完全に統合されています。 Emacs 22.3の時点でgit-modeが組み込まれていますが、他のソース管理については不明です
  • デバッガが含まれています。 ここでは、言語ごとの基準です。一般的に、REPL統合がある場合、Emacsデバッガーも含まれますが、ユニバーサルではありません
  • サードパーティのプラグインの利用可能性-たとえば、findbugs/checkstyle。 これらの特定のものについてはわかりませんが、その理由には、理由パッケージが便利な理由から、まったく軽薄なものまで、多くのアドオンがあります

そうは言っても、LISPが好きではなく、学ぶつもりもないのであれば、Emacsを正直にお勧めすることはできません。それから得られる勝利は、ツールの作成とそれらの原則を適用して自分の生産性を向上させることであり、既成のModの束を取得してそれらをつなぎ合わせるのではありません。

6
Inaimathi

ここには2つのオプションがあります。

  • 代わりにNanoを使用-これは、Linux版Windowsのメモ帳とまったく同じです。ホットキーの組み合わせを必要とせず、nano somefile.confそしてあなたは素敵なエディタを持っています。あなたもできます 構文の強調表示を追加
  • プログラムをローカルに保持し、SCPを介してサーバーに同期します。これは、小さなWebサイトで作業する必要があるが、Apacheをローカルで実行するための十分なリソースがない場合に行います。 WinSCPを起動し、必要なディレクトリを起動し、「リモートファイルを最新の状態に保つ」を使用します。通常、変更は数秒で反映されます
  • エディター/ IDEのプラグインを使用してリモートファイルを「直接」操作します-リビジョンコントロールを気にする前に、Notepad ++(私の好みのエディター)を起動し、NppFTPを使用してファイルを操作しました。 NppFTPは、ファイルが保存されてすぐにアップロードされるときにNppに通知するため、WinSCPオプションよりも高速です。しかし、私が言ったように、あなたはリビジョン管理を緩めました。私はあなたが使用できるEclipse用のプラグインがあると確信しています

お役に立てれば

3
TheLQ

個人的には、Vimが好きです。テキストの編集が非常に得意です。つまり、非常に人間工学に基づいており(キーバインドはあまり手に負担をかけず、マウスをあまり使用する必要もありません)、こつこつをつかえば効率的です。それは(もちろん初心者にとって最も直感的なエディタではないため、時間と忍耐が必要です)。

ただし、大規模なEclipse Java開発には、すぐに利用できる多くの機能があるため、私はEclipseを好みます。もちろん、Eclipseを少し作ることができる 一部のプラグイン があります。より許容できる。

2
user7908

現在、NetBeansからvimに切り替えようとしています。 vimの学習には時間と練習が必要ですが、特定のケースでは、それらを「GUIエディター」と呼びましょう。

しかし、あなたとは異なり、私は主にRubyをコーディングしており、NetBeansとEclipseが提供するコード生成、オートコンプリート、リファクタリング-マイコードの黒魔術をすべて必要としません。 JavaまたはC#をコーディングしている場合は、まったく切り替えようとはしません。

1

Emacsを長年使用している私は、emacsを編集および開発環境として非常に快適だと感じています(ある程度、ビルドプロセス、バージョン管理、迅速な状況依存検索などとも統合されているため、資格があると思います) 「IDE」として)。

また、viやviのようなエディターを使用することに非常に慣れています(私はedを使い始めました。emacsが複雑すぎると思ったためです。振り返ってみると、逆ですが、将来のviの学習のための確かな基盤ができました)。私は主にemacsがインストールされていないリモートマシンで主に「小さなクイック編集」にviを使用しています。

「サーバーにSSHで接続して設定ファイルをいじる必要がある場合があります。このためにviを使用します」シナリオでは、コマンドの小さなセットとviに関するいくつかの一般的な考えをお勧めします。

  • Viはモーダルではなく、「a」(追加)、「A」(行末に追加)、「i」(挿入)、および「I」(行の先頭に挿入)コマンドがあり、テキストを挿入します。引数として、Escで「コマンドの終わり」を通知
  • h、j、k、lは移動キーです。矢印キーを使用して機能する場合がありますが、通常のVTスタイルの「私は矢印キーです」のシーケンスがEscで始まるため、これは、考えていないテキスト挿入コマンドを中断します。
  • linenumは、行linenumに移動します。1行目が先頭ですほとんどの行と行$は一番下の行です
  • は「最後のコマンドを繰り返す」コマンドです(最初の箇条書きを参照)

「テキストファイルは自信を持って編集できますが、効率的ではない可能性があります」という状態になるのに、viをいじって1〜2時間以上かかることはありません。 。それに失敗すると、タブとスペースの間の自動変換に煩わされないエディタであれば、目的に応じて「十分」であるはずです。 Eclipseがリモートサーバーにallでインストールされている場合、実際にそれを大きな問題として使用することはないと思います。

1
Vatine

Eclipseに満足している場合は、切り替えないでください。

必要な場所でEclipseを使用できる場合は、切り替えないでください。

プロジェクト/会社がほとんどEclipseのみを使用している場合は、切り替えないでください。

他に必要なことがほとんどない場合は、 cheat-sheet を1つのエディターに出力し、必要なときに引き出しから引き出して、Eclipseの使用に戻ります。

SOで(同じ)質問を参照してください: https://stackoverflow.com/questions/1346820/what-are-the-efficiencies-afforded-by-emacs-or-vim-vs-Eclipse

「それを使用する人々は実際に大規模組織の複雑なオブジェクト指向プロジェクトに取り組んでいますか?」と答える限り、 -あなたの帽子のソニーを握ってください、しかし答えは「はい」です。私は、この質問をするために使用しているコンピューターを実行しているCPUを設計するクリティカルパスで使用されている数千万行のコードを含むプロジェクトに取り組んできました。そして人々はEclipseを試しましたが、それが遅すぎて不格好であることがわかりました(確かに、私たちはJavaを使用していませんでした)。

1
Trey Jackson

私は非常にEmacsの人です。私はすべてのプログラミングにそれを使用しており、同僚にも積極的に使用するよう勧めています(そして、彼らは私を積極的に無視します)。どのIDEよりも生産性がはるかに高いので、変更することはありません。

私がJavaまたはC#を書いているのでない限り(そして私はこのカテゴリに他の言語があると思います)。それらには、長い名前のstuffのこのような大きなライブラリがあります。 [〜#〜] i [〜#〜] Emacsを使用して取得するすべてを覚えようとすると、完全に失われます。

try vimやEmacsをお勧めします。しかし、おそらくEclipse for Javaに戻ることになるでしょう。

1
MattBelanger

Emacsとvimはどちらも非常に構成可能で強力なエディターであり、基本的な概念を理解すれば、どちらも生産性を大幅に向上させることができます。

Viは、本質的にセットベースの操作で勝利します。たとえば、クラス定義で「foo」のすべてのインスタンスを「bar」に変更することは、ワンライナーです。

Emacsも同様に強力ですが、Emacsを最大限に活用するには、Emacs LISPを学ぶ必要があります。

どちらの場合も、everythingにemacsまたはviを使用する場合にのみ切り替える価値があります。

1
Larry Coleman

最良のツール(短期的には)は、あなたが非常に熟練しているツールです。

人々は30年以上前のテクノロジーを使用しています。彼らは、これらのツールを中心にワークフローと習慣を構築しました。 Eclipseのような最近のIDE=に慣れている場合は、切り替える理由はそれほど多くありません。Eclipseをより効率的に使用する方法を学ぶことは、時間の投資(たとえば、- Mylyn )。

1
dbkk

個人的には両方のプログラムが私を壁に駆り立てます。 Eclipseの問題は、大規模なプロジェクトで作業しているときは遅く、「DGLPインデックス作成」などを実行していないときです。リポジトリを更新しますか? 15分?ああ、どうやってCtrl-Cを入力してからCtrl-Pを押してどこかに移動するのではなく、まったく別のファイルを開いて別のファイルを貼り付け、wtfがそこにあるのではないかという気の利いたトリックはどうでしょう。そもそも。ああ、私はvpnを介して大規模なプロジェクトでEclipseを操作することについて言及しましたか?実質的に不可能。

Vimについては、その素晴らしくて高速で、完全に無意味な多数のキーの組み合わせを知っていると仮定すると、何か未知のモードに偶然に遭遇した場合に幸運をもたらすことができます。また、vimを使用すると、正しいファイルを開くために、プロジェクトのディレクトリ構造全体を頭の中でかなり知っている必要があります。 Vimの主な利点は、理論的にはすべてのキーがあるため、コードをより速く作成できることですが、実際には、私が書いているテキストの量は気になりません。コードは、何十ものファイルを何時間もじっと見つめて、タイプする正確な正しいもの(通常は非常に短い)を見つけるまで必要です。

私が望むのは、誰かがvimのようなコマンドラインプログラムを書いて、実際にはEclipseのようなディレクトリ構造か、ファイルを展開/折りたたんだり開いたりできるディレクトリ構造を持っていることです。誰かがこのようなことを知っていますか?

0
Dallas Caley

利用可能なさまざまなUNIXエディタに問題はありませんが、抗議して使用するだけです。私が言うように、私はそれらに問題があるからではありませんが、私がそれらを使用しなければならない場合、それは私たちの展開プロセスが何らかの形で欠けていることを意味するからです。

これはおそらくもう少しコンテキストに値します。私は大規模なeコマースソリューションに取り組んでいます。システムの実行を管理するすべてがワンクリックのビルド/デプロイプロセスによって生成されます。テスト環境の配列があるので、いつでもEclipseを介して変更を加え、それをcvsにチェックインしてビルド/デプロイをトリガーし、修正が機能したことを証明できます。つまり、「vi」でハッキングしているのは、デプロイメントの1時間のターンアラウンドを待つことができないか、デプロイメントが編集中のファイルをカバーしておらず、実行するために拡張する必要があるためです。そうでなければ(そうでなければ、問題のファイルを変更する必要がある次回はviでハッキングします)。

0
DanW