テキストエディターを探すときはいつでも、使用している言語に関係なく、 vi および Emacs は有名です。
しかし、それらは古く、私たちはより良い代替案を持っています(少なくとも私はそう願っています)。
開発者がこれら2つのエディターに行き詰まっているのはなぜですか?それらを落として、新しいものを発明したり探したりするべきではないでしょうか?
(私はEmacsとviのファンを尊敬しています)
私が本格的なIDEよりもターミナルベースのエディターを好む主な理由:
ssh
を実行し、Vimを起動して作業を開始できます。日常的に、screen
セッションとVimを使用すると、どこからでも簡単にアクセスできます。IDEはプロジェクト内でクラスを配置するのに適していますが、私にとって、Vimを使用すると私の生産性は桁違いに高くなります。
プログラマーは、可能な限り最も効率的な方法で作業を行うのに役立つツールを使用することで悪名高くなっています。これらのエディターは古くから使用されていますが、優れた堅牢なエディターであり、時間によって証明されています。彼らがその仕事を成し遂げ、その仕事を成し遂げるならwellなぜ私たちは彼らを他の何かのために捨てるべきなのでしょうか?
あなたは彼らが進化しないと思います。 Emacsは飛躍的に成長し続けています。そして、vi
が一種の悲惨さを増している間、Vimはそれを活性化し、Emacsよりも(少なくとも機能的に)速く成長しています。
しかし、それが重要なのは、それが最も重要なことです。 Eclipseの生産性が最も高い場合は、より強力です。 Vimを好む場合も同じです。
私が知っている最高のプログラマーの多く(ほとんど?)はIDEを軽蔑し、Emacsだけに依存しています。私はそれほど熱心ではなく、EclipseとEmacsの両方を使用していますが、Emacsを使用することを好む理由がいくつかあります。
すべての言語で一貫したエクスペリエンス-一部の新しい言語(Scala、Clojureなど)のEclipseでのサポートは、一貫性がなく、最低でも劣ります。プラグインの作成者は、エクスペリエンスの改善に取り組んでいますが、私はしばしば、ぎこちない感じの小さなことに出くわします。もちろん、いつでも別の言語に切り替えることができますIDEこれは、その特定の言語をよりよくサポートしていますが、今ではIDEをジャグリングしています。
嫌いIDE "magic"-IDEは便宜上、多くのことを自動的に行う傾向があります。これは何かが壊れるまでは素晴らしいです。それから、物事を軌道に戻すための苛立たしい、あるいは苛立たしいプロセスになる可能性があります。
私は Redcarエディター に切り替えるというアイデアをいじっています。 Emacsのように拡張可能ですが、 Emacs LISP の代わりに JRuby を使用します。それは軽量で、完全に本格的なIDEではありません。 TextMate を使用している場合は、TextMateバンドルと互換性がありますが、無料でオープンソースであるという利点があります。特にRuby開発者にとっては、ぜひチェックしてみる価値のあるツールです。
それらを落として、新しいものを発明したり探したりしてはいけませんか?
tl; dr:多くの人々は新しいエディターを学びたくない
完全な答え:
UNIXウィザードは、弟子が勉強している彼の弟子のコンピュータールームから苦痛の叫びを聞き、調査に行きます。
彼は見習いに明らかな苦痛を感じており、ほぼ涙の危機に瀕しています。 "どうしたの?"彼は尋ねます。 「なぜ泣いたの?」
「このシステムを使うのはひどい。研究を終わらせるには毎日4人の編集者を使わなければならない。なぜなら、彼らの1人がすべてを行うわけではないからだ。」
ウィザードは賢くうなずき、「そしてこの明らかなジレンマを解決するために何を提案しますか?」
学生は数分間注意深く考え、それから彼の顔は喜んで明るくなります。 「まあ、それは明白です。私はこれまでで最高のエディターを書きます。既存の4人のエディターが行うすべてのことを行いますが、彼らの仕事をよりよく、より速くします。そして、私の新しいエディターのおかげで、世界はより良い場所。"
ウィザードはすぐに手を挙げ、弟子の頭の側面を叩きます。ウィザードは古くて虚弱で、見習いは肉体的に傷ついていませんが、何が起こったかにショックを受けます。彼は頭をウィザードの方に向けます。 「何を間違えたの?」彼は尋ねます。
「ばか!」魔法使いは言います。 「私はさらに別の編集者を学びたいと思いますか?」
すぐに見習いが悟ります。 http://neugierig.org/content/unix/
IDE(Visual Studio、Eclipse、IntelliJ)は、emacs/Vimで解決するよりも別のクラスの問題を解決するのに適していると思います。
多くのライブラリとすべての要素間の高度な統合(Microsoftのようなサウンド)を備えた、コード化する大規模なプラットフォームがある場合、IDEはその価値があることを証明します。これを「ライブラリを貼り合わせる」と呼び、「実際のコード」であるとは限りません。エラーを早期にキャッチするときに(Emacsでもできない方法で)非常に役立ちます。
(たとえば)Android用のエンドユーザーアプリケーションを開発する場合、実際にはEclipseなしでcanを実行します。ただし、デプロイする前に追加する必要があるすべての種類のファイルについては、Eclipseはそれらのタスクを自動化することにより、非常に役立ちます。
したがって、多くのライブラリを備えた1つのプラットフォームのみで作業するアプリケーション開発者(Java EE、.NETなどでエンタープライズクラスのアプリケーションを開発している場合)は、IDEがワークフロー。ただし、ターミナル環境(Unixサーバーなど)で定期的に作業する必要がある場合や、さまざまな言語を使用している場合は、IDEでVim/emacsの品質を測定することはできません。
最後に、Vim/emacsを使用して作業すると、使用する前に少なくともプラットフォーム/言語を少し理解する必要があります。多くのIDEでは、何が起こっているのかを知らなくても言語で操作できます。そのため、Vim/emacsを使用すると、自分が実際に何をしているのかについてある程度の洞察を得ることができます。
コンピューティングの約40年の間に、学生および専門家として、私は少なくとも15の異なるエディターとIDEを使用しました。それらすべての中で、emacsは断然最高でした。
まず、複数のファイル間や個々のファイル内の複数の場所を行き来するのに時間がかかりすぎて、一度に複数のファイルを表示したり、一度に2つ以上のファイルを表示したりすることを拒否するエディターで快適に操作できません。 Emacsが唯一のエディターまたはIDE必要なすべてを一度に表示できるようになりました(数年前、レガシーシステムを調査している間、日常的に8つのペインを開いていましたemacsウィンドウ。今日でも、通常3つまたは4つのペインを開いています。複数のシェルが必要で、結果をコピーして貼り付ける必要があるため、emacsの呼び出しを2つまたは3つ開くこともあります。)
第二に、私はまだ人間であり、時々間違いを犯します。私がこれまでに使用した他のすべての編集者は、警告なしで回復することができず、足を撃ち落とすことを完全に喜んでいました。 (私をもたらしたものは、チャールズ・シモニーがゼロックスPARCにいる間にマイクロソフトに行き、世界にハンガリー語の表記法を適用する前に、リンチを完全に柔らかくする行為のように、リンチをほとんどリンチさせた人びとほど悪くはありませんでしたEmacsは私にこれを行ったことはありません。それは私に大きな警告を与えることなく何も取り返しのつかないほど破壊したことはありません。まだemacsを初めて使用していた頃は、「何が起こったのか」とたまに行くことがあり、数秒で何ができるのかを常に理解し、それをすばやく修復する方法を知っていました。
実際には[〜#〜] enhances [〜#〜]生産性を高めるエディタなどはありません。あなたが得ることができる最高のものは、生産性の低下を最小限に抑えることです。私にとっての測定基準は、「これでどれほどひどく遅くなるか」です。 emacsと比較して、私が通常行うことの種類に関しては、他のすべてがはるかに悪いです。
私の[〜#〜] only [〜#〜] emacsでの不満は、私がかなり数年前にOberonで遊んでいたとき、Oberonでは利用できなかったことでした。
子供の頃のBASICのほんの少しを除いて、私はUnixでプログラミングを学びました。 Unixの哲学は、相互運用する小さなツールを数多く持つことですが、それぞれが1つの仕事をし、それをうまく行うことに焦点を当てています。したがって、編集、コンパイル、ソース管理、およびデバッグ用に個別のソフトウェアを用意するのは自然なことです。興味深いことに、IDEは「統合」されていますが、すべての機能を一度に1つのウィンドウに収めることはできないため、パースペクティブのようなものになってしまいます。 。
私はそれを逆にして、なぜ非vim編集がひどく遅くなるのを容認するのかを尋ねることができます。誰かがコードを編集しているのを見ている感覚を私が説明できる最良の方法は、彼が電話に出ているために時速10マイルを超える車の後ろで動けなくなったとき、または比較的速いハントアンドペックタイピストを見ているときのように感じるときです。 。彼らは仕事を成し遂げるのに十分な速度で進んでいますが、同時に気が狂うほど十分遅いです。
とにかく考えることに多くの時間を費やしていると言う人が多いので、少し速く編集してもそれほど大きな違いはありません。その場合、タイピングは中断であり、数秒の追加の編集により、思考のトレインを維持するか、それを取り戻す必要があるかが異なります。また、あなたが長年のタッチタイピストであれば、どのキーを押すかを意識することなく、指が一般的な単語を入力することを知っています。長い間vimを使用している場合、そのような流動性は、線や単語を移動するような場合に発生します。 「これらの2行を削除する」で「削除する」と言うのにかかる間、私の指はすでにそれを行っており、私の集中力は完全に壊れていません。
Vimも非常にカスタマイズ可能であり、インストールされたプラグインとvimrcは作業が進化するにつれて進化します。何かが邪魔になり始めたら、それを行うためのより良い方法を調べ、それを構成または一般的に使用されるコマンドに組み込みます。私は1993年にviを学びましたが、自分のニーズが変わったときでもカスタマイズを行いました。ちょうど今週、タブのファイル名補完をbashのように動作するように変更しました。ワークフローが最近より多くのことを行うように変更され、デフォルトの動作が気になっていたためです。
また、学習する価値がないことについても同意しません。コードの編集速度が同様に向上するため、viで生産性を感じるよりも、タイプをタッチすることを学ぶのに長い時間がかかりましたが、タイプをタッチすることを学ぶのにかかった時間についてプログラマーが文句を言うのはわかりません。自分のスピードで学習し、新しいコマンドをレパートリーに追加することができます。 vimrcでset im
から始めた場合(insertmodeを表しますが、同僚が私のデスクでタイプする必要があるときのために、私はそれをイディオモードと呼んでいます)、vimをまったく使用していないことに気付かないかもしれません!
私はVimユーザーです。
私が取り組んでいるプロジェクトのためIDEを使用する必要がありますが、それを回避できないことがあります。私は Code :: Blocks と Eclipse を使用することにかなり熟練していますが、可能な限り、上記のIDEのユーザーインターフェイスがVimのユーザーインターフェイスのように機能するようにしています。
自分の Vimの配色 があり、他のIDEのテキストエディタもまったく同じように機能させたい。
テキストエディターがなく、必要なエディターをプラグインできるIDEが欲しいのですが。標準のVimをEmacsまたはCode :: Blocksに接続できたとしても、残りのIDEの周りにあるとしたらどうでしょうか。
それはどういうわけかIDE開発者の範囲を免れましたが、大規模なプロジェクトにVimとMakefileのみを使用している場合、またはIDEとその厄介なテキストエディタ。
私のIDE選択はLinuxです。ヘック、他のIDEを実行したり、ウェブサイトにサービスを提供したり、さまざまな言語でプログラムを実行したりできます。ああ、それはインターネットに接続して、それ自体で他のバージョンのスポーンも含めて、あらゆる種類の興味深いことを行うことができます。
すでにLinuxを使用している場合は、IDEで妥協しないでください。
私はプライマリエディタとしてEmacsを使用しています。私が真剣に検討した他の編集者は、vimとTextMateだけでした。 IDE(および私はEclipseを含むいくつかを試しました)には、必要な機能がありませんでした。
私は実際にずっと前に私の同僚とこの会話をしました。 IDEは、マウスを使ってたくさんのボタンやメニューをクリックしているときの方がはるかに優れていると彼に教えてくれました。
次の機能を備えたエディターを試してみます(これらはすべて、私が開発する方法において重要です)。
私はまた、自動プログラミングツールを役に立たなくするメタプログラミングを行う傾向があります。 IDEが得意とする分野の1つです。
同様に豊かな遺産(および論争)を持つ他のエディターが発明され、1970年代に最初に記述されたツール(vi/Emacs)から1980年代のツールに切り替えるまでに時間の問題かもしれません( Sam )または1990年代の1つ( Acme )。
「サムは多くの著名なコンピュータサイエンティストのお気に入りのテキストエディタです。ケントンプソンのお気に入りのテキストエディタとして ed に取って代わりました。サムは今でもこのテキストエディタを使用しています。サムは、Bjarne StroustrupとBrianが使用するテキストエディタです。カーニハン。デニスリッチーのような他のメンバーは、代わりにAcmeを使用するようになりました。」これがウィキペディアの Sam記事 です。
しかし、私は何を知っていますか、私はまだVimを使用しています。
たまにed
をまだ使用しているのは私だけですか?
(そして、コードの膨張が関係していると考える人々にとって...
$ size /bin/ed
text data bss dec hex filename
42160 2300 0 44460 adac /bin/ed
$ size /bin/vi
text data bss dec hex filename
692378 27796 13884 734058 b336a /bin/vi
$ size /usr/bin/emacs
text data bss dec hex filename
2033257 4692020 0 6725277 669e9d /usr/bin/emacs
)
Edのもう1つの利点は、テレタイプで実行できることです。
私は変なアヒルだと思っていましたが、実際には状況に応じてさまざまなエディターを使用しています。
Vim:
離れたサーバーに接続(ssh'd)していて(たとえば、ログを見て)、ファイルをすばやく編集してTweakを作成したい場合。ローカルデスクトップから同じフォルダ(SANホスト)に移動するよりもはるかに高速です。
メモ帳++:
同じ状況について:簡単に編集できますが、今回はEclipse(企業IDE)が読み込まれるのを待ちたくありません。
Eclipse:
それはコーポレートですIDE私が働く場所です。リモートマシンのEclipseからビルドを直接起動できる社内プラグインがいくつかあります。最も重要なのは、ライブラリを見つけるためのプラグインです。他のチームによって作成され、私たちが作業している(そして、高速なインデックス付けのためにヘッダーをローカルに複製します)私は何千ものライブラリを話しているので...それは本当に便利です;)
OpenGrok/Doxygen:
適切なエディションよりも多くのコードを参照できますが、それでも非常に便利です!私のブラウザーはナビゲートするように構成されているので、ここでうまく利用できます。
結論として、私は、比較的簡単かつまともな速度でタスクを実行できるエディタを使用する傾向があります。
「ベター」は主観的な言葉です。テキストエディターを使用して幸せで生産性が高い場合、「それをドロップして他のものを使用する」と言うXまたはYまたはZは誰ですか?それが企業の方針などによってそれを避けられない状況にしているのなら、私たちには選択の余地はありません。
どちらか一方を使うよりも自分の手を食べたい。 C++をやっていたときは、Visual Studioが大好きでした。 Eclipseはまあまあです。 IntelliJ IDEA は優れています。以前は JBuilder も好きでしたが、何年も使っていません。
インストールされているエディターがviのみである、ほとんどの場合裸のシステムで作業することもあります。このような場合、少なくとも基本的なviコマンドを知ることは本当に役立ちます。
viとemacsも非常に拡張可能であるため、適切な量のプラグインを使用して、完全に機能するIDEにすることができます。私は、マウスを動かすためにキーボードから手を離す必要がないので、viでファイルをより速く編集できます。また、テキストの列を編集したり、貼り付けのために複数の「切り取った」単語を複数のバッファに保存したりできるなど、一部のIDEには見られない機能もあります(ただし、あまり見たことがありません)。
編集者は学ぶのに少し時間がかかりますが、彼らはまた本当に強力です。そして、はい、彼らは皆のためではありません。
おもしろい関連のある読み物は なぜIDEを使うべきなのか?
Viは、学校で最初に学んだ編集者であり、今日最も生産性が高いviです。私は多くのUNIXバリアントを使用しており、すべてのバージョンで使用できます(環境に関係なく同じように機能します)。それは私がそれをするのに必要なことをするので、なぜ変化のために変化するのか.
IDE for my Java work(now Intellij Idea))を使用していますが、viを使用して多くの時間を費やしています。
Areより良い代替案はありますか?先日、短縮しなければならないスキーマ名のリストがありました(Oracleに感謝します)。それらの少なくとも半分は「テスト」という言葉で終わった。 「テスト」を最後から削除し、名前の前に「T」を付けることにしました。 viでは、これは単純な正規表現の検索と置換でしたが、これを実行できる最近の編集者はいますか?