2014年1月6日 星期一

在 Vim 中使用 Eclipse 的功能 - Eclim

opensource 掛的人寫 Java 通常很難不用 Eclipse,習慣 Vim 的人如果要直接使用 Eclipse 絕對是一件痛苦的事情,除了滑鼠滑來滑去降低戰鬥力,設定再多的 Hotkey 都沒辦法像 Vim 那樣的有效率。所以出現了像 Vrapper 這類的 plugin 可以給 Eclipse 使用,當然也可以把 gVim 直接設定成 Eclipse 的編輯界面。不管用什麼方式假裝讓我們在 Eclipse 中使用有點 Vim 樣子的編輯模式,這不是肯德基,這不是肯德基。都還是讓人覺得憋手憋腳,渾身不自在。

Eclim 是一套好工具,它可以跑一個 Eclipse 的 headless instance (中文:無腦的實例),前端以 Vim 來呈現。我們可以以 Vim 做為編輯器,並享受很多 Eclipse 的好處,比如說 code completion、searching、code validation、管理 Eclipse 的 project、管理 classpath、correction suggestion、Java regular expression 的測試⋯⋯,還可以滿足使用 Vim 的虛榮心

其實啊,Eclim 預設有三種使用模式來設計
  • 以 Vim 做為前端的編輯器,並使用後端 Eclipse 的功能
  • 以 Vim 作為主要的編輯器,有時可以回到 Eclipse 使用 Eclim 沒有的功能
  • 以 Eclipse 為主要界面,並把 gVim 設為預設編輯器
因為不想看到其他兩個,所以這邊只介紹第一種模式。


安裝 Eclim

安裝 Eclim 之前,要先裝好 JDK/Eclipse/Vim,並檢查設定 Vim (~/.vimrc)
set nocompatible
filetype plugin indent on
下載並執行 Eclim jar 檔,一直下一步就結束了
$ java -jar eclim_2.3.2.jar
手動在 terminal 中以開發者的使用者權限啟動 Eclim 的功能
$ /Applications/eclipse/eclimd
java -d64 -Dosgi.requiredJavaVersion=1.6 -XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts -XX:MaxPermSize=256m -Xms40m -Xmx512m -XstartOnFirstThread -jar /Applications/eclipse/plugins/org.eclipse.equinox.launcher_1.3.0.v20130327-1440.jar -debug -clean -refresh -application org.eclim.application
Install location:
    file:/Applications/eclipse/
Configuration file:
    file:/Applications/eclipse/configuration/config.ini loaded
Configuration location:
    file:/Applications/eclipse/configuration/
Framework located:
    file:/Applications/eclipse/plugins/org.eclipse.osgi_3.9.1.v20130814-1242.jar

<.........省略.........>

2014-01-06 15:05:32,637 INFO  [org.eclim.plugin.core.CorePlugin] Loading plugin org.eclim.jdt
2014-01-06 15:05:32,654 INFO  [org.eclim.plugin.core.CorePlugin] Loading plugin org.eclim.pdt
2014-01-06 15:05:32,656 INFO  [org.eclim.plugin.core.CorePlugin] Loading plugin org.eclim.sdt210
2014-01-06 15:05:32,658 INFO  [org.eclim.plugin.core.CorePlugin] Loading plugin org.eclim.wst
2014-01-06 15:05:32,660 INFO  [org.eclim.plugin.core.CorePlugin] Plugins loaded.
2014-01-06 15:05:32,661 INFO  [org.eclim.eclipse.EclimDaemon] Loaded plugin org.eclim.core
2014-01-06 15:05:32,664 INFO  [org.eclim.eclipse.EclimDaemon] Eclim Server Started on: 127.0.0.1:9091

如果使用者希望每次 login 會自動啟動這個 Eclim daemon,可以新增一個 login 執行的項目設定檔 (~/Library/LaunchAgents/org.eclimd.plist),並將下列內容放到 org.eclimd.plist 檔案中
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>KeepAlive</key>
    <true/>
    <key>Label</key>
    <string>org.eclimd</string>
    <key>ProgramArguments</key>
    <array>
        <string>/Applications/eclipse/eclimd</string>
    </array>
    <key>StandardOutPath</key>
    <string>/tmp/eclimd.log</string>
    <key>StandardErrorPath</key>
    <string>/tmp/eclimd.log</string>
    <key>Debug</key>
    <true/>
    <key>ExitTimeOut</key>
    <integer>0</integer>
</dict>
</plist>
jps 檢查一下 Eclipse 是否有被 Eclim 叫起來,如果有被叫起來的話會有 org.eclipse.*.jar 的 java process
$ jps | grep eclipse
2551 org.eclipse.equinox.launcher_1.3.0.v20130327-1440.jar
 開啟 Vim 並在指令列命令模式執行 PingEclim,並得到環境上 Eclim 與 Eclipse 實際的版號


使用 Eclim 管理 project

在 Vim 的指令列命令模式可以執行 project 管理
  • ProjectCreate (開立一個 project)
    • 範例:開啟一個包含 java 與 php 語言的 project
    • :ProjectCreate ~/workspace/my_first_project -n java php -p My\ First\ Project
  • ProjectList (列出所有 project)
  • ProjectDelete (刪除 project)
    • 範例
    • :ProjectDelete My\ First\ Project
  • ProjectClose (關閉沒有使用的 project,可以減少記憶體資源的使用)
    • 範例
    • :ProjectClose My\ First\ Project
  • ProjectOpen (開啟已經被關閉的 project)
    • 範例
    • :ProjectOpen My\ First\ Project
  • ProjectTree (列出 project 檔案目錄,直接 enter 編輯所要編輯的檔案)
    • 範例
    • :ProjectTree My\ First\ Project
    • Vim 會多一個視窗,顯示此 project 的所有檔案,功能類似 NERDTree 這種 Vim Plug-in
詳細 Project 管理的使用,可以參考 http://eclim.org/vim/core/project.html

使用 Eclim 撰寫 Java 與資源監控

在 Vim 中使用 <Ctrl-x> <Ctrl-u> 便可以跟 Eclpse 一樣直接使用 auto completion,並顯示做法。編輯有問題的地方,還有 ">>" 提示


執行 :Java 來 compile 也會有錯誤或警告的提示以及顯示執行結果,使用 Jps 命令還可以看 Java 的 process 的運作狀況與細節



當然了,使用 Eclim 還有非常多好用的功能,也可以很方便編輯 C/C++/Python/PHP/XML 等等語言,趕快開始使用吧!

參考

沒有留言: