2011-08-31 13 views
9

私はRubyコードのためにVimのオートコンプリートを設定しようとしていて、成功していません。私は物事 "仕事"を意味するが、私はより良いプラグインまたは構成が利用可能になると期待するだろう。VimでRubyのオートコンプリートを設定する方法はありますか?

私はrubycompleteプラグインをセットアップしましたが、まともな仕事をしていますが、RubyMineのようなIDEと比べて何もありません。私は一度それをインストールしたら、それは新鮮な空気のほんの呼吸だった私は何が欠けていたかを参照してください。構文、文脈をよく理解しており、通常は関連する可能性のあるオプションのみを表示します。

多分私は物事を正しく設定していないかもしれません。チュートリアル、ブログ投稿、これについての良い文書(特に最新のもの)を見つけることは不可能でした。時には、さまざまなツールや設定があり、それについての詳細な説明がないことがわかります。

このタイプのコミュニティの標準はありますか?これを達成するための最良のツールは何ですか?任意の良いチュートリアル、ソース、それについて行く方法の手掛かり?

私は、RubymineのようなIDEよりもVimのほうが好きで、適切なプラグイン設定で多くの面でほぼ同じ動作を達成できると言う人がいると聞いていますが、私の経験は同じではありません。軽量でエディタが大好きなので、私は本当にVimを使いたいと思っていますが、生産性が最も重要です.3年前と4年前にブログの投稿を読んであまり時間を無駄にしてしまいました。

+0

Rubyの自動補完機能を持つIDEはほとんどありません。主にRubyは動的であり、実行するのが難しいためです。 Ruby自動補完サポートで見た唯一のIDEはKomodoEditであり、通常は役に立ちませんでした – Earlz

+0

あなたの質問には要件のリストが表示されません。あなたはvimのomni-completeがしないことを何にしたいですか?私はRubyにはまったく参加していないので、本当に助けてくれるとは思っていませんが、あなたの質問をより正確にすることはできますか? – romainl

+0

類似の質問:http://stackoverflow.com/q/4824507/513198 –

答えて

1

言語の詳細な理解が必要なほとんどの操作では、Vimは専用のIDEに比べて不足していることが一般的にわかります。

たとえば、スコープを使用してコードを自動的にリファクタリングすることはできません(foo()をクラスMonkeyではbar()に変更しますが、プロジェクト全体ではクラスApeではありません)。

同様に、オートコンプリートは必ずしもスマートではありません。私はC/C++では、clang_completeのようなツールのおかげで状況が許されると思います。しかし、Javaやそれほど普及していない言語のために、私は完了スクリプトが仕事に頼っていないという気持ちを持っていました。だからあなたはスクリプトで微妙な時間を費やしてしまいます。問題は、優れた自動補完のためには、インタープリタやコンパイラの能力をフルに活用する必要があり、明らかに簡単ではないことです。

私はまだコードの断片を編集するのがより効率的だから主にVimを使い続けますが、状況に応じてVimの隣にIDEを使用します。

Rubyの具体的な状況はわかりませんが、肯定的な回答が得られるかどうかはわかりません。

私の夢は、すべてのIDEが入力モードであるフルであることです。

+2

これは私がvimエミュレーション、例えばVisual StudioのViEmuを好む理由です。あなたは両方の世界の最高を手に入れます。 – Earlz

+0

@Earlz:私はeclipseでViperを使用していますが、それは素晴らしいですが、これも完全な実装になります。 –

2

挿入モードでは、Ctrl + x、次にCtrl + o(オムニ)を押してRubyメソッドのリストを取得できます。すでに入力した場合は、あなたが私のvimfileseacheach_with_indexなど

を取得しますea数文字例えばタブは、バッファ内の別の単語を使用して完了するために、マッピングされています。

NetbeansやRubymineなどIDEほど優れていませんが、十分に機能します。

Ctrl + xを押すと、単語、行などを使用して完全に使用できる他の組み合わせがあります。

ヘッドレスEclipseを使用してオートコンプリートを提供するeclimdもありますが、これを動作させる方法を決めることはできませんでした。 VimをEclipseにインストールして接続するのは簡単ですが、それ以降は...

Snipmateの代わりにea<tab>を展開し、each { |element| }に展開しています。

関連する問題