[在linux上工作的有两种人:用vi的,和用emacs。我身边的人多数是vier, 自己也深爱之。 近来改成用Macbook Pro,开发也从C/JAVA转而接触到JS, HTML,代码编辑器的配置自然

這次介紹一下如何在 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 :JavaBrowser

imap

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

2. jcommenter

編程是肯定需要寫註釋的, 而編寫 java 文件則需要寫 javadoc 類型的註釋.

jcommenter.vim 這個腳本可以幫助你輕鬆寫註釋.

到 vim online 可以找到這個腳本, 下載下來放到你的目錄中, 我將它放在

~/.vim/files/ 目錄下, 這個目錄下真是放了很多東西.

使用時必須先讀入腳本, 當然我們也不希望在編輯任意文件時都讀入它, 如何

做在第三節中進一步說明. 讀入腳本後在不同的地方輸入 :call JCommentWriter()

就可以自動寫註釋了. 使用習慣後十分舒服.

我一般將 定義為寫註釋.

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/{

" 輸入 可以看到類資源樹

nmap :JavaBrowser

imap

" 輸入 就能直接寫入註釋.

nmap :call JCommentWriter()

imap

" 命令模式下, 在行如 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[下面是我配置的vim文件(2012-3-21):   set nocompatible "不要使用vi的键盘模式,而是vim自己的 source $VIMRUNTIME/mswin.vim behave mswin"兼容windows下的快�

vimb java_vim 中更好的編輯 java 文件.相关推荐

  1. HelloWorld案例中显示找不到helloworld.java文件.

    问题:新建文本文档并修改文件名为HelloWorld.java之后,文件文件类型并没有改变成JAVA文件,并且在Windows+r对话框相应位置上输入Javac HelloWorld.java后显示找 ...

  2. 常用linux文本编辑器nano,linux常用文本編輯器nano/vi/vim

    linux下有很多文本編輯器,其中系統(不管哪個分支)都會自帶nano和vi這兩個最基本的編輯器.vim相當於vi的升級版.這里我們依次來講解這幾個編輯器的用法. 1.nano 直接在命令行中敲入na ...

  3. linux 7 nano,Linux初學(CnetOS Linux7)之文本編輯器nano以及關機

    1.nano文本編輯器 [xiaohui@localhost ~]$nano text.txt # 不管text.txt存不存在都沒有關系!存在就開啟舊檔,不存在就開啟新檔 GNU nano 2.3. ...

  4. Joomla:編輯圖文并茂的主題廣告圖片

    Joomla有多種多樣的主題廣告展示方式,這些效果均由程序設置定型.對于網站維護人員來說,隻需修改文章的内容和圖片就可以實現廣告的更新,非常方便.下面新龍講解圖片下帶有文字的廣告圖片編輯方法: 如下兩 ...

  5. 在Flutter中更快地加载您的图像资源

    本文主要介绍在Flutter中更快地加载您的图像资源 我们可以将图像放在我们的资产文件夹中,但如何更快地加载它们?这是 Flutter 中的一个秘密函数,可以帮助我们做到这一点 - precacheI ...

  6. idea中drl文件_得分DRL:在OptaPlanner中更快,更轻松

    idea中drl文件 对于OptaPlanner (= Drools Planner)6.0.0.Beta1,我已经用更优雅的ConstraintMatch系统替换了ConstraintOccurre ...

  7. vavr_使用Vavr在Java 8流中更好的异常处理

    vavr by Rajasekar Elango 由Rajasekar Elango In this post, I will provide tips for better exception ha ...

  8. NLP领域中更有效的迁移学习方法

    在深度学习领域,迁移学习(transfer learning)是应用比较广的方法之一.该方法允许我们构建模型时候不光能够借鉴一些其它科研人员的设计的模型,还可以借用类似结构的模型参数,有些类似于站在巨 ...

  9. 程序员如何在百忙中更有效地利用时间,如何不走岔路,不白忙(忙得要有效率,要有收获)...

    程序员忙,似乎是个公论,有些程序员甚至会认为,不忙的程序员无法快速地进步,从而会落伍.或者说,不忙的程序员有可能被公司末尾淘汰掉.对此,一直危机感很重的我深以为然. 因为,我见过不少得过且过的的程序员 ...

最新文章

  1. 有勇气的牛排---微信小程序
  2. 王道计算机考研 计算机组成原理 第二章、数据的表示和运算
  3. 如何计算机械能,问:损失的机械能如何计算?
  4. java sleep join_Java多線程之sleep,wait,join和yield關鍵字
  5. 修改Linux系统默认语言
  6. PL/SQL工具执行SQL脚本文件
  7. EXT.NET复杂布局(二)——报表
  8. 如何把极坐标化为直角坐标_2019高考100题之063(极坐标)
  9. 删除office2016专业版多余组件
  10. CSDN 技术影响力之星正式揭晓 | 2022 开发者生态汇
  11. IOCP线程池的开发-(2)
  12. Chromium引擎控件DotNetBrowser V1.14发布 | 附下载
  13. jdk安装目录 usr java_Mac查看已安装的jdk版本和jdk安装目录
  14. 137.DOM效果实现:百度换肤
  15. 阐述SDN的原理、SDN使用场景、SDN技术的优缺点、SDN发展现状及分析SDN对社会和环境的影响
  16. 基于javaweb+jsp的员工薪资工资管理系统(JavaWeb JSP MySQL Servlet SSM SpringBoot Layui Ajax)
  17. 【PP-15】定义成本构成结构
  18. 如何设置无线路由器?
  19. 报错:The server time zone value '�й���׼ʱ��' is unrecognized or represents more than one time zone.
  20. Android开启指纹验证

热门文章

  1. html基础标签 1211
  2. py第五天,列表的练习,每日菜谱
  3. 爬虫-36kr-使用xpath爬取数据-part1-提取接口所需的6开头的数字-拼接下一个接口的路径
  4. 阿里云服务器ECS挑选什么样的网站环境
  5. 连载13:软件体系设计新方向:数学抽象、设计模式、系统架构与方案设计(简化版)(袁晓河著)...
  6. 使用集搜客爬取酷狗排行歌曲信息
  7. ipvs,ipvsadm的安装及使用
  8. Hive+LDAP+Sentry
  9. 利用Android属性动画实现Banner的原理与实践
  10. 解读SSL ***技术(二)