ラベル idea の投稿を表示しています。 すべての投稿を表示
ラベル idea の投稿を表示しています。 すべての投稿を表示

2011年12月9日金曜日

[Intellij]コード補完を使いこなそう

Intellijには、3種類の補完方法が存在します。
Eclipseだと、補完といったらCtrl + Spaceだけ使っていたらいいと思うけど、Intellijだとこの3種類をうまく使いこなせないと、ちょっと残念な感じになってしまう。

ちなみに、3種類の補完は下の画像のように「Code」→「Completion」から使うことが出来ます。(マウス操作で使うことはまずないと思うけど)

それぞれの補完機能の説明

Basic補完

基本的な補完機能。EclipseのCtrl + Spaceで出来る補完機能と同じ感じの補完となる。(Eclipseとは少し違うかもしれませんが、勝手な想像で書いています)
そのスコープ内で使用可能な変数などをもとに補完候補を表示するので、変数やパラメータとして使用出来ないデータ型のものも候補として表示される。

使いどころとしては、変数やパラメータの補完よりかはメソッドの修飾子やthrows節の例外のようにそこで使用する修飾子やクラスや変数が自明な場合に使用します。(と勝手に思っています。)
こんな感じに補完候補が表示されます。

例えばメソッドの引数でBasic補完を使うと、データ型が一致していて代入可能なものがあればその変数を候補として上位に表示してくれます。
下の画像のように、mのパラメータがStringなのでString型の変数が上位に表示されます。

使い方を間違えるとこんな感じに意味のないものが列挙されちゃったりもします。これは間違った使い方だと勝手に思ってますが。

ほかにもpropertyファイルのキー値をこんな感じで補完してくれたりします。ほかにも色々やってくれると思います。(たぶん)


SmartType補完

SmartType補完は、そこで利用可能なもののみにフィルタをかけて候補を表示してくれます。Basic補完のように使用可能な変数やクラスを候補として列挙することはなく、使用可能なものがなければ、ないよと教えてくれます。
この補完にであって、IDEってすげーって思った記憶があります。

使い方としては、変数宣言時の右辺やreturn文などで使います。俺は、補完よりもリファクタリング機能のIntroduce Variable使っちゃうことが多いけど、なれてきたら補完とリファクタリングをうまく使い分けれるようなると思います。

SmartType補完が有効に使える場所
  • 変数宣言時の初期化
  • 初期化で必要なコンストラクタ呼び出しや、メソッド呼び出しなど
  • 変数呼び出しのパラメータ
  • return文
Basic補完との違いは、下の画像を見るとわかると思います。

ClassName補完

補完候補としてクラス名を列挙してくれる機能です。
主に変数宣言時に使いますが、この補完機能を文字列内で使うと選択したクラスの完全修飾名を挿入してくれます。

例えば・・・
java.util.ArrayListを補完候補から選択した場合、文字列には"java.util.ArrayList"が挿入されます。

また、Class Name補完はクラスパス配下にあるファイルも候補として表示してくれます。
なので、クラスパス配下にあるpropertiesやxmlなどのパスを入力する時に、この補完をつかうと入力の手間を減らすことが出来ます。

イメージ的には、こんな感じに補完されます。

補完の俺設定

こだわりがあるのは、Case sensitive completionはFirst letterにしるのと、
ドキュメントとパラメータのポップアップを切ってる部分かな。

2011年11月27日日曜日

macでIntellijのpluginプロジェクトを実行出来なかった場合の対処

macでIntellijのpluginプロジェクトからpluginの実行したら、実行時エラーがでて実行できない・・・
本来であれば、新たにIntellijが起動してそこでpluginの挙動を確認出来るのに。

原因なんだろと思って調べてたら、実行時のvmoptionがとんでもないことに。
下の画像のように、なんかxmlになってるし。

なにが正しいかよくわかんなかったので、Windowsで起動したときのvm option(以下のオプション)をもってきたら、うまいこと起動した。
-Xms128m -Xmx800m -XX:MaxPermSize=350m -XX:ReservedCodeCacheSize=64m -XX:+UseCompressedOops

Intelijのバグチケットに同じ事象のがあがってて、中の人のコメントによるとworkspase.xml($PROJECT_HOME$/.idea配下にある)を削除してからプロジェクト起動するとよいらしい。
http://youtrack.jetbrains.net/issue/IDEA-76854?projectKey=IDEA&query=plugin+run

2011年9月13日火曜日

[Intellij]行番号の表示、非表示の切り替え

Intellijのコードエディタの行番号を表示する方法

ファイル単位で切り替える場合は、下の画像のように、メニューバーの「View」→「Show Line Numbers」で切り替えることができます。
※エディタがアクティブになっていないと出てくるメニュー内容が変わるのでご注意を。



すべてのファイルで常に行番号を表示させたい場合は、「settings」→「Editor」→「Appearance」の「Show Line Numbers」をオンにしてあげればよいです。


「Intellij 行番号」でのアクセスがあったので書いてみました。

2011年8月21日日曜日

Intellijの便利な正規表現編集

Javaソースコード上で正規表現を書く場合に、Javaのエスケープと正規表現のメタ文字に対するエスケープが同じ文字(\)なので、非常に面倒に思う場面がある。

その面倒な部分をうまく解消してくれる地味だけど非常に便利な正規表現編集機能がIntellijにはあります。

使用方法

正規表現部分にカーソルを移動して、クイックフィックスから「Edit RegExp Format」を選択する。
正規表現を編集するためのエディタが新規に開かれるので、正規表現を編集する。
この時には、Java文字列に対するエスケープは考えずに書けば良い。なので、純粋に正規表現のことだけを考えればよく直感的にコーディングが出来る。
また、正規表現がすでに書かれた状態でこのエディタ(Edit RegExp Format)を選択した場合も、Javaのエスキープ文字が削除されているので、正規表現を確認するときにも使うことができる。
画面的には、こんな感じになっている。


上記画面で編集を行っていると、リアルタイムにJavaコードに正規表現が反映されていきます。編集が終わったあとは「Esc」ボタンで閉じることが出来ます。
上記画面の正規表現がJavaコードに反映されると、Javaのエスケープ文字が追加されているのがわかります。

Intellijのすごいところは、正規表現を文字列定数とかで持っていても、この文字列は正規表現であると判断してこんな感じにクイックフィックスを表示してくれることです。

ここまでの例では、すべてJDK付属の正規表現ライブラリを使用していまいしたがオープンソースや自作の正規表現ライブラリに対しても上記と同じことができます。
例えば、こんな感じのクラスのsetRegexの引数を正規表現としたい場合の例
class HogeRegex {

    public void setRegex(String regex) {
        
    }
}
Settings画面から、Language Injectionを選択します。画面的には、こんな画面が表示されます。

「+」ボタンをクリックして「Java Parameter」を選択します。
表示されるサブウィンドウに下記のように入力します。
ID:RegExpを選択
Class-Name:正規表現ライブラリのクラス名入力する。(今回の例だとHogeRegexを入力する。)
Parameters:メソッド一覧とメソッドの持つパラメータ一覧が表示されるので正規表現を引数で受け取るパラメータにチェックを入れる。
設定を終えると、JDKのライブラリを使ったときと同じようにクイックフィックスに「Edit RegExp Format」が表示されるようになります。

ちなみにPatternクラスも、Language Injectionにちゃんと登録されていたりします。




2011年1月25日火曜日

【intellij】live templates

Intellijには、live templatesなるものがあって、コーディング作業をサポートしてくれるテンプレートが用意されている。

デフォルトでは、こんな感じのものが用意されている。














この機能を使って、Javaのコマンドライン引数を標準出力に出力するコードを書いてみる。 ほとんどコードを書くって作業をする必要がない。

空のクラスにmain関数を作成

main関数は、「psvm」というtemplateを使用する。 templateの一覧は、Windowsのデフォルトkeymapでは、「Ctrl+j」で表示される。











「psvm」を選択するとこんな感じにmain関数が出力される。











コマンドライン引数のループ

配列のループは、「iter」というtemplateを使用する。このtemplateは、JDK5以降のfor-each文が出力される。 「itar」を使用すると、従来のfor文が出力できる。














「iter」を選択した結果。変数名を変えたい場合は、template選択後に変更可能な変数にフォーカスが当たるのでそこで変更することができるようになっている。 (いちいち、名前を変えたい変数まで移動する必要がないようになっている。)














標準出力へ出力

標準出力へ変数の出力は、「soutv」というtemplateを使用する。












こんな感じに、「変数名 = 値」を出力するsysoutが出力される。














こんな感じに、live templatesを使用すると決まりきったコードをtemplateを使ってコーディングできるためかなり作業効率が上がる。 また、templateは自由に追加できるため、これ毎回書いてるな?と思うのがあったら追加していくといい感じになるとおもう。

2010年11月20日土曜日

【Intellij】Javaの実行

Intellijのインストールが終わったので、Javaを書いて実行してみよう。

クラスを作成するには、Project Viewでソースコードディレクトリを右クリックして、「New→Java Class」を選択する。






「Create New Class」ダイアログが表示されるので、クラス名を入力してOK。
下の画像のように、InterfaceやEnumなんかはここで選択する。Abstractはないのに、Singletonはあるのが不思議。












main関数をもつクラスを実行するには、メニューから「Run→Run」でできる。
便利な実行方法は、「F9」を押すと下の画像のようなDebug実行用のメニューが表示される。
このメニューから実行や実行時の設定(オプションの指定など)ができる。
Shiftキーを押すと、メニューがDebugからRunに変わるので通常実行する場合は、Shift+Enterでいける。


2010年11月18日木曜日

Intellij IDEAをインストール

Javaの統合開発環境の中でIntellijなるものが使いやすいらしいのでインストールしてみた。
ダウンロードは、以下のリンクからできる。最新版は、idea9で次期バージョン(idea10)は、Public Preview版がある。

http://www.jetbrains.com/idea/

インストールしたらまずは、プロジェクトを作成する。
起動すると、こんな画面が開くのでCreate New Project(Projectは、EclipseだとWorkspaceかな?)を選択















Create project from scratchを選択して次へ。(既存ソースがある場合などは、他のを選択すれば良い。)

















project file locationにプロジェクトを作りたいディレクトリを設定
Module(Eclipseのプロジェクト)をつくるので、Create moduleにもチェックを入れておく。

















ソースディレクトリを作る場合は、Create source Directoryにチェックを入れて任意のディレクトリ名を入力する。

















Javaを書くだけなので、何もせんたくせずにFinish!

















無事プロジェクトができた!!