使用gvim配合ant开发完整的java web应用 之gvim篇
时间:2007-02-01 来源:jiahaolin
使用gvim配合ant开发完整的java web应用 之gvim篇
在开发JAVA的web应用中,有相当多的非常好用的ide工具可以使用,但是,理解使用记事本与ant配合开发java应用仍然是相当重要的,虽然有些时候开发的效率会低一些,但的的确确可以让你理好地理解一些底层的东西。(不要说底层的东西不重要)
对于记事本,大家可能想到的是ultraEdit或者editplus等工具。这些工具是相当好用的,并且我也经常用这些工具。不过,如果我们需要在不同平台之间工作,那么使用这些工具就有些力不从心了。最起码,在非WINDOWS平台使用这些工具,不太现实了。
那么,让我们找几个可以在不同平台下用的编辑器。
选择一: emacs
选择二: vim/gvim
选择三: jedit
而这时,我认为第二种选择的gvim是正确的,原因如下:
1 作为世界两大编辑器之一(emacs and vi/vim),在功能上自然不用多说。
2
emacs的确也是一种信仰,并且有非常多的,比如DJEE等工具可以非常好地应用于开发,但是,它太大了,不适合轻量级的开发,特别是在WINDOWS平台。
3 jedit的性能在一定程度上并不非常受欢迎(这个我倒没怎么感觉出来)
4 emacs在不同平台的配置方便性上不如vim
5 vim在一定程度上,编辑能力更强一点点(EMACS的FANS不要骂我)
6 。。。。。还有好多写不完的原因。
#其实,上面这几条是废话,大家喜欢哪一种就选哪一种吧,这里只是我一家之言:)嘿嘿。
那么,下面进入正题:
这是gvim篇,也就是注重写gvim的配置与使用。
作为初次接触gvim的用户,可能有一定的vi或者vim的使用经验,但现在我们打算使用gvim实现编写java web程序的目的,仍然需要解决一些问题,那么这里列一个表,用于一个一个地解决:
1、如何安装与配置gvim程序,包括配置文件的位置和作用。
2、基本的编辑命令有哪些。
3、gvim如何安装一些插件。
4、能否在gvim中实现目录树,就类似于开发工具(IDE)中的那种显示文件的方式。
5、如何配置快捷键并实现程序调用JAVAC和相关的CLASSPATH中的LIB进行编译并捕获输出。
6、如何实现快速定位错误位置。
7、自动生成部分辅助代码。
8、可不可以与ANT结合使用。
如果可以实现上面的8个功能,那么配合着VIM强大的编辑功能,我们就有了一个相当不错的IDE功能,并且在一定程度上比IDE更方便。那么,我们就试着配置一下这8个问题。
在这里提出,配置平台为linux,内核为2.6,使用gvim7.0,使用rpm包装,经试验,下面的配置方式适合slackware10.2,11.0,debian3.1r4,ubuntu6.06,fc5,fc6以及solaris10x86。其他系统没有测试,不过应该大同小异,没有什么大的区别。
这里先看一下VIM官方网站的说明:Vim is a highly configurable text editor built to enable efficient text editing. It is an improved version of the vi editor distributed with most UNIX systems. Vim is distributed free as charityware. If you find Vim a useful addition to your life please consider helping needy children in Uganda.
希望大家在使用vim的使用,保持一种信养。
一、首先是第一个问题:如何安装与配置gvim程序,包括配置文件的位置和作用。
安装的方式在这里就不多说了,大多用yum,apt-get或者自己编译原码也可以,都没有太大区别。这里从它的配置文件开始说起。
我们参考的资源当然是官方网站和o'reilly的一些书,最基本的进入和离开VIM的方法这里就不多说了,主要解决一些应用方面的东西。
VIM的配置文件:在不同的UNIX下,VIM会为每一个用户提供自己的配置文件,这个文件的名字就是.vimrc,在每个用户自己的根目录下,是一个隐藏文件。由于有些版本的LINUX发行版并不会在增加用户的时候自动复制一份好用的.vimrc到用户目录,因此,可以自己手动把vim目录中的vimrc_example.vim复制到$user_home/.vimrc
这个.vimrc就是用户自定义的配置文件。以后如果需要安装插件或者修改配置,都可以在这里进行修改而不需要去修改系统的配置文件。记住在修改之前先做备份。
下面是我复制的一份fc6下面的vim7.0自带的.vimrc的配置文件,如果您是slackware用户,可以选择这个配置文件:
[code]
------------------------------------------------------------------------------
" An example for a vimrc file.
"
" Maintainer: Bram Moolenaar <[email protected]>
" Last change: 2006 Aug 12
"
" To use it, copy it to
" for Unix and OS/2: ~/.vimrc
" for Amiga: s:.vimrc
" for MS-DOS and Win32: $VIM\_vimrc
" for OpenVMS: sys$login:.vimrc
" When started as "evim", evim.vim will already have done these settings.
if v:progname =~? "evim"
finish
endif
" Use Vim settings, rather then Vi settings (much better!).
" This must be first, because it changes other options as a side effect.
set nocompatible
" allow backspacing over everything in insert mode
set backspace=indent,eol,start
if has("vms")
set nobackup " do not keep a backup file, use versions instead
else
set backup " keep a backup file
endif
set history=50 " keep 50 lines of command line history
set ruler " show the cursor position all the time
set showcmd " display incomplete commands
set incsearch " do incremental searching
" For Win32 GUI: remove 't' flag from 'guioptions': no tearoff menu entries
" let &guioptions = substitute(&guioptions, "t", "", "g")
" Don't use Ex mode, use Q for formatting
map Q gq
" In an xterm the mouse should work quite well, thus enable it.
set mouse=a
" This is an alternative that also works in block mode, but the deleted
" text is lost and it only works for putting the current register.
"vnoremap p "_dp
" Switch syntax highlighting on, when the terminal has colors
" Also switch on highlighting the last used search pattern.
if &t_Co > 2 || has("gui_running")
syntax on
set hlsearch
endif
" Only do this part when compiled with support for autocommands.
if has("autocmd")
" Enable file type detection.
" Use the default filetype settings, so that mail gets 'tw' set to 72,
" 'cindent' is on in C files, etc.
" Also load indent files, to automatically do language-dependent indenting.
filetype plugin indent on
" Put these in an autocmd group, so that we can delete them easily.
augroup vimrcEx
au!
" For all text files set 'textwidth' to 78 characters.
autocmd FileType text setlocal textwidth=78
" When editing a file, always jump to the last known cursor position.
" Don't do it when the position is invalid or when inside an event handler
" (happens when dropping a file on gvim).
autocmd BufReadPost *
\ if line("'\"") > 0 && line("'\"") <= line("$") |
\ exe "normal g`\"" |
\ endif
augroup END
else
set autoindent " always set autoindenting on
endif " has("autocmd")
" Convenient command to see the difference between the current buffer and the
" file it was loaded from, thus the changes you made.
command DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis
\ | wincmd p | diffthis
-------------------------------------------------------------------------------
[/code]
二、基本的编辑命令有哪些呢?
下面是我从网上找到的一些资源,大家可以整理出自己需要的资源,然后打印一份,随时翻看。每个人喜好的编辑习惯不同,因此每个人都有自己的一套VIM的使用方法。
<pre>
vi 的操作模式
=============
vi 提供两种操作模式:输入模式(insert mode)和指令模式(command mode)。当使用者进入 vi 后,即处在指令模式下,此刻键入之任何字元皆被视为指令。在此模式下可进行删除、修改等动作。若要输入资料,则需进入输入模式。
输入模式
========
如何进入输入模式
a (append) 由游标之后加入资料。
A 由该行之末加入资料。
i (insert) 由游标之前加入资料。
I 由该行之首加入资料。
o (open) 新增一行於该行之下供输入资料之用。
O 新增一行於该行之上供输入资料之用。
如何离开输入模式
《ESC》 结束输入模式。
指令模式
========
游标之移动
h 向左移一个字元。
j 向上移一个字元。
k 向下移一个字元。
l 向右移一个字元。
0 移至该行之首
$ 移至该行之末。
^ 移至该行的第一个字元处。
H 移至视窗的第一列。
M 移至视窗的中间那列。
L 移至视窗的最后一列。
G 移至该文件的最后一列。
+ 移至下一列的第一个字元处。
- 移至上一列的第一个字元处。
( 移至该句之首。 (注一)
) 移至该句之末。
{ 移至该段落之首。 (注二)
} 移至该段落之末。
nG 移至该文件的第 n 列。
n+ 移至游标所在位置之后的第 n 列。
n- 移至游标所在位置之前的第 n 列。
会显示该行之行号、文件名称、文件中最末行之行号、游标所在行号占总行号之百分比。
注一:句子(sentence)在vi中是指以『!』、『.』或『?』结束的一串字。
注二:段落(paragraph)在vi中是指以空白行隔开的文字。
视窗的移动
==========
视窗往下卷一页。
视窗往上卷一页。
视窗往下卷半页。
视窗往上卷半页。
视窗往下卷一行。
视窗往上卷一行。
删除、复制及修改指令介绍 (此单元较少使用)
=========================
d(delete)、c(change)和y(yank)这一类的指令在 vi 中的指令格式为:
Operator + Scope = command
(运算子) (范围)
运算子:
d 删除指令。删除资料,但会将删除资料复制到记忆体缓冲区。
y 将资料(字组、行列、句子或段落)复制到缓冲区。
p 放置(put)指令,与 d 和 y 配和使用。可将最后delete或yank的资
料放置於游标所在位置之行列下。
c 修改(change)指令,类似delete与insert的组和。删除一个字组、句
子等之资料,并插入新键资料。
范围:
e 由游标所在位置至该字串的最后一个字元。
w 由游标所在位置至下一个字串的第一个字元。
b 由游标所在位置至前一个字串的第一个字元。
$ 由游标所在位置至该行的最后一个字元。
0 由游标所在位置至该行的第一个字元。
) 由游标所在位置至下一个句子的第一个字元。
( 由游标所在位置至该句子的第一个字元。
{ 由游标所在位置至该段落的最后一个字元。
} 由游标所在位置至该段落的第一个字元。
整行动作
dd 删除整行。
D 以行为单位,删除游标后之所有字元。
cc 修改整行的内容。
yy yank整行,使游标所在该行复制到记忆体缓冲区。
删除与修改
==========
x 删除游标所在该字元。
X 删除游标所在之前一字元。
dd 删除游标所在该行。
r 用接於此指令之后的字元取代(replace)游标所在字元。
如: ra 将游标所在字元以 a 取代之。
R 进入取代状态,直到《ESC》为止。
s 删除游标所在之字元,并进入输入模式直到《ESC》。
S 删除游标所在之该行资料,并进入输入模式直到《ESC》。
搬移与复制
==========
利用 delete 及 put 指令可完成资料搬移之目的。
利用 yank 及 put 指令可完成资料复制之目的。
yank 和 delete 可将指定的资料复制到记忆体缓冲区,而藉由 put 指令
可将缓冲区内的资料复制到萤幕上。
例:
搬移一行 .在该行执行 dd
.游标移至目的地
.执行 p
复制一行 .在该行执行 yy
.游标移至目的地
.执行 p
指令重复
========
在指令模式中,可在指令前面加入一数字 n,则此指令动作会重复执行 n
次。
例:
删除10行 .10dd
复制10行 .10yy
.游标移至目的地
.p
指标往下移10行 .10j
取消前一动作(Undo)
==================
即复原执行上一指令前的内容。
u 恢复最后一个指令之前的结果。
U 恢复游标该行之所有改变。
搜寻
====
在vi中可搜寻某一字串,使游标移至该处。
/字串 往游标之后寻找该字串。
?字串 往游标之前寻找该字串。
n 往下继续寻找下一个相同的字串。
N 往上继续寻找下一个相同的字串。
资料的连接
==========
J 句子的连接。将游标所在之下一行连接至游标该行的后面。
若某行资料太长亦可将其分成两行,只要将游标移至分开点,进入输入模式
(可利用 a、i等指令)再按《Enter》即可。
环境的设定
==========
:set nu 设定资料的行号。
:set nonu 取消行号设定。
:set ai 自动内缩。
:set noai 取消自动内缩。
自动内缩(automatic indentation)
在编辑文件或程式时,有时会遇到需要内缩的状况,『:set ai』即提供自
动内缩的功能,用下例解释之:
.vi test
.(进入编辑视窗后)
this is the test for auto indent
《Tab》start indent ← :set ai (设自动内缩)
《Tab》data
《Tab》data
《Tab》data ← :set noai (取消自动内缩)
the end of auto indent.
.注: 可删除《Tab》字元。
ex指令
======
读写资料
:w 将缓冲区的资料写入磁盘中。
:10,20w test 将第10行至第20行的资料写入test文件。
:10,20w>>test 将第10行至第20行的资料加在test文件之后。
:r test 将test文件的资料读入编辑缓冲区的最后。
删除、复制及搬移
:10,20d 删除第10行至第20行的资料。
:10d 删除第10行的资料。
:%d 删除整个编辑缓冲区。
:10,20co30 将第10行至第20行的资料复制至第30行之后。
:10,20mo30 将第10行至第20行的资料搬移至第30行之后。
字串搜寻与取代
s(substitute)指令可搜寻某行列范围。
g(global)指令则可搜寻整个编辑缓冲区的资料。
s指令以第一个满足该条件的字串为其取代的对象,若该行有数个满足该条
件的字串,也仅能取代第一个,若想取代所有的字串则需加上g参数。
:1,$s/old/new/g 将文件中所有的『old』改成『new』。
:10,20s/^/ / 将第10行至第20行资料的最前面插入5个空白。
:%s/old/new/g 将编辑缓冲区中所有的『old』改成『new』。
恢复编辑时被中断的文件
======================
在编辑过程中,若系统当掉或连线中断,而缓冲区的资料并还未
被写回磁盘时,当再度回到系统,执行下列指令即可回复中断前
的文件内容。
%vi -r filename
编辑多个文件
============
vi亦提供同时编辑多个文件的功能,方法如下:
%vi file1 file2 ..
VI 使用技巧
x 删除游标所在字元。
dd 删除游标所在的列。
s 删除游标所在字元,并进入输入模式。
S 删除游标所在的列,并进入输入模式。
r 修改游标所在字元,r 後接著要修正的字元。
R 进入取代状态,新增资料会覆盖原先资料,直到按[ESC]回到指令模式下为止。
+$ 跳到文件末
[home] 跳到行首
[end] 跳到行末
+n 跳到第 n 行
nj 下跳 n 行(hjkl分别表示左下上右都可仿照用之)
yy 拷贝一行
p 粘贴拷贝的行
u 返回上次编辑(相当于WIN中的撤消)
/字串 寻找某个字串
/enter 继续找上次的字串
:w 存盘
:q 退出
:wq 存盘并退出
:q! 强行退出
:wq! 强行存盘退出
替换文件中的字符串
在vi界面下使用命令
:%s#/usr/bin#/bin#g
可以把文件中所有路径/usr/bin换成/bin。也可以使用命令:
:%s/usr/bin/bin/g
其中“”是转义字符,表明其后的“/”字符是具有实际意义的字符,不是分隔符。
整个文件的各行或某几行的行首或行尾加一些字符串
$vi file
:3,$s/^/some string 在文件的第一行至最后一行的行首插入“some string”。
:%s/$/some string/g 在整个文件每一行的行尾添加“some string”。
:%s/string1/string2/g 在整个文件中替换“string1”成“string2”。
:3,7s/string1/string2/ 仅替换文件中的第3行到第7行中的“string1”成“string2”。
注意: 其中s为substitute,%表示所有行,g表示global。
删除大段的内容
首先利用编辑命令“vi file”打开文件,然后将光标移到需要删除的行处按Ctrl+G显示行号,再到结尾处再按Ctrl+G,显示文件结尾的行号。
例如:
:23,1045d
假定2次得到的行号为23和1045,则把这期间的内容全删除,也可以在要删除的开始行和结束行中用ma、mb命令标记,然后利用“:'a,'bd”命令删除。
“另存为”功能
$vi file
:w /tmp/1
保存所做的所有修改,也可以将其中的某一部分修改保存到临时文件。
如果仅仅把第20~59行之间的内容存盘成文件/tmp/1,我们可以键入如下命令:
:20,59w /tmp/1
在一个新文件中读其他文件的内容
$vi file
:r /etc/passwd 在打开的文件file中光标所在处读入/etc/passwd
:%s/:.*//g 删除/etc/passwd中用户名后面的从冒号开始直到行尾的所有部分。
您也可以在指定的行号后读入文件内容,例如使用命令:
:3r /etc/passwd
从新文件的第3行开始读入 /etc/passwd的所有内容。
我们还可以使用以下方法删掉文件中所有的空行及以#开始的注释行。
$cat squid.conf.default | grep -v '^$' | grep -v '^#'
</pre>
以上是最常用的编辑命令,有了这些命令,我们就可以非常容易地使用这个功能强大的编辑器了。
如果想学习高级的VI方面的编辑功能,可以阅读这本书:<i><b>vimbook-OPL</b></i>,这是我见过的最好的介绍VIM这方面功能的一本书。
三、gvim如何安装一些插件
gvim安装插件非常简单,只需要把不同的以.vim结尾的插件放在plugin目录下,然后按照插件的要求在.vimrc中设置相应的定义就可以了。
这里再抄一些从vimcdoc中找到的资料,对理解第一节的配置文件和这一节的插件安装有不小的帮助。
<pre>
可能你已经厌倦了输入那些经常用到的命令了。要让 Vim 用你习惯的设置启动,你可以
把这些设置写到一个叫 vimrc 的文件中。Vim 会在启动的时候执行这个文件里的命令。
如果你已经有 vimrc 文件 (例如,系统管理员已经为你配置好了),可以这样编辑它:
:edit $MYVIMRC
如果你还没有 vimrc 文件,请参考 |vimrc| 一节看看你应该在什么地方创建该文件。另
外 ":version" 命令能告诉你 vim 要查找的 "用户 vimrc 文件" 的名字。
对于 Unix 和 Macintosh 系统,总是使用而且也推荐使用如下文件:
~/.vimrc
对于 MS-DOS 和 MS-Windows,可以使用下面其中一个文件:
$HOME/_vimrc
$VIM/_vimrc
vimrc 文件可以包含任何冒号命令。最简单的是设置选项命令。例如,如果你想 Vim 启
动的时候始终开启 'incsearch' 选项,可以在你的 vimrc 文件中加上:
set incsearch
---------------------------------------------------------------------------
Vim 可以通过插件增强功能。插件其实是一个当 Vim 启动的时候能被自动执行的脚本。
简单地把插件放到你 Vim 的 plugin 目录中就可以使它生效。
{仅当 Vim 编译时加入 |+eval| 特性时才有效}
Vim 中有两种插件:
全局插件:用于所有类型的文件
文件类型插件:仅用于特定类型的文件
我们将先讨论全局插件,然后涉及文件类型插件 |add-filetype-plugin|。
全 局 插 件 *standard-plugin*
当你启动 Vim,它会自动加载一些插件。你不需要为此做任何事。这些插件增加一些很多
人想用的,但由 Vim 脚本实现而非编译进 Vim 中的功能。你可以在帮助索引中找到这些
插件:|standard-plugin-list|。还可以参照 |load-plugin|。
*add-global-plugin*
你可以加入一个全局插件使得某些功能在你每次使用 Vim 时都被开启。添加一个全局插
件只要两步:
1. 获得一个插件的拷贝
2. 把它塞进合适的目录
获 得 一 个 全 局 插 件
在什么地方可以找到插件?
- 有一些与 Vim 一起发布,你可以在 $VIMRUNTIME/macros 目录或其子目录中找到。
- 从网上下载,http://www.vim.org 收集了很多。
- 在 Vim 的邮件列表中找:|maillist|。
- 自己写一个,参见 |write-plugin|。
某些插件被打包在 vimball 中,参见 |vimball|。
某些插件可以自动更新,参见 |getscript|。
使 用 一 个 全 局 插 件
首先阅读插件包括的说明文字,看看有没有什么特殊的限制。然后拷贝到你的插件目录:
系统 插件目录
Unix ~/.vim/plugin/
PC 和 OS/2 $HOME/vimfiles/plugin 或 $VIM/vimfiles/plugin
Amiga s:vimfiles/plugin
Macintosh $VIM:vimfiles:plugin
RISC-OS Choices:vimfiles.plugin
以 Unix 系统为例 (假设你还没有 plugin 目录):
mkdir ~/.vim
mkdir ~/.vim/plugin
cp /usr/local/share/vim/vim60/macros/justify.vim ~/.vim/plugin
就是这样了!现在你可以用这个插件定义的命令调整文字了。
除了把这些插件直接放进 plugin/ 目录以外,还可以更好地组织一下,把它们放进
plugin 的单独的子目录中。例如,可以考虑把所有 Perl 插件放置在
"~/.vim/plugin/perl/*.vim"
文件类型插件 *add-filetype-plugin* *ftplugins*
Vim 的发布中包括一套针对不同文件类型的插件。你可以用如下命令启用它们:
:filetype plugin on
这样就行了! 参阅 |vimrc-filetype|。
如果你缺少某种文件类型的插件,或者你找到一个更好的,你可以自行添加一个。这也只
需两步:
1. 获取一个插件的拷贝
2. 塞到合适的目录。
取 得 文 件 类 型 插 件
你可以在找全局插件的相同地方找到文件类型插件。注意一下插件有没有注明文件类型,
据此你可以知道这个插件是全局的还是文件类型相关的。在 $VIMRUNTIME/macros 中的是
全局插件;文件类型插件在 $VIMRUNTIME/ftplugin 中。
使 用 文 件 类 型 插 件 *ftplugin-name*
你可以通过把插件文件放到合适的目录中来增加一个插件。目录的名字与前面提过的全局
插件的位置一样,但最后一级目录是 "ftplugin"。假设你找到一个用于 "stuff" 文件类
型的插件,而且你的系统是 Unix。那么,你可以把这个文件用如下命令移入 ftplugin
目录:
mv thefile ~/.vim/ftplugin/stuff.vim
如果这个文件已经存在,你可以检查一下两个插件有没有冲突。如果没有,你可以用另一
个名字:
mv thefile ~/.vim/ftplugin/stuff_too.vim
这里,下划线用来分开文件类型和其它部分 (这些部分可以由任意字符组成)。但如果你
用 "otherstuff.vim" 就不行了。那是用于 "otherstuff" 类型的文件的。
在 MS-DOS 上不能使用长文件名。如果你增加第二个插件,而这个插件超过 6 个字符,
你就没法用了。你可以通过使用另一层目录来解决这个问题:
mkdir $VIM/vimfiles/ftplugin/fortran
copy thefile $VIM/vimfiles/ftplugin/fortran/too.vim
总的来说,一个文件类型相关的插件的名称是:
ftplugin/<filetype>.vim
ftplugin/<filetype>_<name>.vim
ftplugin/<filetype>/<name>.vim
这里 "<name>" 可以是任何你喜欢的名字。例如,在 Unix 上,"stuff" 文件类型的插件
可以是:
~/.vim/ftplugin/stuff.vim
~/.vim/ftplugin/stuff_def.vim
~/.vim/ftplugin/stuff/header.vim
这里, <filetype> 部分是相应文件类型的名称。只有对应文件类型的文件才会用这个插
件内的设置。插件的 <name> 部分则不重要,你可以对同一个文件类型使用多个插件。
注意 插件必须以 ".vim" 结尾。
请进一步阅读:
|filetype-plugins| 文件类型插件的文档和有关如何避免映射引起的问题。
|load-plugins| 全局插件的启动时间。
|ftplugin-overrule| 控制全局文件类型插件的选项。
|write-plugin| 如何写插件。
|plugin-details| 关于如何使用插件的信息或者当你的插件不工作的时候如何处
理。
|new-filetype| 如果检测新文件类型。
-----------------------------------------------------------------------
感谢:http://learn.tsinghua.edu.cn:8080/2005212716/html/vimpluginspath.html
本部分转载自上面URL
VIM 插件一般安装在 5 个地方, 存放插件的路径都列在“runtimepath”选项中,我们可以使用 set 命令查看它:
:set runtimepath?
显示结果如下:
runtimepath=~/.vim,/usr/local/share/vim/vimfiles,/usr/local/share/vim/vim63,/u
sr/local/share/vim/vimfiles/after,~/.vim/after
Unix 下的 $HOME/.vim 或 Windows 下的 %HOME%/vimfiles:用户自定义脚本及插件。 该目录下的脚本会在系统脚本加载前执行, 用于扩展与替代系统脚本原有功能。
$VIM/vimfiles: 功能同上, 不过是对所有用户均有效的。
$VIMRUNTIME: 随 VIM 一同发行的插件与脚本。 不要在这里存放你自己下载或安装的文件,升级 VIM 的时候, 这里的文件很可能被直接覆盖掉, 不会给出任何提示信息。
Unix 下的 $HOME/.vim/after 或 Windows 下的 %HOME%/vimfiles/after:用于对已有设置进行一些小的修正和覆写。
$VIM/vimfiles/after: 对所有用户均有效的一些全局设置修正脚本。
以上路径都是使用“VIM 语言”给出的, 一般情况下, $VIMRUNTIME 都不会被定义为系统环境变量, $VIM 在少数情况下会在 VIM 之外被定义。 如果你想知道这些路径都是什么, 可以在 VIM 中使用“:echo $VIMRUNTIME”或“:echo $VIM”。
以上提到的 5 个目录的子目录结构都是相同的。 如果你希望在其它目录里安装插件的话,建议使用 $VIMRUNTIME 的目录结构作为模版, 将必要的目录结构创建完整,像这样:
+ <Directory>
+ colors
+ compiler
+ doc
+ etc
+ ftdetect
+ ftplugin
+ indent
+ keymap
+ plugin
+ syntax
-----------------------------------------------------------------------
添加帮助 *add-local-help* *matchit-install*
如果幸运的话,你安装的插件还会包括帮助文件。我们这里解释如何安装这个帮助文件,
以便你能方便地获得新插件的帮助。
我们以 "matchit.vim" 插件为例 (包括在 Vim 中)。这个插件使 "%" 命令可以在两个对
应的 HTML 标记间,Vim 脚本的 if/else/endif 间等匹配点间跳转。这非常有用,但它
不向后兼容 (这也是为什么默认的情况下它不会被激活)。
这个插件有一个文档:"matchit.txt"。我们先来把该插件拷贝到合适的位置。这
次,我们在 Vim 内完成这个工作,以便利用 $VIMRUNTIME。(如果某些目录已经存在你可
以省略一些 "mkdir" 命令)
:!mkdir ~/.vim
:!mkdir ~/.vim/plugin
:!cp $VIMRUNTIME/macros/matchit.vim ~/.vim/plugin
"cp" 命令是基于 Unix 的,MS-DOS 上你可以用 "copy"。
现在在某个 'runtimepath' 目录中建立一个 doc 目录。
:!mkdir ~/.vim/doc
再把帮助文件拷贝进去:
:!cp $VIMRUNTIME/macros/matchit.txt ~/.vim/doc
现在开始玩技巧了,怎样使 Vim 允许你跳转到新的主题上?用 |:helptags| 命令产生一
个本地的 tags 文件即可:
:helptags ~/.vim/doc
现在,你可以用这个命令
:help g%
来获得 "g%" 的帮助了。在使用如下命令的时候,可以看见一个新的条目:
:help local-additions
本地帮助的标题行被自动的加入到该节了。在那里你可以看到 Vim 添加了那些本地的帮
助文件。你还可以从这里跳转到新的帮助中。
</pre>
下面是一些关于VIM的常用选项:
<pre>
常用选项
Vim 中有很多选项。大部分你很少用得上。我们在这个介绍一些常用的。别忘了你可以通
过 ":help" 命令获得更多的帮助。方法是在选项命令前后加上单引号,例如:
:help 'wrap'
如果你搞乱了一个选项,你可以通过在选项后加上一个 & 号把它恢复到默认值。例如:
:set iskeyword&
禁 止 回 绕 行
Vim 通常会对长行自动回绕,以便你可以看见所有的文字。但有时最好还是能让文字在一
行中显示完。这样,你需要左右移动才能看到一整行。以下命令可以关闭行的回绕:
:set nowrap
当你移动到那些不能显示的文字上,Vim 会自动向右滚动让你看到后面的文字,要一次滚
动十个字符,这样就行了:
:set sidescroll=10
这个命令不改变文件中的文本,只改变显示方式。
移 动 命 令 换 行
很多命令只能在一行中移动。你可以通过 'whichwrap' 选项改变它。如下命令把这个选
项设为默认值:
:set whichwrap=b,s
这样,当光标处于行首时用 <BS> 键可以回到前一行的结尾;当处于行尾时用 <Space>
键可以移动到下一行的行首。
要允许 <Left> 和 <Right> 键也能这样,可以用这个命令:
set whichwrap=b,s,<,>
这只在普通模式中有效,要在插入模式中使 <Left> 和 <Right> 也有效,可以:
:set whichwrap=b,s,<,>,[,]
还有一些可以用的标志位,参见 'whichwrap'。
显 示 TAB 键
文件中有 TAB 键的时候,你是看不见的。要把它显示出来:
:set list
现在 TAB 键显示为 ^I,而 $显示在每行的结尾,以便你能找到可能会被你忽略的空白字
符在哪里。
这样做的一个缺点是在有很多 TAB 的时候看起来很丑。如果你使用一个有颜色的终
端,或者使用 GUI 模式,Vim 可以用高亮显示空格和 TAB。使用 'listchars' 选项:
:set listchars=tab:>-,trail:-
现在,TAB 会被显示成 ">---" ("-" 的个数不定) 而行尾多余的空白字符显示成 "-"。
看起来好多了,是吧?
关 键 字
'iskeyword' 选项指定哪些字母可以出现在一个单词中:
:set iskeyword
iskeyword=@,48-57,_,192-255
"@" 表示所有字母。"48-57" 表示 ASCII 字符 48-57 ,即数字 0 到 9。"192-255" 是
可显示的拉丁字符。
有时你希望横线也是关键字,以便 "w" 命令会把 "upper-case" 看作是一个单词。
你可以这样做:
:set iskeyword+=-
:set iskeyword
iskeyword=@,48-57,_,192-255,-
看一下新的值,你会发现 Vim 自动在 "-" 前面加了一个逗号。
要从中去掉一个字符,用 "-="。例如要排除下划线:
:set iskeyword-=_
:set iskeyword
iskeyword=@,48-57,192-255,-
这回,逗号又自动被删除了。
显 示 消 息 的 空 间
当 Vim 启动的时候,在屏幕底部有一行被用于显示消息。当消息很长的时候,多余的部
分会被截断。这样你只能看到一部分。或者文字自动滚动,你要按 <Enter> 来继续。你
可以给 'cmdheight' 选项赋一个值,用来设定显示消息所用的行数。例如:
:set cmdheight=3
这样意味着你用于编辑文字的空间少了,所以这实际上是一种折衷。
</pre>
四、能否在gvim中实现目录树,就类似于开发工具(IDE)中的那种显示文件的方式。
五、如何配置快捷键并实现程序调用JAVAC和相关的CLASSPATH中的LIB进行编译并捕获输出。
这里所说的配置快捷键,其实就是键盘映射,这是VIM的强项(当然,EMACS等也不弱)。这里就不需要我来写什么了,再看一看文档就可以了:
<pre>
简单键盘映射
映射可以使你把一系列 Vim 命令绑定为一个单独的键。假设你要用一个大括号将一个特
定的单词括起来。例如,把 "amount" 变成 "{amount}"。用 ":map" 命令,就可以让 F5
来完成这个工作。命令如下:
:map <F5> i{<Esc>ea}<Esc>
备注:
在输入这个命令时,<F5> 要用四个字符表示。相似地,输入 <Esc> 不是直接按
<Esc> 键,而是输入五个字符。读这份手册时请注意这些区别!
让我们来分解一下这个命令:
<F5> F5 功能键。这是命令的触发器。当这个键被按下时,相应的命令即被
执行。
i{<Esc> 插入 { 字符。<Esc> 键用于退出插入模式。
e 移动到词尾。
a}<Esc> 插入 } 到单词尾。
执行 ":map" 命令后,要在单词两端加上 {},只需要移到单词的第一个字符上并按 F5。
在这个例子中,触发器是单独一个键;它还可以是任何字符串。但若你使用一个已经存在
的 Vim 命令,该命令将不再有效。最好避免出现这种情况。
一个可用于映射的键是反斜杠。因为你很可能想定义多个映射,那就加上另一个字
符。你可以映射 "\p" 为在单词两端加圆括号,而映射 "\c" 为加花括号,例如:
:map \p i(<Esc>ea)<Esc>
:map \c i{<Esc>ea}<Esc>
你需要在敲入 \ 后,立即敲入 p,以便 Vim 知道它们组成一个命令。
":map" 命令 (无参数) 列出当前已定义的映射,至少会包括普通模式下的那些。
</pre>
配置VIM实现JAVA的编译与快速定位错误代码位置,
六、如何实现快速定位错误位置。
参照最后。
七、自动生成部分辅助代码。
对于JAVA开发者来说,自动生成set/get方法是比较生要的,因此,可以使用插件实现。我会在最后介绍这个插件
八、可不可以与ANT结合使用。
当然可以,但我还不会。正在学习中,已经找到了相关的资料,下面就是节取的有用的部分。
<pre>
Configure vi for Java application development
Ryan Brase, 11 July 2003
Newsletters
The vi editor isn't often employed as part of a Java application development environment, but using Vim and Ant, you can configure it to be Java friendly. Here are the steps you should follow to tune vi for use with your next Java project.
The vi editor isn't often employed as part of a Java application development environment, but using Vim and Ant, you can configure it to be Java friendly. Here are the steps you should follow to tune vi for use with your next Java project.
Most software developers encounter the vi editor at some point in their career—if not at college, on production UNIX machines when installing work they coded on their Windows desktop machines in full-blown IDEs. It's rare to find a developer except in the most Microsoft-beholden shops who doesn't have to fire up vi at least once a month. Some developers love vi, while others loathe it. But there's a lot that can be done to make vi a better environment for a Java developer.
MPU
e.g: "IT Manager", "Programmer"
Java and vi don't go together in many people's estimation. Whereas vi is synonymous with diminutive utilitarianism, Java is likened to a huge, lumbering beast. Java developers who select vi as their primary work environment may be few and far between, but even the occasional vi user can benefit from a little time spent configuring it to be more Java friendly. You might be shocked to see how many of the features in your IDE can be provided by vi when all is said and done.
Getting started
First, make sure your vi command is connected, or is symbolically linked or aliased, to the vim binary. Vim stands for Vi IMproved and has almost complete dominance of the vi and vi clone space. It's fast, well maintained, feature-rich, and available on most every platform.
Once you've got vim installed, create a file in your home directory named .vimrc. Listing A shows a good starter .vimrc file. The lines contained in the file tell vi to color Java source code to make it more readable. Their derivation isn't terribly important, and if you don't like the resulting appearance, you can remove them safely.
Tag jump support
Tags are Java identifiers that can be package names, class names, method names, or field names. The creation of a large index of all the tags in your code allows you to jump to the definition of any class, method, or field with a single keystroke. These index files are created using the ctags program, which is available with the vim distribution.
Ctags takes a list of Java source files or directories containing Java source files, extracts identifier information, and produces the sorting index required by vi for jumping to tags. The line of code here shows a sample ctags invocation that produces a tag file containing all the identifiers in the project's source and, so long as the JAVA_HOME variable is defined correctly, Sun's core library source code as well:
ctags -f ~/.tags -R ~/myprojects/src $JAVA_HOME/src
Once the tags index has been created you need only tell vi where it can be found. This is done by including the line set tags=~/.tags in your ~/.vimrc file. With the tags index file available and vi knowing where to find it, you can now jump to any identifier by pressing [CTRL] ]. Although useful for jumping to the location where you've defined methods, classes, and fields you've written yourself, it's even more useful if you included the Java core class library source in your tags index. Now, simply pressing [Ctrl] ] on any core class library class or method will jump to its definition complete with javadoc.
Tag name completion
Jumping to the locations where classes, methods, and fields are defined is nice for viewing their javadoc and checking their internals, but far more often, you just need to check the definition of a keyword. This is accomplished in most IDEs by typing the keyword. However, if you have your tags file setup as explained in the previous section, keyword completion in vi is just a configuration directive away.
Placing the line set complete=.,w,b,u,t,i in your ~/.vimrc file allows you to automatically complete any class, method, or field name by pressing [Ctrl]N while in insert mode. Successive presses of [Ctrl]N bring up the next matches. When you see the tag you want, just continue typing the rest of your source code. You can find additional tag name completion tips, including using the Tab key for completion, on the vim Web site.
Method folding
Good practice suggests that you keep classes small and uncomplicated, with program complexity showing up in the class hierarchy rather than 500 line methods. Unfortunately, some classes just spiral out of control and become virtually unnavigable.
IDEs frequently buffer developers from sheer source length by offering a method table of contents in a narrow left pane. In contrast, vi offers collapsible program blocks it calls "method folding." Folding allows you to hide all the code between the start of an indented block and its end. To enable folding, insert set foldmethod=indent in your ~/vimrc.
Once method folding is enabled, you can greatly condense a Java source file using the command :set foldlevel=0. With the fold level set to zero, you're telling vi to show only lines that aren't indented at all, which in most Java source files means the package, import, and class or interface definition lines. Setting foldlevel=1 tells vi that lines indented a single time should be shown in addition to unindented lines, which includes method signatures and probably not much else. To open a fold and view the hidden contents of a method, type zO on the folded line.
Method folding is easy to enable and disable by setting the foldlevel. I like it for debugging and dislike it when writing new code. You'll just have to see how it fits with the way you like to work.
Compiling and quick-fix editing
IDEs aren't just about editing; they're also compilation environments. Vi does a great job of calling off to external compilers and parsing the resulting messages. Many Java projects use the easily scriptable Ant as a build environment nowadays. Rather than load a lot of Ant-specific settings into my .vimrc file, I created a separate script called vimAnt, which is shown in Listing B.
This script invokes the Ant executable with a few parameters and then filters the output to include only compiler output. You're almost ready to invoke Ant from within vi. You just have to add the lines in Listing C to your ~/.vimrc file. Those lines tell vi to invoke the vimAnt script you created and give it clues on how to parse Ant's jikes output.
With the vimAnt script in your system path, you can now initiate a compilation using the :make command. The current directory and all its parent directories will be searched for a build.xml file whose classes target will be invoked. Error output will be automatically parsed by vi.
Once you've done a compilation with errors in vi, you can use quick fix mode to rapidly go to the errors for easy repair. The :cn command take you to the next error regardless of what file it's in. The :cc command shows you the compiler output message for the current error, and :cl will bring up a list of all the project's errors for easy navigation to any of them. Fix up your errors, and you're just a :make away from a clean compile.
大多数的软件开发人员都会在其生涯的某个时候碰到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之遥了。
</pre>
我从http://learn.tsinghua.edu.cn:8080/2005212716/html/vimplugins.html看到了下面的东西。真服了清华的人了。感谢一下。
常用插件1:
Tag List
官方描述: The “Tag List” plugin is a source code browser plugin for Vim and provides an overview of the structure of source code files and allows you to efficiently browse through source code files for different programming languages.
滇狐评价: 这是一个非常非常非常非常重要的插件, 有了它, 我们才能够在 VIM 中查看一个文件中包含的函数列表, 或是一个类包含的方法列表, 为编程人员提供了极大方便。推荐大家一定要安装!
安装注意事项: 有的系统内置的 ctags 功能太弱, 推荐大家安装 EXUBERANT CTAGS, 这个东西功能比较强大, 居然连 HTML 里面内嵌的 Java Script 都能够支持, 实在是匪疑所思!
滇狐个人习惯: 滇狐习惯把方法列表放在屏幕的右侧, 于是在 .vimrc 中设置了
let Tlist_Use_Right_Window=1
另外, 滇狐习惯让当前不被编辑的文件的方法列表自动折叠起来, 这样可以节约一些屏幕空间,于是在 .vimrc 中设置了
let Tlist_File_Fold_Auto_Close=1
插件2:
Win Manager
官方描述: winmanager is a plugin which implements a classical windows type IDE in Vim-6.0. Basically, you have the directory tree and the buffer list as 2 windows which stay on the left and the editing is done in a seperate area on the left. People have already made excellent File and Buffer explorers seperately and I thought that it might be a cool idea to combine them both. winmanager.vim combines the standard File Explorer which ships with Vim 6.0 and a Buffer Explorer written by Jeff Lanzarotta into one package.
滇狐评价: 非常好用的东西, 在屏幕上打开一个文件浏览器, 这样就可以方便地选择要编辑的文件了。
默认情况下, winmanager 依赖于 bufexplorer,到这里下载。如果你不喜欢 bufexplorer 插件的话 可以在你的 .vimrc 中添加这条命令禁用它:
let g:winManagerWindowLayout = "FileExplorer"
这样就不需要下载该插件了。
滇狐为 winfileexplorer.vim 加了一个补丁, 提供了使用系统默认打开方式打开选中文件的功能,只要把光标放在想要打开的文件上, 然后按“S”就可以了 (注意是大写)。这样以后就可以直接在 gvim 里打开 xmms, 不用再切换出来找 konqueror 了。
插件3:
gdbvim
官方描述: You have one window with (g)vim open, other window with gdb running. When you reach source line in your code, it appears in the vim window. In the opposite direction, you can send commands from vim to gdb (e.g., set breakpoints on given line).
滇狐评价: 该插件意义很重大, 为我们在 VIM 中调试程序提供了可能。 虽然功能还非常少,但已经足以解决平常的大部分需求了。 原始版本问题比较多, 例如只能添加断点,不能删除断点, 滇狐为该插件添加了删除已加断点的功能。 另外快捷键的设置也比较不快捷,滇狐又顺便把相应的快捷键修改了一下, 现在用起来已经比较顺畅了, 放出来给大家参观一下,以便继续改进。 目前只在 Linux 下调试通过, 其它平台未经测试, 感兴趣的朋友可以在其它平台下测试,并汇报测试结果。
需要继续增加的功能: 下一步滇狐准备再给这个插件加上保存所有断点的功能,这样下次调试的时候就不用重新设置断点了。 另外, 目前查看变量的值时,只能把结果打印到 console 窗口中, 滇狐希望在下一个版本中能够把查看结果抓取到 VIM 中显示。 VIM 网站上给出了把所有结果抓取到 VIM 中的实现, 但那不是滇狐希望的结果。滇狐最希望得到的结果是使用 tooltip 显示变量结果, 另外能够再提供一个 watch 窗口, 时刻监视变量的值, 以后慢慢实现吧。
安装注意事项: gdbvim 脚本是使用 Perl 语言编写的, 因此需要安装 Perl。为了方便你的使用, 建议在 $PATH 路径下添加一个指向 plugin/gdbvim 脚本的符号链接, 或者直接将该文件复制到 $PATH 路径下,滇狐推荐前者。 还有, 最好在你的 .vimrc 中 set noshowcmd,否则大量的“请按 ENTER 继续”会把你活活烦死。 另外, 滇狐 patch 过的脚本依赖 multvars.vim,如果你使用滇狐版的话, 需要再安装这个插件。
使用方法: 编译你的程序时加上 -g 参数生成调试信息, 然后使用“gdbvim <你的程序名>”启动 gdbvim, gdbvim 会自动启动一个 gvim。 将 gvim 最大化, 然后就可以使用 Gdb 菜单或快捷键添加断点、 单步调试程序、 查看变量值了。
插件4
cscope_maps
官方描述: Cscope is a very handy tool, but it’s even better when you don’t ever have to leave the comfort of your favorite editor (i.e. Vim) to use it. Fortunately, Cscope support has been built into Vim.
滇狐评价: 滇狐目前 cscope 用得不如 ctags 多, 许多功能都不大熟。 不过既然大家都说好,那还是装着玩玩吧。
安装注意事项: 需要安装 cscope。
插件5
sketch
官方描述: Sketch.vim – Line drawing/painting using the mouse. Based on an idea by Morris.
滇狐评价: 很好玩, 虽然用到的时候不多, 但真一旦用到了, 还是会觉得这个东西很有用的。
安装注意事项: 建议在 .vimrc 中把 call ToggleSketch() 映射为命令,方便一些:
command -nargs=0 ToggleSketch call ToggleSketch()
插件6:
Calendar
官方描述: This script create calender window. This don’t use the external program (cal).
滇狐评价: 安装完毕后使用 :Calendar 命令打开一个垂直的日历窗口, 使用 :CalendarH 命令打开水平的日历窗口。 应该还是比较有用的。
安装注意事项: 滇狐个人喜欢把日记的扩展名改成 .txt, 默认的是 .cal。在 calendar.vim 里面查找替换一下就可以了。 另外, 可以在 .vimrc 里面修改日记所在的路径,默认是 ~/diary。
let g:calendar_diary=<PATH>
感谢网络提供的这些资源,感谢在网络上分享的人们。欢迎指正:[email protected],[email protected],我是bear.
在开发JAVA的web应用中,有相当多的非常好用的ide工具可以使用,但是,理解使用记事本与ant配合开发java应用仍然是相当重要的,虽然有些时候开发的效率会低一些,但的的确确可以让你理好地理解一些底层的东西。(不要说底层的东西不重要)
对于记事本,大家可能想到的是ultraEdit或者editplus等工具。这些工具是相当好用的,并且我也经常用这些工具。不过,如果我们需要在不同平台之间工作,那么使用这些工具就有些力不从心了。最起码,在非WINDOWS平台使用这些工具,不太现实了。
那么,让我们找几个可以在不同平台下用的编辑器。
选择一: emacs
选择二: vim/gvim
选择三: jedit
而这时,我认为第二种选择的gvim是正确的,原因如下:
1 作为世界两大编辑器之一(emacs and vi/vim),在功能上自然不用多说。
2
emacs的确也是一种信仰,并且有非常多的,比如DJEE等工具可以非常好地应用于开发,但是,它太大了,不适合轻量级的开发,特别是在WINDOWS平台。
3 jedit的性能在一定程度上并不非常受欢迎(这个我倒没怎么感觉出来)
4 emacs在不同平台的配置方便性上不如vim
5 vim在一定程度上,编辑能力更强一点点(EMACS的FANS不要骂我)
6 。。。。。还有好多写不完的原因。
#其实,上面这几条是废话,大家喜欢哪一种就选哪一种吧,这里只是我一家之言:)嘿嘿。
那么,下面进入正题:
这是gvim篇,也就是注重写gvim的配置与使用。
作为初次接触gvim的用户,可能有一定的vi或者vim的使用经验,但现在我们打算使用gvim实现编写java web程序的目的,仍然需要解决一些问题,那么这里列一个表,用于一个一个地解决:
1、如何安装与配置gvim程序,包括配置文件的位置和作用。
2、基本的编辑命令有哪些。
3、gvim如何安装一些插件。
4、能否在gvim中实现目录树,就类似于开发工具(IDE)中的那种显示文件的方式。
5、如何配置快捷键并实现程序调用JAVAC和相关的CLASSPATH中的LIB进行编译并捕获输出。
6、如何实现快速定位错误位置。
7、自动生成部分辅助代码。
8、可不可以与ANT结合使用。
如果可以实现上面的8个功能,那么配合着VIM强大的编辑功能,我们就有了一个相当不错的IDE功能,并且在一定程度上比IDE更方便。那么,我们就试着配置一下这8个问题。
在这里提出,配置平台为linux,内核为2.6,使用gvim7.0,使用rpm包装,经试验,下面的配置方式适合slackware10.2,11.0,debian3.1r4,ubuntu6.06,fc5,fc6以及solaris10x86。其他系统没有测试,不过应该大同小异,没有什么大的区别。
这里先看一下VIM官方网站的说明:Vim is a highly configurable text editor built to enable efficient text editing. It is an improved version of the vi editor distributed with most UNIX systems. Vim is distributed free as charityware. If you find Vim a useful addition to your life please consider helping needy children in Uganda.
希望大家在使用vim的使用,保持一种信养。
一、首先是第一个问题:如何安装与配置gvim程序,包括配置文件的位置和作用。
安装的方式在这里就不多说了,大多用yum,apt-get或者自己编译原码也可以,都没有太大区别。这里从它的配置文件开始说起。
我们参考的资源当然是官方网站和o'reilly的一些书,最基本的进入和离开VIM的方法这里就不多说了,主要解决一些应用方面的东西。
VIM的配置文件:在不同的UNIX下,VIM会为每一个用户提供自己的配置文件,这个文件的名字就是.vimrc,在每个用户自己的根目录下,是一个隐藏文件。由于有些版本的LINUX发行版并不会在增加用户的时候自动复制一份好用的.vimrc到用户目录,因此,可以自己手动把vim目录中的vimrc_example.vim复制到$user_home/.vimrc
这个.vimrc就是用户自定义的配置文件。以后如果需要安装插件或者修改配置,都可以在这里进行修改而不需要去修改系统的配置文件。记住在修改之前先做备份。
下面是我复制的一份fc6下面的vim7.0自带的.vimrc的配置文件,如果您是slackware用户,可以选择这个配置文件:
[code]
------------------------------------------------------------------------------
" An example for a vimrc file.
"
" Maintainer: Bram Moolenaar <[email protected]>
" Last change: 2006 Aug 12
"
" To use it, copy it to
" for Unix and OS/2: ~/.vimrc
" for Amiga: s:.vimrc
" for MS-DOS and Win32: $VIM\_vimrc
" for OpenVMS: sys$login:.vimrc
" When started as "evim", evim.vim will already have done these settings.
if v:progname =~? "evim"
finish
endif
" Use Vim settings, rather then Vi settings (much better!).
" This must be first, because it changes other options as a side effect.
set nocompatible
" allow backspacing over everything in insert mode
set backspace=indent,eol,start
if has("vms")
set nobackup " do not keep a backup file, use versions instead
else
set backup " keep a backup file
endif
set history=50 " keep 50 lines of command line history
set ruler " show the cursor position all the time
set showcmd " display incomplete commands
set incsearch " do incremental searching
" For Win32 GUI: remove 't' flag from 'guioptions': no tearoff menu entries
" let &guioptions = substitute(&guioptions, "t", "", "g")
" Don't use Ex mode, use Q for formatting
map Q gq
" In an xterm the mouse should work quite well, thus enable it.
set mouse=a
" This is an alternative that also works in block mode, but the deleted
" text is lost and it only works for putting the current register.
"vnoremap p "_dp
" Switch syntax highlighting on, when the terminal has colors
" Also switch on highlighting the last used search pattern.
if &t_Co > 2 || has("gui_running")
syntax on
set hlsearch
endif
" Only do this part when compiled with support for autocommands.
if has("autocmd")
" Enable file type detection.
" Use the default filetype settings, so that mail gets 'tw' set to 72,
" 'cindent' is on in C files, etc.
" Also load indent files, to automatically do language-dependent indenting.
filetype plugin indent on
" Put these in an autocmd group, so that we can delete them easily.
augroup vimrcEx
au!
" For all text files set 'textwidth' to 78 characters.
autocmd FileType text setlocal textwidth=78
" When editing a file, always jump to the last known cursor position.
" Don't do it when the position is invalid or when inside an event handler
" (happens when dropping a file on gvim).
autocmd BufReadPost *
\ if line("'\"") > 0 && line("'\"") <= line("$") |
\ exe "normal g`\"" |
\ endif
augroup END
else
set autoindent " always set autoindenting on
endif " has("autocmd")
" Convenient command to see the difference between the current buffer and the
" file it was loaded from, thus the changes you made.
command DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis
\ | wincmd p | diffthis
-------------------------------------------------------------------------------
[/code]
二、基本的编辑命令有哪些呢?
下面是我从网上找到的一些资源,大家可以整理出自己需要的资源,然后打印一份,随时翻看。每个人喜好的编辑习惯不同,因此每个人都有自己的一套VIM的使用方法。
<pre>
vi 的操作模式
=============
vi 提供两种操作模式:输入模式(insert mode)和指令模式(command mode)。当使用者进入 vi 后,即处在指令模式下,此刻键入之任何字元皆被视为指令。在此模式下可进行删除、修改等动作。若要输入资料,则需进入输入模式。
输入模式
========
如何进入输入模式
a (append) 由游标之后加入资料。
A 由该行之末加入资料。
i (insert) 由游标之前加入资料。
I 由该行之首加入资料。
o (open) 新增一行於该行之下供输入资料之用。
O 新增一行於该行之上供输入资料之用。
如何离开输入模式
《ESC》 结束输入模式。
指令模式
========
游标之移动
h 向左移一个字元。
j 向上移一个字元。
k 向下移一个字元。
l 向右移一个字元。
0 移至该行之首
$ 移至该行之末。
^ 移至该行的第一个字元处。
H 移至视窗的第一列。
M 移至视窗的中间那列。
L 移至视窗的最后一列。
G 移至该文件的最后一列。
+ 移至下一列的第一个字元处。
- 移至上一列的第一个字元处。
( 移至该句之首。 (注一)
) 移至该句之末。
{ 移至该段落之首。 (注二)
} 移至该段落之末。
nG 移至该文件的第 n 列。
n+ 移至游标所在位置之后的第 n 列。
n- 移至游标所在位置之前的第 n 列。
会显示该行之行号、文件名称、文件中最末行之行号、游标所在行号占总行号之百分比。
注一:句子(sentence)在vi中是指以『!』、『.』或『?』结束的一串字。
注二:段落(paragraph)在vi中是指以空白行隔开的文字。
视窗的移动
==========
视窗往下卷一页。
视窗往上卷一页。
视窗往下卷半页。
视窗往上卷半页。
视窗往下卷一行。
视窗往上卷一行。
删除、复制及修改指令介绍 (此单元较少使用)
=========================
d(delete)、c(change)和y(yank)这一类的指令在 vi 中的指令格式为:
Operator + Scope = command
(运算子) (范围)
运算子:
d 删除指令。删除资料,但会将删除资料复制到记忆体缓冲区。
y 将资料(字组、行列、句子或段落)复制到缓冲区。
p 放置(put)指令,与 d 和 y 配和使用。可将最后delete或yank的资
料放置於游标所在位置之行列下。
c 修改(change)指令,类似delete与insert的组和。删除一个字组、句
子等之资料,并插入新键资料。
范围:
e 由游标所在位置至该字串的最后一个字元。
w 由游标所在位置至下一个字串的第一个字元。
b 由游标所在位置至前一个字串的第一个字元。
$ 由游标所在位置至该行的最后一个字元。
0 由游标所在位置至该行的第一个字元。
) 由游标所在位置至下一个句子的第一个字元。
( 由游标所在位置至该句子的第一个字元。
{ 由游标所在位置至该段落的最后一个字元。
} 由游标所在位置至该段落的第一个字元。
整行动作
dd 删除整行。
D 以行为单位,删除游标后之所有字元。
cc 修改整行的内容。
yy yank整行,使游标所在该行复制到记忆体缓冲区。
删除与修改
==========
x 删除游标所在该字元。
X 删除游标所在之前一字元。
dd 删除游标所在该行。
r 用接於此指令之后的字元取代(replace)游标所在字元。
如: ra 将游标所在字元以 a 取代之。
R 进入取代状态,直到《ESC》为止。
s 删除游标所在之字元,并进入输入模式直到《ESC》。
S 删除游标所在之该行资料,并进入输入模式直到《ESC》。
搬移与复制
==========
利用 delete 及 put 指令可完成资料搬移之目的。
利用 yank 及 put 指令可完成资料复制之目的。
yank 和 delete 可将指定的资料复制到记忆体缓冲区,而藉由 put 指令
可将缓冲区内的资料复制到萤幕上。
例:
搬移一行 .在该行执行 dd
.游标移至目的地
.执行 p
复制一行 .在该行执行 yy
.游标移至目的地
.执行 p
指令重复
========
在指令模式中,可在指令前面加入一数字 n,则此指令动作会重复执行 n
次。
例:
删除10行 .10dd
复制10行 .10yy
.游标移至目的地
.p
指标往下移10行 .10j
取消前一动作(Undo)
==================
即复原执行上一指令前的内容。
u 恢复最后一个指令之前的结果。
U 恢复游标该行之所有改变。
搜寻
====
在vi中可搜寻某一字串,使游标移至该处。
/字串 往游标之后寻找该字串。
?字串 往游标之前寻找该字串。
n 往下继续寻找下一个相同的字串。
N 往上继续寻找下一个相同的字串。
资料的连接
==========
J 句子的连接。将游标所在之下一行连接至游标该行的后面。
若某行资料太长亦可将其分成两行,只要将游标移至分开点,进入输入模式
(可利用 a、i等指令)再按《Enter》即可。
环境的设定
==========
:set nu 设定资料的行号。
:set nonu 取消行号设定。
:set ai 自动内缩。
:set noai 取消自动内缩。
自动内缩(automatic indentation)
在编辑文件或程式时,有时会遇到需要内缩的状况,『:set ai』即提供自
动内缩的功能,用下例解释之:
.vi test
.(进入编辑视窗后)
this is the test for auto indent
《Tab》start indent ← :set ai (设自动内缩)
《Tab》data
《Tab》data
《Tab》data ← :set noai (取消自动内缩)
the end of auto indent.
.注: 可删除《Tab》字元。
ex指令
======
读写资料
:w 将缓冲区的资料写入磁盘中。
:10,20w test 将第10行至第20行的资料写入test文件。
:10,20w>>test 将第10行至第20行的资料加在test文件之后。
:r test 将test文件的资料读入编辑缓冲区的最后。
删除、复制及搬移
:10,20d 删除第10行至第20行的资料。
:10d 删除第10行的资料。
:%d 删除整个编辑缓冲区。
:10,20co30 将第10行至第20行的资料复制至第30行之后。
:10,20mo30 将第10行至第20行的资料搬移至第30行之后。
字串搜寻与取代
s(substitute)指令可搜寻某行列范围。
g(global)指令则可搜寻整个编辑缓冲区的资料。
s指令以第一个满足该条件的字串为其取代的对象,若该行有数个满足该条
件的字串,也仅能取代第一个,若想取代所有的字串则需加上g参数。
:1,$s/old/new/g 将文件中所有的『old』改成『new』。
:10,20s/^/ / 将第10行至第20行资料的最前面插入5个空白。
:%s/old/new/g 将编辑缓冲区中所有的『old』改成『new』。
恢复编辑时被中断的文件
======================
在编辑过程中,若系统当掉或连线中断,而缓冲区的资料并还未
被写回磁盘时,当再度回到系统,执行下列指令即可回复中断前
的文件内容。
%vi -r filename
编辑多个文件
============
vi亦提供同时编辑多个文件的功能,方法如下:
%vi file1 file2 ..
VI 使用技巧
x 删除游标所在字元。
dd 删除游标所在的列。
s 删除游标所在字元,并进入输入模式。
S 删除游标所在的列,并进入输入模式。
r 修改游标所在字元,r 後接著要修正的字元。
R 进入取代状态,新增资料会覆盖原先资料,直到按[ESC]回到指令模式下为止。
+$ 跳到文件末
[home] 跳到行首
[end] 跳到行末
+n 跳到第 n 行
nj 下跳 n 行(hjkl分别表示左下上右都可仿照用之)
yy 拷贝一行
p 粘贴拷贝的行
u 返回上次编辑(相当于WIN中的撤消)
/字串 寻找某个字串
/enter 继续找上次的字串
:w 存盘
:q 退出
:wq 存盘并退出
:q! 强行退出
:wq! 强行存盘退出
替换文件中的字符串
在vi界面下使用命令
:%s#/usr/bin#/bin#g
可以把文件中所有路径/usr/bin换成/bin。也可以使用命令:
:%s/usr/bin/bin/g
其中“”是转义字符,表明其后的“/”字符是具有实际意义的字符,不是分隔符。
整个文件的各行或某几行的行首或行尾加一些字符串
$vi file
:3,$s/^/some string 在文件的第一行至最后一行的行首插入“some string”。
:%s/$/some string/g 在整个文件每一行的行尾添加“some string”。
:%s/string1/string2/g 在整个文件中替换“string1”成“string2”。
:3,7s/string1/string2/ 仅替换文件中的第3行到第7行中的“string1”成“string2”。
注意: 其中s为substitute,%表示所有行,g表示global。
删除大段的内容
首先利用编辑命令“vi file”打开文件,然后将光标移到需要删除的行处按Ctrl+G显示行号,再到结尾处再按Ctrl+G,显示文件结尾的行号。
例如:
:23,1045d
假定2次得到的行号为23和1045,则把这期间的内容全删除,也可以在要删除的开始行和结束行中用ma、mb命令标记,然后利用“:'a,'bd”命令删除。
“另存为”功能
$vi file
:w /tmp/1
保存所做的所有修改,也可以将其中的某一部分修改保存到临时文件。
如果仅仅把第20~59行之间的内容存盘成文件/tmp/1,我们可以键入如下命令:
:20,59w /tmp/1
在一个新文件中读其他文件的内容
$vi file
:r /etc/passwd 在打开的文件file中光标所在处读入/etc/passwd
:%s/:.*//g 删除/etc/passwd中用户名后面的从冒号开始直到行尾的所有部分。
您也可以在指定的行号后读入文件内容,例如使用命令:
:3r /etc/passwd
从新文件的第3行开始读入 /etc/passwd的所有内容。
我们还可以使用以下方法删掉文件中所有的空行及以#开始的注释行。
$cat squid.conf.default | grep -v '^$' | grep -v '^#'
</pre>
以上是最常用的编辑命令,有了这些命令,我们就可以非常容易地使用这个功能强大的编辑器了。
如果想学习高级的VI方面的编辑功能,可以阅读这本书:<i><b>vimbook-OPL</b></i>,这是我见过的最好的介绍VIM这方面功能的一本书。
三、gvim如何安装一些插件
gvim安装插件非常简单,只需要把不同的以.vim结尾的插件放在plugin目录下,然后按照插件的要求在.vimrc中设置相应的定义就可以了。
这里再抄一些从vimcdoc中找到的资料,对理解第一节的配置文件和这一节的插件安装有不小的帮助。
<pre>
可能你已经厌倦了输入那些经常用到的命令了。要让 Vim 用你习惯的设置启动,你可以
把这些设置写到一个叫 vimrc 的文件中。Vim 会在启动的时候执行这个文件里的命令。
如果你已经有 vimrc 文件 (例如,系统管理员已经为你配置好了),可以这样编辑它:
:edit $MYVIMRC
如果你还没有 vimrc 文件,请参考 |vimrc| 一节看看你应该在什么地方创建该文件。另
外 ":version" 命令能告诉你 vim 要查找的 "用户 vimrc 文件" 的名字。
对于 Unix 和 Macintosh 系统,总是使用而且也推荐使用如下文件:
~/.vimrc
对于 MS-DOS 和 MS-Windows,可以使用下面其中一个文件:
$HOME/_vimrc
$VIM/_vimrc
vimrc 文件可以包含任何冒号命令。最简单的是设置选项命令。例如,如果你想 Vim 启
动的时候始终开启 'incsearch' 选项,可以在你的 vimrc 文件中加上:
set incsearch
---------------------------------------------------------------------------
Vim 可以通过插件增强功能。插件其实是一个当 Vim 启动的时候能被自动执行的脚本。
简单地把插件放到你 Vim 的 plugin 目录中就可以使它生效。
{仅当 Vim 编译时加入 |+eval| 特性时才有效}
Vim 中有两种插件:
全局插件:用于所有类型的文件
文件类型插件:仅用于特定类型的文件
我们将先讨论全局插件,然后涉及文件类型插件 |add-filetype-plugin|。
全 局 插 件 *standard-plugin*
当你启动 Vim,它会自动加载一些插件。你不需要为此做任何事。这些插件增加一些很多
人想用的,但由 Vim 脚本实现而非编译进 Vim 中的功能。你可以在帮助索引中找到这些
插件:|standard-plugin-list|。还可以参照 |load-plugin|。
*add-global-plugin*
你可以加入一个全局插件使得某些功能在你每次使用 Vim 时都被开启。添加一个全局插
件只要两步:
1. 获得一个插件的拷贝
2. 把它塞进合适的目录
获 得 一 个 全 局 插 件
在什么地方可以找到插件?
- 有一些与 Vim 一起发布,你可以在 $VIMRUNTIME/macros 目录或其子目录中找到。
- 从网上下载,http://www.vim.org 收集了很多。
- 在 Vim 的邮件列表中找:|maillist|。
- 自己写一个,参见 |write-plugin|。
某些插件被打包在 vimball 中,参见 |vimball|。
某些插件可以自动更新,参见 |getscript|。
使 用 一 个 全 局 插 件
首先阅读插件包括的说明文字,看看有没有什么特殊的限制。然后拷贝到你的插件目录:
系统 插件目录
Unix ~/.vim/plugin/
PC 和 OS/2 $HOME/vimfiles/plugin 或 $VIM/vimfiles/plugin
Amiga s:vimfiles/plugin
Macintosh $VIM:vimfiles:plugin
RISC-OS Choices:vimfiles.plugin
以 Unix 系统为例 (假设你还没有 plugin 目录):
mkdir ~/.vim
mkdir ~/.vim/plugin
cp /usr/local/share/vim/vim60/macros/justify.vim ~/.vim/plugin
就是这样了!现在你可以用这个插件定义的命令调整文字了。
除了把这些插件直接放进 plugin/ 目录以外,还可以更好地组织一下,把它们放进
plugin 的单独的子目录中。例如,可以考虑把所有 Perl 插件放置在
"~/.vim/plugin/perl/*.vim"
文件类型插件 *add-filetype-plugin* *ftplugins*
Vim 的发布中包括一套针对不同文件类型的插件。你可以用如下命令启用它们:
:filetype plugin on
这样就行了! 参阅 |vimrc-filetype|。
如果你缺少某种文件类型的插件,或者你找到一个更好的,你可以自行添加一个。这也只
需两步:
1. 获取一个插件的拷贝
2. 塞到合适的目录。
取 得 文 件 类 型 插 件
你可以在找全局插件的相同地方找到文件类型插件。注意一下插件有没有注明文件类型,
据此你可以知道这个插件是全局的还是文件类型相关的。在 $VIMRUNTIME/macros 中的是
全局插件;文件类型插件在 $VIMRUNTIME/ftplugin 中。
使 用 文 件 类 型 插 件 *ftplugin-name*
你可以通过把插件文件放到合适的目录中来增加一个插件。目录的名字与前面提过的全局
插件的位置一样,但最后一级目录是 "ftplugin"。假设你找到一个用于 "stuff" 文件类
型的插件,而且你的系统是 Unix。那么,你可以把这个文件用如下命令移入 ftplugin
目录:
mv thefile ~/.vim/ftplugin/stuff.vim
如果这个文件已经存在,你可以检查一下两个插件有没有冲突。如果没有,你可以用另一
个名字:
mv thefile ~/.vim/ftplugin/stuff_too.vim
这里,下划线用来分开文件类型和其它部分 (这些部分可以由任意字符组成)。但如果你
用 "otherstuff.vim" 就不行了。那是用于 "otherstuff" 类型的文件的。
在 MS-DOS 上不能使用长文件名。如果你增加第二个插件,而这个插件超过 6 个字符,
你就没法用了。你可以通过使用另一层目录来解决这个问题:
mkdir $VIM/vimfiles/ftplugin/fortran
copy thefile $VIM/vimfiles/ftplugin/fortran/too.vim
总的来说,一个文件类型相关的插件的名称是:
ftplugin/<filetype>.vim
ftplugin/<filetype>_<name>.vim
ftplugin/<filetype>/<name>.vim
这里 "<name>" 可以是任何你喜欢的名字。例如,在 Unix 上,"stuff" 文件类型的插件
可以是:
~/.vim/ftplugin/stuff.vim
~/.vim/ftplugin/stuff_def.vim
~/.vim/ftplugin/stuff/header.vim
这里, <filetype> 部分是相应文件类型的名称。只有对应文件类型的文件才会用这个插
件内的设置。插件的 <name> 部分则不重要,你可以对同一个文件类型使用多个插件。
注意 插件必须以 ".vim" 结尾。
请进一步阅读:
|filetype-plugins| 文件类型插件的文档和有关如何避免映射引起的问题。
|load-plugins| 全局插件的启动时间。
|ftplugin-overrule| 控制全局文件类型插件的选项。
|write-plugin| 如何写插件。
|plugin-details| 关于如何使用插件的信息或者当你的插件不工作的时候如何处
理。
|new-filetype| 如果检测新文件类型。
-----------------------------------------------------------------------
感谢:http://learn.tsinghua.edu.cn:8080/2005212716/html/vimpluginspath.html
本部分转载自上面URL
VIM 插件一般安装在 5 个地方, 存放插件的路径都列在“runtimepath”选项中,我们可以使用 set 命令查看它:
:set runtimepath?
显示结果如下:
runtimepath=~/.vim,/usr/local/share/vim/vimfiles,/usr/local/share/vim/vim63,/u
sr/local/share/vim/vimfiles/after,~/.vim/after
Unix 下的 $HOME/.vim 或 Windows 下的 %HOME%/vimfiles:用户自定义脚本及插件。 该目录下的脚本会在系统脚本加载前执行, 用于扩展与替代系统脚本原有功能。
$VIM/vimfiles: 功能同上, 不过是对所有用户均有效的。
$VIMRUNTIME: 随 VIM 一同发行的插件与脚本。 不要在这里存放你自己下载或安装的文件,升级 VIM 的时候, 这里的文件很可能被直接覆盖掉, 不会给出任何提示信息。
Unix 下的 $HOME/.vim/after 或 Windows 下的 %HOME%/vimfiles/after:用于对已有设置进行一些小的修正和覆写。
$VIM/vimfiles/after: 对所有用户均有效的一些全局设置修正脚本。
以上路径都是使用“VIM 语言”给出的, 一般情况下, $VIMRUNTIME 都不会被定义为系统环境变量, $VIM 在少数情况下会在 VIM 之外被定义。 如果你想知道这些路径都是什么, 可以在 VIM 中使用“:echo $VIMRUNTIME”或“:echo $VIM”。
以上提到的 5 个目录的子目录结构都是相同的。 如果你希望在其它目录里安装插件的话,建议使用 $VIMRUNTIME 的目录结构作为模版, 将必要的目录结构创建完整,像这样:
+ <Directory>
+ colors
+ compiler
+ doc
+ etc
+ ftdetect
+ ftplugin
+ indent
+ keymap
+ plugin
+ syntax
-----------------------------------------------------------------------
添加帮助 *add-local-help* *matchit-install*
如果幸运的话,你安装的插件还会包括帮助文件。我们这里解释如何安装这个帮助文件,
以便你能方便地获得新插件的帮助。
我们以 "matchit.vim" 插件为例 (包括在 Vim 中)。这个插件使 "%" 命令可以在两个对
应的 HTML 标记间,Vim 脚本的 if/else/endif 间等匹配点间跳转。这非常有用,但它
不向后兼容 (这也是为什么默认的情况下它不会被激活)。
这个插件有一个文档:"matchit.txt"。我们先来把该插件拷贝到合适的位置。这
次,我们在 Vim 内完成这个工作,以便利用 $VIMRUNTIME。(如果某些目录已经存在你可
以省略一些 "mkdir" 命令)
:!mkdir ~/.vim
:!mkdir ~/.vim/plugin
:!cp $VIMRUNTIME/macros/matchit.vim ~/.vim/plugin
"cp" 命令是基于 Unix 的,MS-DOS 上你可以用 "copy"。
现在在某个 'runtimepath' 目录中建立一个 doc 目录。
:!mkdir ~/.vim/doc
再把帮助文件拷贝进去:
:!cp $VIMRUNTIME/macros/matchit.txt ~/.vim/doc
现在开始玩技巧了,怎样使 Vim 允许你跳转到新的主题上?用 |:helptags| 命令产生一
个本地的 tags 文件即可:
:helptags ~/.vim/doc
现在,你可以用这个命令
:help g%
来获得 "g%" 的帮助了。在使用如下命令的时候,可以看见一个新的条目:
:help local-additions
本地帮助的标题行被自动的加入到该节了。在那里你可以看到 Vim 添加了那些本地的帮
助文件。你还可以从这里跳转到新的帮助中。
</pre>
下面是一些关于VIM的常用选项:
<pre>
常用选项
Vim 中有很多选项。大部分你很少用得上。我们在这个介绍一些常用的。别忘了你可以通
过 ":help" 命令获得更多的帮助。方法是在选项命令前后加上单引号,例如:
:help 'wrap'
如果你搞乱了一个选项,你可以通过在选项后加上一个 & 号把它恢复到默认值。例如:
:set iskeyword&
禁 止 回 绕 行
Vim 通常会对长行自动回绕,以便你可以看见所有的文字。但有时最好还是能让文字在一
行中显示完。这样,你需要左右移动才能看到一整行。以下命令可以关闭行的回绕:
:set nowrap
当你移动到那些不能显示的文字上,Vim 会自动向右滚动让你看到后面的文字,要一次滚
动十个字符,这样就行了:
:set sidescroll=10
这个命令不改变文件中的文本,只改变显示方式。
移 动 命 令 换 行
很多命令只能在一行中移动。你可以通过 'whichwrap' 选项改变它。如下命令把这个选
项设为默认值:
:set whichwrap=b,s
这样,当光标处于行首时用 <BS> 键可以回到前一行的结尾;当处于行尾时用 <Space>
键可以移动到下一行的行首。
要允许 <Left> 和 <Right> 键也能这样,可以用这个命令:
set whichwrap=b,s,<,>
这只在普通模式中有效,要在插入模式中使 <Left> 和 <Right> 也有效,可以:
:set whichwrap=b,s,<,>,[,]
还有一些可以用的标志位,参见 'whichwrap'。
显 示 TAB 键
文件中有 TAB 键的时候,你是看不见的。要把它显示出来:
:set list
现在 TAB 键显示为 ^I,而 $显示在每行的结尾,以便你能找到可能会被你忽略的空白字
符在哪里。
这样做的一个缺点是在有很多 TAB 的时候看起来很丑。如果你使用一个有颜色的终
端,或者使用 GUI 模式,Vim 可以用高亮显示空格和 TAB。使用 'listchars' 选项:
:set listchars=tab:>-,trail:-
现在,TAB 会被显示成 ">---" ("-" 的个数不定) 而行尾多余的空白字符显示成 "-"。
看起来好多了,是吧?
关 键 字
'iskeyword' 选项指定哪些字母可以出现在一个单词中:
:set iskeyword
iskeyword=@,48-57,_,192-255
"@" 表示所有字母。"48-57" 表示 ASCII 字符 48-57 ,即数字 0 到 9。"192-255" 是
可显示的拉丁字符。
有时你希望横线也是关键字,以便 "w" 命令会把 "upper-case" 看作是一个单词。
你可以这样做:
:set iskeyword+=-
:set iskeyword
iskeyword=@,48-57,_,192-255,-
看一下新的值,你会发现 Vim 自动在 "-" 前面加了一个逗号。
要从中去掉一个字符,用 "-="。例如要排除下划线:
:set iskeyword-=_
:set iskeyword
iskeyword=@,48-57,192-255,-
这回,逗号又自动被删除了。
显 示 消 息 的 空 间
当 Vim 启动的时候,在屏幕底部有一行被用于显示消息。当消息很长的时候,多余的部
分会被截断。这样你只能看到一部分。或者文字自动滚动,你要按 <Enter> 来继续。你
可以给 'cmdheight' 选项赋一个值,用来设定显示消息所用的行数。例如:
:set cmdheight=3
这样意味着你用于编辑文字的空间少了,所以这实际上是一种折衷。
</pre>
四、能否在gvim中实现目录树,就类似于开发工具(IDE)中的那种显示文件的方式。
五、如何配置快捷键并实现程序调用JAVAC和相关的CLASSPATH中的LIB进行编译并捕获输出。
这里所说的配置快捷键,其实就是键盘映射,这是VIM的强项(当然,EMACS等也不弱)。这里就不需要我来写什么了,再看一看文档就可以了:
<pre>
简单键盘映射
映射可以使你把一系列 Vim 命令绑定为一个单独的键。假设你要用一个大括号将一个特
定的单词括起来。例如,把 "amount" 变成 "{amount}"。用 ":map" 命令,就可以让 F5
来完成这个工作。命令如下:
:map <F5> i{<Esc>ea}<Esc>
备注:
在输入这个命令时,<F5> 要用四个字符表示。相似地,输入 <Esc> 不是直接按
<Esc> 键,而是输入五个字符。读这份手册时请注意这些区别!
让我们来分解一下这个命令:
<F5> F5 功能键。这是命令的触发器。当这个键被按下时,相应的命令即被
执行。
i{<Esc> 插入 { 字符。<Esc> 键用于退出插入模式。
e 移动到词尾。
a}<Esc> 插入 } 到单词尾。
执行 ":map" 命令后,要在单词两端加上 {},只需要移到单词的第一个字符上并按 F5。
在这个例子中,触发器是单独一个键;它还可以是任何字符串。但若你使用一个已经存在
的 Vim 命令,该命令将不再有效。最好避免出现这种情况。
一个可用于映射的键是反斜杠。因为你很可能想定义多个映射,那就加上另一个字
符。你可以映射 "\p" 为在单词两端加圆括号,而映射 "\c" 为加花括号,例如:
:map \p i(<Esc>ea)<Esc>
:map \c i{<Esc>ea}<Esc>
你需要在敲入 \ 后,立即敲入 p,以便 Vim 知道它们组成一个命令。
":map" 命令 (无参数) 列出当前已定义的映射,至少会包括普通模式下的那些。
</pre>
配置VIM实现JAVA的编译与快速定位错误代码位置,
六、如何实现快速定位错误位置。
参照最后。
七、自动生成部分辅助代码。
对于JAVA开发者来说,自动生成set/get方法是比较生要的,因此,可以使用插件实现。我会在最后介绍这个插件
八、可不可以与ANT结合使用。
当然可以,但我还不会。正在学习中,已经找到了相关的资料,下面就是节取的有用的部分。
<pre>
Configure vi for Java application development
Ryan Brase, 11 July 2003
Newsletters
The vi editor isn't often employed as part of a Java application development environment, but using Vim and Ant, you can configure it to be Java friendly. Here are the steps you should follow to tune vi for use with your next Java project.
The vi editor isn't often employed as part of a Java application development environment, but using Vim and Ant, you can configure it to be Java friendly. Here are the steps you should follow to tune vi for use with your next Java project.
Most software developers encounter the vi editor at some point in their career—if not at college, on production UNIX machines when installing work they coded on their Windows desktop machines in full-blown IDEs. It's rare to find a developer except in the most Microsoft-beholden shops who doesn't have to fire up vi at least once a month. Some developers love vi, while others loathe it. But there's a lot that can be done to make vi a better environment for a Java developer.
MPU
e.g: "IT Manager", "Programmer"
Java and vi don't go together in many people's estimation. Whereas vi is synonymous with diminutive utilitarianism, Java is likened to a huge, lumbering beast. Java developers who select vi as their primary work environment may be few and far between, but even the occasional vi user can benefit from a little time spent configuring it to be more Java friendly. You might be shocked to see how many of the features in your IDE can be provided by vi when all is said and done.
Getting started
First, make sure your vi command is connected, or is symbolically linked or aliased, to the vim binary. Vim stands for Vi IMproved and has almost complete dominance of the vi and vi clone space. It's fast, well maintained, feature-rich, and available on most every platform.
Once you've got vim installed, create a file in your home directory named .vimrc. Listing A shows a good starter .vimrc file. The lines contained in the file tell vi to color Java source code to make it more readable. Their derivation isn't terribly important, and if you don't like the resulting appearance, you can remove them safely.
Tag jump support
Tags are Java identifiers that can be package names, class names, method names, or field names. The creation of a large index of all the tags in your code allows you to jump to the definition of any class, method, or field with a single keystroke. These index files are created using the ctags program, which is available with the vim distribution.
Ctags takes a list of Java source files or directories containing Java source files, extracts identifier information, and produces the sorting index required by vi for jumping to tags. The line of code here shows a sample ctags invocation that produces a tag file containing all the identifiers in the project's source and, so long as the JAVA_HOME variable is defined correctly, Sun's core library source code as well:
ctags -f ~/.tags -R ~/myprojects/src $JAVA_HOME/src
Once the tags index has been created you need only tell vi where it can be found. This is done by including the line set tags=~/.tags in your ~/.vimrc file. With the tags index file available and vi knowing where to find it, you can now jump to any identifier by pressing [CTRL] ]. Although useful for jumping to the location where you've defined methods, classes, and fields you've written yourself, it's even more useful if you included the Java core class library source in your tags index. Now, simply pressing [Ctrl] ] on any core class library class or method will jump to its definition complete with javadoc.
Tag name completion
Jumping to the locations where classes, methods, and fields are defined is nice for viewing their javadoc and checking their internals, but far more often, you just need to check the definition of a keyword. This is accomplished in most IDEs by typing the keyword. However, if you have your tags file setup as explained in the previous section, keyword completion in vi is just a configuration directive away.
Placing the line set complete=.,w,b,u,t,i in your ~/.vimrc file allows you to automatically complete any class, method, or field name by pressing [Ctrl]N while in insert mode. Successive presses of [Ctrl]N bring up the next matches. When you see the tag you want, just continue typing the rest of your source code. You can find additional tag name completion tips, including using the Tab key for completion, on the vim Web site.
Method folding
Good practice suggests that you keep classes small and uncomplicated, with program complexity showing up in the class hierarchy rather than 500 line methods. Unfortunately, some classes just spiral out of control and become virtually unnavigable.
IDEs frequently buffer developers from sheer source length by offering a method table of contents in a narrow left pane. In contrast, vi offers collapsible program blocks it calls "method folding." Folding allows you to hide all the code between the start of an indented block and its end. To enable folding, insert set foldmethod=indent in your ~/vimrc.
Once method folding is enabled, you can greatly condense a Java source file using the command :set foldlevel=0. With the fold level set to zero, you're telling vi to show only lines that aren't indented at all, which in most Java source files means the package, import, and class or interface definition lines. Setting foldlevel=1 tells vi that lines indented a single time should be shown in addition to unindented lines, which includes method signatures and probably not much else. To open a fold and view the hidden contents of a method, type zO on the folded line.
Method folding is easy to enable and disable by setting the foldlevel. I like it for debugging and dislike it when writing new code. You'll just have to see how it fits with the way you like to work.
Compiling and quick-fix editing
IDEs aren't just about editing; they're also compilation environments. Vi does a great job of calling off to external compilers and parsing the resulting messages. Many Java projects use the easily scriptable Ant as a build environment nowadays. Rather than load a lot of Ant-specific settings into my .vimrc file, I created a separate script called vimAnt, which is shown in Listing B.
This script invokes the Ant executable with a few parameters and then filters the output to include only compiler output. You're almost ready to invoke Ant from within vi. You just have to add the lines in Listing C to your ~/.vimrc file. Those lines tell vi to invoke the vimAnt script you created and give it clues on how to parse Ant's jikes output.
With the vimAnt script in your system path, you can now initiate a compilation using the :make command. The current directory and all its parent directories will be searched for a build.xml file whose classes target will be invoked. Error output will be automatically parsed by vi.
Once you've done a compilation with errors in vi, you can use quick fix mode to rapidly go to the errors for easy repair. The :cn command take you to the next error regardless of what file it's in. The :cc command shows you the compiler output message for the current error, and :cl will bring up a list of all the project's errors for easy navigation to any of them. Fix up your errors, and you're just a :make away from a clean compile.
大多数的软件开发人员都会在其生涯的某个时候碰到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之遥了。
</pre>
我从http://learn.tsinghua.edu.cn:8080/2005212716/html/vimplugins.html看到了下面的东西。真服了清华的人了。感谢一下。
常用插件1:
Tag List
官方描述: The “Tag List” plugin is a source code browser plugin for Vim and provides an overview of the structure of source code files and allows you to efficiently browse through source code files for different programming languages.
滇狐评价: 这是一个非常非常非常非常重要的插件, 有了它, 我们才能够在 VIM 中查看一个文件中包含的函数列表, 或是一个类包含的方法列表, 为编程人员提供了极大方便。推荐大家一定要安装!
安装注意事项: 有的系统内置的 ctags 功能太弱, 推荐大家安装 EXUBERANT CTAGS, 这个东西功能比较强大, 居然连 HTML 里面内嵌的 Java Script 都能够支持, 实在是匪疑所思!
滇狐个人习惯: 滇狐习惯把方法列表放在屏幕的右侧, 于是在 .vimrc 中设置了
let Tlist_Use_Right_Window=1
另外, 滇狐习惯让当前不被编辑的文件的方法列表自动折叠起来, 这样可以节约一些屏幕空间,于是在 .vimrc 中设置了
let Tlist_File_Fold_Auto_Close=1
插件2:
Win Manager
官方描述: winmanager is a plugin which implements a classical windows type IDE in Vim-6.0. Basically, you have the directory tree and the buffer list as 2 windows which stay on the left and the editing is done in a seperate area on the left. People have already made excellent File and Buffer explorers seperately and I thought that it might be a cool idea to combine them both. winmanager.vim combines the standard File Explorer which ships with Vim 6.0 and a Buffer Explorer written by Jeff Lanzarotta into one package.
滇狐评价: 非常好用的东西, 在屏幕上打开一个文件浏览器, 这样就可以方便地选择要编辑的文件了。
默认情况下, winmanager 依赖于 bufexplorer,到这里下载。如果你不喜欢 bufexplorer 插件的话 可以在你的 .vimrc 中添加这条命令禁用它:
let g:winManagerWindowLayout = "FileExplorer"
这样就不需要下载该插件了。
滇狐为 winfileexplorer.vim 加了一个补丁, 提供了使用系统默认打开方式打开选中文件的功能,只要把光标放在想要打开的文件上, 然后按“S”就可以了 (注意是大写)。这样以后就可以直接在 gvim 里打开 xmms, 不用再切换出来找 konqueror 了。
插件3:
gdbvim
官方描述: You have one window with (g)vim open, other window with gdb running. When you reach source line in your code, it appears in the vim window. In the opposite direction, you can send commands from vim to gdb (e.g., set breakpoints on given line).
滇狐评价: 该插件意义很重大, 为我们在 VIM 中调试程序提供了可能。 虽然功能还非常少,但已经足以解决平常的大部分需求了。 原始版本问题比较多, 例如只能添加断点,不能删除断点, 滇狐为该插件添加了删除已加断点的功能。 另外快捷键的设置也比较不快捷,滇狐又顺便把相应的快捷键修改了一下, 现在用起来已经比较顺畅了, 放出来给大家参观一下,以便继续改进。 目前只在 Linux 下调试通过, 其它平台未经测试, 感兴趣的朋友可以在其它平台下测试,并汇报测试结果。
需要继续增加的功能: 下一步滇狐准备再给这个插件加上保存所有断点的功能,这样下次调试的时候就不用重新设置断点了。 另外, 目前查看变量的值时,只能把结果打印到 console 窗口中, 滇狐希望在下一个版本中能够把查看结果抓取到 VIM 中显示。 VIM 网站上给出了把所有结果抓取到 VIM 中的实现, 但那不是滇狐希望的结果。滇狐最希望得到的结果是使用 tooltip 显示变量结果, 另外能够再提供一个 watch 窗口, 时刻监视变量的值, 以后慢慢实现吧。
安装注意事项: gdbvim 脚本是使用 Perl 语言编写的, 因此需要安装 Perl。为了方便你的使用, 建议在 $PATH 路径下添加一个指向 plugin/gdbvim 脚本的符号链接, 或者直接将该文件复制到 $PATH 路径下,滇狐推荐前者。 还有, 最好在你的 .vimrc 中 set noshowcmd,否则大量的“请按 ENTER 继续”会把你活活烦死。 另外, 滇狐 patch 过的脚本依赖 multvars.vim,如果你使用滇狐版的话, 需要再安装这个插件。
使用方法: 编译你的程序时加上 -g 参数生成调试信息, 然后使用“gdbvim <你的程序名>”启动 gdbvim, gdbvim 会自动启动一个 gvim。 将 gvim 最大化, 然后就可以使用 Gdb 菜单或快捷键添加断点、 单步调试程序、 查看变量值了。
插件4
cscope_maps
官方描述: Cscope is a very handy tool, but it’s even better when you don’t ever have to leave the comfort of your favorite editor (i.e. Vim) to use it. Fortunately, Cscope support has been built into Vim.
滇狐评价: 滇狐目前 cscope 用得不如 ctags 多, 许多功能都不大熟。 不过既然大家都说好,那还是装着玩玩吧。
安装注意事项: 需要安装 cscope。
插件5
sketch
官方描述: Sketch.vim – Line drawing/painting using the mouse. Based on an idea by Morris.
滇狐评价: 很好玩, 虽然用到的时候不多, 但真一旦用到了, 还是会觉得这个东西很有用的。
安装注意事项: 建议在 .vimrc 中把 call ToggleSketch() 映射为命令,方便一些:
command -nargs=0 ToggleSketch call ToggleSketch()
插件6:
Calendar
官方描述: This script create calender window. This don’t use the external program (cal).
滇狐评价: 安装完毕后使用 :Calendar 命令打开一个垂直的日历窗口, 使用 :CalendarH 命令打开水平的日历窗口。 应该还是比较有用的。
安装注意事项: 滇狐个人喜欢把日记的扩展名改成 .txt, 默认的是 .cal。在 calendar.vim 里面查找替换一下就可以了。 另外, 可以在 .vimrc 里面修改日记所在的路径,默认是 ~/diary。
let g:calendar_diary=<PATH>
感谢网络提供的这些资源,感谢在网络上分享的人们。欢迎指正:[email protected],[email protected],我是bear.
相关阅读 更多 +