VimをJava IDEとして使用するためのヒントは?[閉まっている]


195

私はVimにハマっています。今では、これが事実上のテキストファイル編集方法です。

それは主にIDEではなくテキストエディターであるため、Javaアプリの開発を簡単にするためのトリックはありますか?

私が持っているいくつかの質問:

  • viを終了せずにMavenタスクを呼び出すにはどうすればよいですか?
  • コード補完を取得できますか?
  • 構文の強調表示はどうですか?

他に知っておくべきこと(「やらないで!」以外)


1
私は仕事でnetbeansを多用していますが、自宅の個人サーバーでは...別のコンピューターで開発を行ってからデプロイする必要があるため、NetBeansの使用はうまくいきません。往復が長すぎます。
Allain Lalonde、

1
@AdamC Googleからのインバウンド... Pythonからの自認のコマンドラインオタクとして、Java開発環境でセットアップを始める際の障壁は、そのようなプログラムを必要とすることによって大幅に高まっていると思います。私はすでにJVMをインストールする必要があります... hello worldを実行するためだけに、さらに多くのインストールを行う必要があるのはなぜですか?これは、Javaを最初に学習したときに、スクリプト言語を使用する人々の一般的な傾向にすぎません。
DeaconDesperado 2013

2
VIMで編集しているとき。コンソールに戻るには、ctrl + zを実行するだけで、vimがバックグラウンドになり、コンソールに戻ります。次に、fgコマンドを使用してvimをフォアグラウンドに戻すことができます
Matthew Kirkley 2013年

ctrl =する必要はありません
fuzzyTew

3
ctrl + z / fgを押す必要はありません。単に:!commandと入力すると、「command」が実行されます。簡単なシェルが必要な場合は、:!bashと入力してください。その後、終了した場合、ぶら下がっているバックグラウンドジョブを残す代わりに、vimに戻ります。プラグインを使用してvimウィンドウでシェルを取得できます。
fuzzyTew

回答:


75

いくつかのヒント:

  • 必ずvim(vi改善)を使用してください。LinuxおよびUNIXの一部のバージョンでは、viからvimへのシンボリックリンク。
  • eclimでコード補完を取得できます
  • または、viPluginを使用してEclipse内でvi機能を取得できます
  • 構文の強調表示はvimで優れています
  • Vimは、ant / mavenビルドの実行などの小さなマクロの作成をサポートしています。

楽しんで :-)


7
Java構文の強調表示に関するヘルプを表示するコマンド。:help java.vim
Michael Ekoka

2
Eclipse内でVim機能を取得する別の方法は、Vrapperです。ほとんどのVimキーバインディングがあり、viPluginとは異なり無料です。
n1te 2013年

1
ステップオーバー、ステップスルーなどをサポートするデバッガーはどうですか?
Donato

1
Linux ... symlink vi to vim反例:Arch Linux
johnchen902

30

私は何年もVimユーザーでした。私は時々Eclipseを起動し始めています(viプラグインを使用していますが、これにはさまざまな問題があります)。主な理由は、Javaビルドにはかなり時間がかかることです...そして、mavenのような高度にコンポーネント化されたビルドフレームワークが追加されて、徐々に遅くなっています。そのため、変更の検証にはかなり時間がかかる傾向があります。これは、多くの場合、後で解決する必要のあるコンパイルの問題を山積みにすることにつながり、コミットメッセージによるフィルタリングにはしばらく時間がかかるようです。

コンパイルの問題のキューが大きくなりすぎると、Eclipseを起動します。それは私が変化の簡単な仕事をするのを許します。遅くて使いづらいし、Vimほどエディタの素晴らしさは劣ります(私はVimを10年近く使ってきたので、私にとって2番目の性質です)。特定のバグを修正する必要がある、特定のロジックの一部をリファクタリングする必要があるなど、正確な編集が必要だと思います... Eclipseでの編集は、Vimでできるほど効率的ではありません。

また、ヒント:

:set path=**
:chdir your/project/root

これにより^wf、クラス名が大規模なプロジェクトをナビゲートするための非常に優れた機能になります。

とにかく、細いのは、たくさんの新しいコードを追加する必要があるとき、コンパイルの問題や同様のものを追跡するのに費やされた時間のために、Vimは私を遅くしているようです。ただし、特定のソースを見つけて編集する必要がある場合、Eclipseはそりハンマーのように感じます。私はまだVimの魔法のIDEを待っています。私が知っている3つの主要な試みがありました。純粋なviml IDEタイプのプラグインがあり、多くの機能が追加されていますが、使用するのは不可能のようです。eclimがあります。そして実際にVimを埋め込むEclipse用のプラグインがあります。最後の1つは、真に真面目なJava EE作業にとって最も有望であるように見えますが、非常にうまく機能していないか、Eclipseのすべての機能を組み込みのVimと実際に統合しているようには見えません。

キーストロークで欠落しているインポートを追加したり、入力の問題を伴うハイライトコードを追加したりすることなどは、IDEから大規模なJavaプロジェクトで作業するときに非常に貴重なようです。


5
「^ wf」に投票するvimにそのようなものがあることを知りませんでした:)
KrzysztofKrasoń11

4
^ wfについて詳しく説明できますか?それは何をしますか?
user2427 2011年

1
ファイル.javaを見つけることができる場合、新しい分割ウィンドウのカーソルの下にあるjavaファイル/クラス(ファイル名拡張子は不要)を開きます。それ:set path=**が役立つ理由です。
exic 2012

**は文字通り2つのアスタリスクですか?
taco 2014年

1
@lijat :help ^wf-ちょうど他のvimのヘルプのような
JESii

22
  • viを終了せずにMavenタスクを呼び出すにはどうすればよいですか?

    Mavenは他のシェルコマンドと同じです。

    :!mvn

    :set makeprg=mvnお気に入りのキーマッピングがある場合は、これを行うことができます:make

  • コード補完を取得できますか?

    はい、eclimは素晴らしい、vimの編集効率とEclipseのJava言語固有の認識との間の架け橋です。

    <C-n>そして、<C-p>それほど大きくはないが、驚くほど便利です。

  • 構文の強調表示はどうですか?

    正規表現ベースのハイライガーには十分すぎるほどです。

コードテンプレート(snippetEmu —デフォルトのスニペットは吸うが、カスタマイズ性は優れている)、使用方法の検索、宣言への移動(eclim、grep、ctags)、ゲッターとセッターの生成(java_getset、またはeclim)、自動インポート(eclim)。簡単な実験には、Javaシェルも必要になる場合があります(BeanShell、別名bsh)。


1
BeanShellのヒントをありがとう、そのツールについては知らなかった
GoingTharn



8

これはかなり数年後のことですが、興味深いプラグインをいくつか紹介します。私はまだこれらのどちらも試していませんので、YMMVです。

https://github.com/mikelue/vim-maven-plugin

https://github.com/vim-scripts/maven-ide

編集:ああ、ところで、私はeclimをオフにしてからオンにしてみましたが、vimが好きな理由はその軽さです。ヘッドレスモードでもeclipseを実行することは、私にとってはあまりにも精神的なリフトです。

EDIT2:私は最近playframeworkを使用しており、これはおそらくMavenビルドでも動作します:

  • コンパイルの場合、VIMのmakeを構成してmavenを実行するか、私の場合はビルドスクリプトを実行して、ファイルにティーすることができます。

    autocmd Filetype java setl makeprg=play_compile
    autocmd Filetype java setl efm=%A\ %#[error]\ %f:%l:\ %m,%-Z\ %#[error]\ %p^,%-C%.%#

「play_compile」は単なるコンパイルスクリプトです。これはSBTを使用しているため、Mavenはここで問題なく動作するはずです。直接javacでも機能します。このようにして、VIMのクイックフィックスバッファー(:cnext、:clist:cprevなど)を使用できます。

  • クラスをジャンプするには、ctrl-pを使用します。美しい。これを使って。ファイルをジャンプする際に日食よりも速い。

  • メソッドをジャンプするために、私はあふれんばかりのcタグでtagsearchを使用します。ctrl-]を使用して、メソッド宣言にジャンプします。Ctrl-oを使用して戻ります。日食ほどうまく機能しませんが、十分に機能します。

  • 私はコード補完にスーパータブを使用しています。Javacompleteはかなり遅いため、オムニコンプリートを使用します。繰り返しますが、日食ほど正確ではありませんが、高速で十分機能します。


5

vimを使用します。^-^(正確にはgVim)

あなたはそれをすべて持っています(いくつかのプラグインで)。

ところで、snippetsEmuは、有用なスニペット(TextMateなど)を使用してコーディングするための優れたツールです。既製のパッケージを使用(または変更)することも、独自に作成することもできます。

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