大規模なアプリケーションをコーディングするときにVimを使用する


17

私はVimを学び始めており、stackexchangeでここで与えられたいくつかのアドバイスに従っています。私はいくつかのおもちゃのプロジェクトでそれを使い始めています、そしてそれで私はクールです。
しかし、そのクラスの名前や他のファイルに含まれるマクロなどを知るためだけに、常に他のファイルを開かずに生産性を高めることができるのだろうかと思い始めました。

あなたが与えることができる一般的なアドバイスは何ですか?


1
あなたは間違いなく助けるためにいくつかのVimスクリプトを追加する必要があります。私はVimを使用して多くのプログラムを作成し、常にctagsを使用してソースコード内を移動します。使用している言語は何ですか?
tehnyit

回答:


10

IDEからコンソール/ xterm環境に移行する経験豊富なプログラマーの1つの側面は、ソースコードオブジェクト(関数名、変数)のインデックス作成の代替を見つけることです。MicrosoftのVisual Studioで使用されている一般的な用語は、Intellisenseなどです。

Unix / Linuxの世界では、vim、ctags人気のある複数言語のオープンソース実装である熱狂的なctagsが使用される1つのツールです。それはないがvim、特定、およびUnixやLinux、MS Windowsの数によってサポートされていると、Emacs、さわやかな、下劣&他のviクローンの数、nedit、geditの、JED、ウルトラ、BBEditの、とDreamweaverなど、Mac OSのテキストエディタ、 (これらの一部はサードパーティのプラグインを介しています)。

それに加えて、優れた設計と思慮深い分解、大規模なプロジェクトの組織化により、特定の情報(typedefまたはclass定義など)を探すための明らかな潜在的な場所が1〜2個しかないという点で、プロジェクトを管理しやすくします。

また、vimの複数のインスタンス(多くの場合view、ソースファイルの読み取り専用表示用)と、vimインスタンスごとの複数の編集バッファーの使用制限(主にファイル間でコードを移動またはリファクタリングするため)を使用します。一度にいくつかのソースファイルのみを開いて使用することで、手元のタスクに集中することができます。


1
活発なctagsを提案するための+1 !
アッティラO.

1
整理するだけで大​​いに役立つことがわかりました。ソース内のアーティファクトを見て、「この場所で定義する必要がある」と言うことができれば、物事はずっと簡単になります。プラス側ではvimのセッションを起動するので、高速一度にオープン半ダースを持つことが、かなり正常なものになることである
ザカリーK

@ZacharyK半ダース?私は通常一日の終わりに完全なダースを持っている
Izkata

日によって異なります
ザカリーK

7

VIM対IDEの議論に参加するつもりはありません。それは個人的な好みだと思います。しかし、私は多くのVIMを使用しており、vimを使用するのが非常に強力であると思う理由

答えの2つの部分:

A. VIMを使用すると、IDEでできることのほとんどが可能になります(すべての機能を追加しようとはしていませんが、viの外観を制限する非自明な機能をいくつか追加しようとしています)

  1. ctags有効にしている場合は、プロトタイプをトラバースできますctrl+{

  2. :sp 'filename'コマンドを使用して、複数のウィンドウを同時に開くことができます。もちろん、人生をもっと楽にするために複数の端末を開くこともあります。

  3. 強力な構文強調表示。デフォルトおよびその他のもの。また、一部のIDEとは異なり、開いているブレース、文字列の不一致、または閉じているブレースと一致しない場合は、非常に明確な兆候を示します。特定ではなく、ほとんどの言語向けです。

  4. ":!make"ウィンドウを出ることなく、コマンドを使用してコマンドラインを実行できます。

  5. トラバースはるかに高速検索(あなたが利用可能な場合はviのサポート正規表現)に基づいて、単語に基づいて、あなたが通過することができます{}使用ESC %

  6. ステップデバッグを行い、viを保持しながら(コードを操作するための別のウィンドウで)GDBで作業することができます。ファイルを変更することにした場合は、再度作成してGDBにリロードできます。

B. VIMでより多くのことがわかる

  1. 検索と置換は間違いなくはるかに強力です。

  2. カスタムのルックアンドフィールと(白+青とは反対の黒+緑)およびより重要な独自の強力なコマンドを作成できます。

  3. 垂直ブロック選択。ctrl+vカーソルを垂直に動かしてみてください。これは本当に想像を絶する機能です!

  4. 音が聞こえますが、ブロックを切り取り/コピーして、30回貼り付けてください!1回行うよりも労力はかかりません。また、アクティビティを1回または複数回やり直します(元に戻すことはできません)。

  5. 自動インデント、タブコントロール、ブロックコメントまたは特定のスタイルのコメントに変換する自動化された方法。

  6. vimdiffとの効果的なマージ競合。

  7. コンソールベースの作業環境で最も重要なことは、マウスに触れないことです!だから、キーボードの速度が速い場合、IDEは良くありません。

  8. 複数のマシン、サーバーで同時に動作します!明らかではないように見えますが、サーバーで作業しているときに、複数のマシンに直接ログインして何かをすることがあります。

これらの機能が深刻な要求にある場合、viで行う方法について回答します。このサイトVimcastを参照してください。もちろん、たくさんあります。

しかし、はい、ほとんどのコンソールベースのものは時代遅れであり、IDEに対して何かを言っているわけではありません。


小さなメモ:vimには:makeコマンドが組み込まれていますが、必要さえありません!(vimを使用しない人は端末でコマンドを実行します)。そしてctrl-v、数週間前に見つけたばかりで、今では絶えず使用しています。非常に便利です。
ケビン

@Kevin-OK <code>:make </ code>について知らなかった!これは知ってエキサイティングでした。これは、VIMで得られる一種のロマンスです。VIMで実現できる機能の完全なリストを作成することはできません。それはいつもあなたを驚かせ続けます。ありがとう。
ディパンメタ

ええ、それは素晴らしいことです。の利点は:make、最初のエラーに自動的に移動することでcnありcp、とでナビゲートできることを参照してください:help make。実際に調べてみるまで、そのことに気づきませんでした。私は通常、別のウィンドウとpwdで作成します。Makefileと同じものにする必要がありますが、ルートに移動してそこに作成するためにsrcディレクトリに置くことができます。
ケビン

4

私の意見では、Vimは基本的な機能を備えた非常に強力なエディターを提供しますが、プロジェクトで使用する可能性が高いスクリプト/アドオンを追加するのはユーザー次第です。これらはおそらく、コンパイルする必要があるスクリプト、ドキュメント、またはファイルのほとんどを編集するかどうかによって異なります。

例として、私が使用してzencoding、HTML / CSSの編集時折のためのsnipmateスニペット、とのpython-関連のアドオン(のカップルのようなTextMateのためにpyflakespep8vimpdbPythonは最も頻繁に私は何をすべきかである、コーディングのため、など)。

それから、私が頻繁に使用しない他のアドオンがありますが、やのようにDpaste、たまに役立つことがありますConqueTerm

それでも、私にとって、Vimの最も便利な機能は組み込みです(時間ベースの取り消し、クイックナビゲーション、範囲フィルターなど)-見つけることができなかった(または少なくともアクセスしにくい) )IDEで。そのため、Vimをセットアップして、本当に必要なIDEの一部(snipmatectags...)を用意したら、IDE 環境とコンソール環境の両方から利益を得ることができます。

Vimの使用はコンソールのみであるため、これらのツールがGvimにどれほど役立つかは言えません。

すべてのアドオンの良さにもかかわらず、しかし、私はまだ自分自身が実行して見つける!grep ...か、^Z + find ...すべての今して。


3

私はすべてのプログラミングをvimで行います。実際、私が使用したどのIDEよりも簡単です。同じ画面(タブやウィンドウを検索)でも、複数のファイルを同時に開くことができます。私は通常Xで作業しているので、いくつかの(6つの)xterm画面を開いています:vimのcファイル用(タブで数個)、vimのヘッダー用(タブも)、vim以外のウィンドウ:ビルド、デバッグ、設定など。純粋なコンソール上であっても、タブ、ウィンドウ、コード折りたたみを使用して必要なものを確認し、vimを終了せずにマンページを構築し、表示することもできます。正しいコマンド。そして、非常に多くあります、私はそれらの半分を習得していないと確信しています。そして、vimの検索と置換に勝るものはありません。


1

多くの大規模なアプリケーションは(私の場合、少なくとも2つです);私の推測では、さらに多くのアプリケーションが完全にVimで記述されます。IDE自体は、いまだにかなり現代的な革新です。

ただし、単純なvanilla vi(ouch)またはVimには少し欠けています。Vimを知り、その方法のいくつかを考えることは少し助けになり、プラグインは多くの助けになります。www.vim.orgはその限りない情報源です。使用している言語に固有のものと、一般的なもの(コメント用、ファイル参照用、...)が、非常に迅速な開発環境にすばやく変換します。結局、IDEは、プラグインがより優れたインターフェイスに詰め込まれた単なるエディタにすぎません(そして、一部の人は間違いなく議論するでしょう)。IDEにも多くのグラフィカルなものはありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.