2011-10-20 193 views
18

我試圖在Mac OS X的命令行上啓動IntelliJ來使用它的diff工具。理論上idea.sh diff file1 file2應該工作。在實踐中,我認爲我曾經工作過的文件存在一些問題(刪除一些參數以讀取鏈接等)。
但是,當它啓動時,它希望我輸入許可證信息(即使Intellij的實例已在運行且許可證在那裏)。這使我相信在Mac OS X上,命令行世界與非命令世界存在某種分離?真的嗎?
此外,當我選擇30天EVAL它繼續給我以下異常:Mac OS X上的命令行IntelliJ

java.lang.IllegalArgumentException: Argument 0 for @NotNull parameter of com/intellij/openapi/fileEditor/impl/FileEditorProviderManagerImpl.getProviders must not be null 
    at com.intellij.openapi.fileEditor.impl.FileEditorProviderManagerImpl.getProviders(FileEditorProviderManagerImpl.java) 
    at com.intellij.openapi.diff.impl.highlighting.EditorPlaceHolder.setContent(EditorPlaceHolder.java:73) 
    at com.intellij.openapi.diff.impl.highlighting.DiffPanelState$1.run(DiffPanelState.java:38) 
    at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:864) 
... 

回答

20

嘗試運行/Applications/IntelliJ IDEA 10.app/Contents/MacOS/idea代替。 idea.sh不適用於Mac,如果不進行某些手動更改將無法正常工作。

+0

這是更好 - 沒有牌照的問題,但它仍然給了我同樣的錯誤(在對話框現在):錯誤顯示DIFF:參數0的COM /的IntelliJ /的OpenAPI/fileEditor的@NotNull參數/ impl/FileEditorProviderManagerImpl.getProviders不能爲空 –

+0

啊,沒關係,文件需要有擴展名! –

+0

所以這適用於差異,但我想調用合併功能(能夠解決衝突後保存)。這是可行的嗎? –

6

想法預計路徑是完全合格的,所以我寫了一個小幫手腳本。調用,如:

$ idiff foo.txt bar.txt 

idiff代碼:

#!/bin/bash 
idea='/Applications/IntelliJ IDEA 10.app/Contents/MacOS/idea' 
left=`abspath $1` 
right=`abspath $2` 
"$idea" diff $left $right 

有可能是一個真正的abspath工具的地方,但我有一個簡單的手卷之一:

$ cat `which abspath` 
#!/bin/bash 
ORIG_DIR=`pwd` 
for fn in $* ; do 
    if [ -e $fn ]; then 
    d=`dirname $fn` 
    if [ -z $d ]; then 
     echo `pwd`/$fn 
    else 
     cd $d 
     echo `pwd`"/"`basename $fn` 
    fi 
    else 
    echo "Don't know how to process $fn" 1>&2 
    exit 1 
    fi 
    cd $ORIG_DIR 
done 
52

的IntelliJ能爲你安裝一個命令行啓動程序,將它添加到PATH目錄將使其成爲系統上的任何其他命令。該命令是「想法」。

IntelliJ Command-line Launcher