爲Java應用程序的開發而配置vi

導讀:
  大多數的軟件開發人員都會在其生涯的某個時候碰到vi編輯器——如果不是在大學裏的話,那就是在實際使用的UNIX機器上,將自己的Windows桌面機器裏所編碼東西安裝到完全成熟的集成開發環境(IDE)裏的時候。很少能夠碰到長期從事微軟系統開發的開發人員不會在一個月至少使用vi一次。有些開發人員很喜愛vi,而其他的則很厭惡它。但是對於一個Java的開發人員來說,要想讓vi成爲一個更好的開發環境將會有很多的工作需要完成。
  很多人都預料Java和vi並不總是能夠共同工作。因爲vi是小型功利主義的同義詞,而Java則像是一頭笨拙的大型動物。選擇將vi作爲其主要工作環境的Java開發人員可能是比較罕見的,但是即使是偶爾使用vi的用戶,也能夠從花上一點時間將它配置一下,使之與Java更加友好上獲益。你可能會很震驚的看到,當所有提到的工作都做到位之後,vi能夠爲你的IDE提供多少特性。
  讓我們開始吧
  
  首先,要確信你的vi命令已經連接到了vim庫,至少要象徵性地連接到了或者替代了(aliased)。Vim的意思是Vi Improved,它幾乎已經在vi及其衍生產品中佔據了的主導地位。它速度快,易維護,特性豐富,而且幾乎在每個平臺上都有。
  一旦你安裝好了vim,就要在你的主目錄下創建一個叫做.vimrc的文件。Listing A顯示了一個很好的.vimrc起始文件。這個文件裏的幾個命令行告訴vi要給Java的源代碼塗上顏色,使其更易於閱讀。其結果並不十分重要,而且如果你不喜歡顯示出來的顏色,你可以放心地取消它們。
  對標籤跳躍的支持
  標籤是Java的標識符,它們可以是包裝名、類名、方法名,或者是字段名。在你的代碼裏創建一個所有標籤的大型索引,能夠讓你使用單個按鍵就跳躍到任何類、方法或者字段的定義上。這些索引文件都是使用ctags程序創建的,後者在vim的發行版裏都有。
  Ctags會獲取Java源文件或者包含有Java源代碼的目錄的列表,從中提取標識符的信息,再生成所vi需要的用於跳躍到標籤的排序索引。下面一行代碼是ctags調用的一個例子,只要JAVA_HOME變量被正確地定義,它會生成一個包含有項目源代碼裏所有標識符的標籤文件,Sun核心庫源代碼也是如此:
  
  ctags -f ~/.tags -R ~/myprojects/src $JAVA_HOME/src
  一旦標籤索引創建好了,你所需要做的只是告訴vi要在哪裏找到它。這一步是通過將set tags=~/.tags添加到你的~/.vimrc文件裏實現的。有了可用的標籤索引文件,而且vi也知道了要到哪裏去找到它,你現在就可以通過按 [CTRL] ]來跳躍到任何標識符上了。儘管這對於跳躍到你已經定義的方法、類和你自己編寫的字段上很有用,但是如果你將Java核心類庫加到你的標籤索引裏將會更加有用。現在,只用簡單地對任何核心類庫的類或者方法按[Ctrl] ],你就會跳躍到它完全使用javadoc所編寫成的定義。.
  標籤名的填充
  
  雖然跳躍到類、方法和字段定義所在的位置對於查看其javadoc以及檢查其內容是有很用處的,但是更常見的情況是,你只是需要檢查一個關鍵字的定義。在大多數IDE裏,這一點是通過輸入關鍵字完成的。但是,如果你已經將你的標籤文件像前面一部分所講的那樣設置了,那麼在vi裏填入關鍵字就只是一個導向性的配置了。
  將set complete=.,w,b,u,t,I這一行放到你的~/.vimrc文件裏,能夠讓你在插入模式下通過按[Ctrl]N自動地將任何類、方法或者字段名填滿。連續按[Ctrl]N將移動到下一個相匹配的地方。當你看到你想要找的標籤時,只用繼續輸入你源代碼剩下的部分就行了。你可以在vim的Web網站上找到其他關於標籤名填充的提示,包括使用Tab鍵來進行填充。
  方法的摺疊
  好的實踐經驗告訴我們:你應該保持類的短小和簡單,因爲程序複雜性表現在類的層次性上,而不是500行的方法上。不幸的是,有些類已經脫離了控制,變得事實上無法移動操作了。
  IDE常常會在左邊一個狹窄的框體提供一個列出了內容裏方法的表格,以此來減輕開發人員查看冗長源代碼的困難。與之相對的是,vi提供了一種它叫做“方法摺疊(method folding)”的可摺疊程序塊。摺疊允許你隱藏被縮排過的(indented)代碼塊開頭和結尾之間的所有代碼。要激活摺疊,就要把set foldmethod=indent加到你的~/vimrc裏。
  一旦方法的摺疊被激活,你就可以使用:set foldlevel=0來極大地精簡一個Java的源文件。如果將摺疊的層數設置爲零,那麼你就是在告訴vi只顯示完全沒有被縮排的命令行,而後者在大多數Java源文件裏代表着包裝、導入,以及類或者接口的定義行。設置foldlevel=1就是告訴vi說:除了沒有被縮排的命令行,只縮排過一次的命令行也應該被顯示,它們包括方法的簽名以及其他一些不多的內容。要打開一個摺疊夾並查看某個方法所隱藏的內容,你就要在被摺疊的命令行上輸入zO。
  通過設置foldlevel就能夠很輕易地開啓或者取消方法的摺疊。我喜歡在調試的時候使用它,但是不喜歡在編寫新代碼的時候使用它。你要自己來決定它應該如何去適應你的工作方式。
  IDE不僅僅只是用於編輯;它們還是編譯環境。Vi在不需要使用外部編譯器和剖析結果信息上的工作做得非常好。現在很多Java的項目都將易於編寫腳本的Ant作爲一個創建環境。我沒有向.vimrc文件里加載很多Ant專用的設置,而是單獨創建了一個做作vimAnt腳本,見Listing B。
  這個腳本調用了一個帶有幾個參數的Ant可執行文件,然後對輸出進行過濾,讓其只包含編譯器輸出。你現在幾乎就準備好從vi裏調用Ant了。你只需要將Listing C裏的命令行加到你的~/.vimrc文件裏。這些命令行告訴vi要調用你所創建的vimAnt腳本,並提示它如何剖析Ant的jikes輸出。
  在你的系統路徑下有了vimAnt腳本之後,你現在就可以使用:make命令來初始化編譯了。當前目錄及其所有的父目錄都會被搜索,以尋找一個build.xml文件,這個文件的類對象會被調用。錯誤輸出會被vi自動地剖析。
  一旦你在vi裏進行了帶有錯誤的編譯,你就可以使用快速修復(quick fix)模式來迅速地到達錯誤地點,進行及時的修補。:cn命令會把你帶到下一個出錯地點,而不考慮它在什麼文件裏。:cc命令會向你顯示當前錯誤的編譯器輸出信息;而:cl會生成一個列有項目所有錯誤的列表,以供瀏覽這些錯誤。修補好你的錯誤,你就離成功的編譯只有一:make之遙了。
  
  大多數的軟件開發人員都會在其生涯的某個時候碰到vi編輯器——如果不是在大學裏的話,那就是在實際使用的UNIX機器上,將自己的Windows桌面機器裏所編碼東西安裝到完全成熟的集成開發環境(IDE)裏的時候。很少能夠碰到長期從事微軟系統開發的開發人員不會在一個月至少使用vi一次。有些開發人員很喜愛vi,而其他的則很厭惡它。但是對於一個Java的開發人員來說,要想讓vi成爲一個更好的開發環境將會有很多的工作需要完成。很多人都預料Java和vi並不總是能夠共同工作。因爲vi是小型功利主義的同義詞,而Java則像是一頭笨拙的大型動物。選擇將vi作爲其主要工作環境的Java開發人員可能是比較罕見的,但是即使是偶爾使用vi的用戶,也能夠從花上一點時間將它配置一下,使之與Java更加友好上獲益。你可能會很震驚的看到,當所有提到的工作都做到位之後,vi能夠爲你的IDE提供多少特性。讓我們開始吧 首先,要確信你的vi命令已經連接到了vim庫,至少要象徵性地連接到了或者替代了(aliased)。Vim的意思是Vi Improved,它幾乎已經在vi及其衍生產品中佔據了的主導地位。它速度快,易維護,特性豐富,而且幾乎在每個平臺上都有。一旦你安裝好了vim,就要在你的主目錄下創建一個叫做.vimrc的文件。Listing A顯示了一個很好的.vimrc起始文件。這個文件裏的幾個命令行告訴vi要給Java的源代碼塗上顏色,使其更易於閱讀。其結果並不十分重要,而且如果你不喜歡顯示出來的顏色,你可以放心地取消它們。對標籤跳躍的支持標籤是Java的標識符,它們可以是包裝名、類名、方法名,或者是字段名。在你的代碼裏創建一個所有標籤的大型索引,能夠讓你使用單個按鍵就跳躍到任何類、方法或者字段的定義上。這些索引文件都是使用ctags程序創建的,後者在vim的發行版裏都有。 Ctags會獲取Java源文件或者包含有Java源代碼的目錄的列表,從中提取標識符的信息,再生成所vi需要的用於跳躍到標籤的排序索引。下面一行代碼是ctags調用的一個例子,只要JAVA_HOME變量被正確地定義,它會生成一個包含有項目源代碼裏所有標識符的標籤文件,Sun核心庫源代碼也是如此: ctags -f ~/.tags -R ~/myprojects/src $JAVA_HOME/src一旦標籤索引創建好了,你所需要做的只是告訴vi要在哪裏找到它。這一步是通過將set tags=~/.tags添加到你的~/.vimrc文件裏實現的。有了可用的標籤索引文件,而且vi也知道了要到哪裏去找到它,你現在就可以通過按 [CTRL] ]來跳躍到任何標識符上了。儘管這對於跳躍到你已經定義的方法、類和你自己編寫的字段上很有用,但是如果你將Java核心類庫加到你的標籤索引裏將會更加有用。現在,只用簡單地對任何核心類庫的類或者方法按[Ctrl] ],你就會跳躍到它完全使用javadoc所編寫成的定義。.標籤名的填充 雖然跳躍到類、方法和字段定義所在的位置對於查看其javadoc以及檢查其內容是有很用處的,但是更常見的情況是,你只是需要檢查一個關鍵字的定義。在大多數IDE裏,這一點是通過輸入關鍵字完成的。但是,如果你已經將你的標籤文件像前面一部分所講的那樣設置了,那麼在vi裏填入關鍵字就只是一個導向性的配置了。將set complete=.,w,b,u,t,I這一行放到你的~/.vimrc文件裏,能夠讓你在插入模式下通過按[Ctrl]N自動地將任何類、方法或者字段名填滿。連續按[Ctrl]N將移動到下一個相匹配的地方。當你看到你想要找的標籤時,只用繼續輸入你源代碼剩下的部分就行了。你可以在vim的Web網站上找到其他關於標籤名填充的提示,包括使用Tab鍵來進行填充。方法的摺疊好的實踐經驗告訴我們:你應該保持類的短小和簡單,因爲程序複雜性表現在類的層次性上,而不是500行的方法上。不幸的是,有些類已經脫離了控制,變得事實上無法移動操作了。 IDE常常會在左邊一個狹窄的框體提供一個列出了內容裏方法的表格,以此來減輕開發人員查看冗長源代碼的困難。與之相對的是,vi提供了一種它叫做“方法摺疊(method folding)”的可摺疊程序塊。摺疊允許你隱藏被縮排過的(indented)代碼塊開頭和結尾之間的所有代碼。要激活摺疊,就要把set foldmethod=indent加到你的~/vimrc裏。一旦方法的摺疊被激活,你就可以使用:set foldlevel=0來極大地精簡一個Java的源文件。如果將摺疊的層數設置爲零,那麼你就是在告訴vi只顯示完全沒有被縮排的命令行,而後者在大多數Java源文件裏代表着包裝、導入,以及類或者接口的定義行。設置foldlevel=1就是告訴vi說:除了沒有被縮排的命令行,只縮排過一次的命令行也應該被顯示,它們包括方法的簽名以及其他一些不多的內容。要打開一個摺疊夾並查看某個方法所隱藏的內容,你就要在被摺疊的命令行上輸入zO。通過設置foldlevel就能夠很輕易地開啓或者取消方法的摺疊。我喜歡在調試的時候使用它,但是不喜歡在編寫新代碼的時候使用它。你要自己來決定它應該如何去適應你的工作方式。 IDE不僅僅只是用於編輯;它們還是編譯環境。Vi在不需要使用外部編譯器和剖析結果信息上的工作做得非常好。現在很多Java的項目都將易於編寫腳本的Ant作爲一個創建環境。我沒有向.vimrc文件里加載很多Ant專用的設置,而是單獨創建了一個做作vimAnt腳本,見Listing B。這個腳本調用了一個帶有幾個參數的Ant可執行文件,然後對輸出進行過濾,讓其只包含編譯器輸出。你現在幾乎就準備好從vi裏調用Ant了。你只需要將Listing C裏的命令行加到你的~/.vimrc文件裏。這些命令行告訴vi要調用你所創建的vimAnt腳本,並提示它如何剖析Ant的jikes輸出。在你的系統路徑下有了vimAnt腳本之後,你現在就可以使用:make命令來初始化編譯了。當前目錄及其所有的父目錄都會被搜索,以尋找一個build.xml文件,這個文件的類對象會被調用。錯誤輸出會被vi自動地剖析。一旦你在vi裏進行了帶有錯誤的編譯,你就可以使用快速修復(quick fix)模式來迅速地到達錯誤地點,進行及時的修補。:cn命令會把你帶到下一個出錯地點,而不考慮它在什麼文件裏。:cc命令會向你顯示當前錯誤的編譯器輸出信息;而:cl會生成一個列有項目所有錯誤的列表,以供瀏覽這些錯誤。修補好你的錯誤,你就離成功的編譯只有一:make之遙了。

本文轉自
http://www.cn-java.com/www1/?action-viewnews-itemid-2622
發佈了374 篇原創文章 · 獲贊 3 · 訪問量 31萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章