如何在 vim 中更好的編輯 java 檔案

來源:互聯網
上載者:User
這次介紹一下如何在 vim 中更好的編輯 java 檔案.
作者: camry.wu@gmail.com

1. javabrowser
編輯類檔案時, 類資源樹是個有用的東西, 可以把類的成員, 方法等等很直觀的
顯示出來. 在 vim 中也可以實現好像 vc, jbuilder 那樣的類資源樹, 當然比
那些會簡單些, 不過也夠好用的了. 就是用 javabrowser.vim 這個指令碼實現的.

先到 vim online 去找到這個指令檔.(在這還能找到許多有用的其他指令碼)
然後在 google 上找到 ctags 的安裝方法,(一般的 linux 系統都帶有這個程式)

1.1 在 linux 系統中將 javabrowser.vim 拷貝到 ~/.vim/plugin/ 下.
1.2 然後在 ~./vimrc 做如下中配置: (即說明 ctags 程式的路徑)
let JavaBrowser_Ctags_Cmd = '/usr/bin/ctags'
1.3 假如 vim 不是 gui 版的, 那麼可以做如下設定, 它將不改變視窗
let JavaBrowser_Inc_Winwidth = 0
1.4 重新運行 vim
1.5 這下你開啟一個 java 檔案時, 輸入 :JavaBrowser 就能看到漂亮的資源樹了.
不過這個檔案必須是個實際存在的檔案.

在 windows 系統中 可以將 javabrowser.vim 拷貝到 vim 目錄下的 plugin 下.
同樣也需要設定 JavaBrowser_Ctags_Cmd , 路徑為 ctags 程式的路徑.

我一般在java 宏檔案中設定
nmap <F11> :JavaBrowser<CR>
imap <F11> <ESC><F11>

這樣我一按 F11 鍵就可以看到這個東西了, 很方便.

2. jcommenter
編程是肯定需要寫注釋的, 而編寫 java 檔案則需要寫 javadoc 類型的注釋.
jcommenter.vim 這個指令碼可以協助你輕鬆寫注釋.
到 vim online 可以找到這個指令碼, 下載下來放到你的目錄中, 我將它放在
~/.vim/files/ 目錄下, 這個目錄下真是放了很多東西.

使用時必須先讀入指令碼, 當然我們也不希望在編輯任意檔案時都讀入它, 如何
做在第三節中進一步說明. 讀入指令碼後在不同的地方輸入 :call JCommentWriter()
就可以自動寫注釋了. 使用習慣後十分舒服.

我一般將 <F12> 定義為寫注釋.

3. autocmd
autocmd 十分強大, 在vim使用經驗這篇文章中我已經提到過它了. 現在說明
如何讓它來支援 java 檔案的編寫.

我在 .vimrc 中是這樣設定我的 autocmd 的:
:autocmd!
autocmd FileType java source ~/.vim/files/java.vim
autocmd FileType java source ~/.vim/files/jcommenter.vim
autocmd BufNewFile *.java 0r ~/.vim/files/skeletons/java.skel
autocmd BufNewFile *.java normal gnp


說明如下:
1. 取消之前的 autocmd
2. 假如編輯的是 java 檔案, 那麼讀入 java.vim 的宏定義(定義的內容下節說明)
3. 假如編輯的是 java 檔案, 那麼讀入 jcommenter.vim 定義
4. 在建立 java 檔案時, 預先將 java.skel 的內容複寫進來
5. 在讀入 java.skel 內容後, 運行 gnp 這個宏命令

我的 java.skel 內容是這樣的:

/*
* -----------------------------------------------------------
* file name : _filename_
* authors : camry(camry.wu@gmail.com)
* created : _datetime_
* copyright : (c) 2004 Vitular Inc. All Rights Reserved.
*
* modifications:
*
* -----------------------------------------------------------
*/
package com.vitular.;

/**
* to-do.
*
* @author camry(camry.wu@gmail.com)
* @version 1.0
*/
public class _classname_ {

/**
* default constructor.
*/
public _classname_() {
super();
} // END: _classname_

/**
* for test.
* @param args commond line parameters
public static void main(final String[] args) {
} // END: main
*/
} // END: _classname_
///:~


運行 gnp 這個宏命令, 主要是為了替換其中的 _classname_, _datetime_, _filename_
這三個變數. gnp命令在 java.vim 這個宏檔案中指定.

4. java 宏定義
這裡說明一下我的 java.vim 宏檔案是如何定義的.
首先, 檔案中包含了另外一份宏定義, 在這裡
以下是我自己做的一些定義:

" 輸入轉換
abbr sprt System.out.println
abbr psf public static final

" 將 _filename_, _datetime_, _classname_ 轉換成正確名字
" 注意, 以下兩行應該是連在一起的一行文字
map gnp :%s/_filename_/\=bufname("%")/:%s/_datetime_/\=strftime("%c")
/Go"%p$F.bd0f.Dviwx:%s/_classname_/\=strtrans(@")/gGdd:1/{

" 輸入 <F11> 可以看到類資源樹
nmap <F11> :JavaBrowser<CR>
imap <F11> <ESC><F11>

" 輸入 <F12> 就能直接寫入注釋.
nmap <F12> :call JCommentWriter()<CR>
imap <F12> <ESC><F12>

" 命令模式下, 在行如 private String s; /** comment */ 這樣的文字上鍵入 gsg
" 可以自動變成 get set.
" 注意, 以下三行應該是連在一起的一行文字
map gsg 0f;dw"aD0wwviw"bxwviw"cx0Da "apapublic void set"
cpb3~$a(final "bpa "cpa) { this."cpa = "cpa; }
public "bpa get"cpb3~$a() { return "cpa; }0


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.