请教vim使用vim project 插件使用的问题

博客分类:
一文中简单介绍了一下IdeaVim插件。在这里详细总结一下这个插件在日常编程中的一些常用小技巧。供有兴趣使用这个插件,但对Vim还不十分熟悉的朋友参考。当然基本的hjkl移动光标和几种常见模式等等基本概念就略过不提了。
为了确保只包含常用操作,这里提到的技巧都没有从现成文档里抄,而是凭记忆列出(不常用自然就不记得了)。估计会有所遗漏,慢慢再补充。
1. 切换Vim模拟器状态
这个插件允许设置一个快捷键一键开启或关闭,在切换模式时会同时自动切换keymap,十分方便。默认键位是Ctrl+Alt+V,但这个键位覆盖了很常用的“抽取局部变量”功能,建议重设,在setting-&keymap中查找VIM Emulator即可。
由于开启和关闭状态分别使用两套keymap,因此两套都需要设定。可以把两套keymap下的都设为一样的键,也就是用同一个键切换。但个人建议设为不同的键,这样能清楚知道当前处于那种模式中。并且,如果在开启Vim的插入模式下关闭Vim模拟器,下次进入时仍然是插入模式,比较混乱(因为你关闭模拟器就是为了使用默认keymap输入大段代码,重新开启Vim模拟器就是为了使用普通模式下的命令)。因此建议把Vim keymap中的Exit Insert Mode设为与另一个keymap的Vim Emulator相同的键(也就是进入Vim模拟器的快捷键)。例如,我使用的设定是:
Default keymap -& Vim Emulator : Ctrl+;&&&& (用Ctrl+分号开启Vim模拟器)
Vim keymap -& Vim Emulator : Ctrl+,&&& (用Ctrl+逗号关闭Vim模拟器)
Vim keymap -& Vim Emulator : Ctrl+;&&& (用Ctrl+分号退出插入模式,进入普通模式)
这样,在任何时候只要连按两下ctrl+分号,就能保证必定在Vim模拟器的普通模式中。
2. ScrollOff 参数
启动Intellij后在Vim模拟器下输入命令 :set so=5 可以令屏幕滚动时在光标上下方保留5行预览代码(也就是光标会在第5行触发向上滚动,或者在倒数第5行触发向下滚动)。在代码窗口比较狭小时(例如单步跟踪调试时)非常方便。可惜仅在Vim模拟器开启时有效。
3. 行号定位
普通模式下输入 行号G 或 :行号&回车& 都能快速定位到某一行。区别在于前者在输入行号时屏幕上没有任何提示,后者则在Vim命令输入框中可以看到输入过程。(题外话:Sublime Text 2也是用 :行号 来快速定位到某行,应该是沿用了Vim的习惯)
4. 进入修改
进入插入模式的方式有很多,直接选用合适的方式进入插入模式比进入后再用箭头键移动光标要好。常用的有:
o - 在当前行下方插入新行并自动缩进
O - 在当前行上方插入新行并自动缩进 (普通模式下的大写字母命令用 shift+字母键 输入,下同)
i - 在当前字符左方开始插入字符
a - 在当前字符右方开始插入字符
I - 光标移动到行首并进入插入模式
A - 光标移动到行尾并进入插入模式
s - 删除光标所在字符并进入插入模式
S - 删除光标所在行并进入插入模式
c&范围& - 删除光标所在位置周围某个范围的文本并进入插入模式。关于范围请看第5点,常用的组合有:caw - 删除一个单词包括它后面的空格并开始插入; ciw - 删除一个单词并开始插入; ci" - 删除一个字符串内部文本并开始插入; c$ - 从光标位置删除到行尾并开始插入; ct字符 - 从光标位置删除本行某个字符之前(保留该字符)并开始插入。等等。
C - 删除光标位置到行尾的内容并进入插入模式 (相当于c$)
r - 修改光标所在字符,然后返回普通模式
R - 进入覆盖模式
5. 范围操作
某些普通模式的动作命令后面可以追加一些表示范围的指令,表示该动作将作用在整个范围上。这类命令常用的有:
d&范围& - 删除一定范围内的文本
c&范围& - 删除一定范围内的文本并进入插入模式
y&范围& - 将范围内的文本放入0号和"号注册栏
v&范围& - 选择范围内的文本
=&范围& - 自动缩进范围内的文本
gU&范围& - 将范围内的字符转换为大写
gu&范围& - 将范围内的字符转换为小写
&&范围& - 将范围中的内容缩进一格
&&范围& - 将范围中的内容取消缩进一格
常用的范围指令有:
空格 - 光标所在位置字符。(例如 gU空格 - 将光标位置字符转为大写)
重复某些动作命令 - 光标所在行。 (例如dd删除一行,yy复制一行,cc删除一行文本并开始插入,&& 当前行缩进一格,==自动缩进当前行)
$ - 从光标位置到行尾
^ - 从光标位置到行首,不包含缩进空白
0 - 从光标位置到行首,包含缩进空白
gg - 从光标位置到文件开头
G - 从光标位置到文件结尾
% - 从光标位置到另一边匹配的括号
f&字符& - 从光标位置到光标右边某个字符首次出现的位置,包括该字符
F&字符& - 从光标位置到光标左边某个字符首次出现的位置,包括该字符
t&字符& - 从光标位置到光标右边某个字符首次出现的位置,包括该字符
F&字符& - 从光标位置到光标左边某个字符首次出现的位置,包括该字符
/正则表达式 - 从光标位置到下一个匹配正则表达式的位置(跨行)
?正则表达式 - 从光标位置到上一个匹配正则表达式的位置(跨行)
aw - 一个单词加一个空格 (a可理解为“一个”,下同)
iw - 一个单词 (i可理解为in,下同)
a" - 一个字符串包括双引号
i" - 一个字符串内部文本
a& - 一组& &包含的文本,包括& &号本身
同理类推: i&, a[, i[, a(, i(
注意:真正vim中的it范围(一对xml标签内部)在ideaVim中不生效。
用/或?命令查找时,正则表达式默认大小写敏感,如果需要不敏感,可以在正则表达式开始处加上\c标志。例如 /\cabc 可以匹配到 ABC。下面提到的:s命令同样适用。
6. 选择文本
在Vim中,选择文本需要进入“可视模式”(Visual Mode),这个名称比较奇怪,它的来由据说是因为在Vim的前身Vi中,选择区域是不可见的。在Vim中选择区域会高亮显示,因此称为“可视模式”。
v - 进入字符选择模式, V - 进入行选择模式, Ctrl+v - 进入块选择模式。
进入相应模式后移动光标即可选中文本。过程中可按o键令光标在选区两端切换。
在块选择模式中选中多行,然后按I或A后输入文本,再退出插入模式,所输入的文本将自动加入到每一行的开头或结尾。
7. 复制粘贴
在Vim模式下,复制粘贴并不直接使用系统的剪贴板,而是使用Vim提供的多个“寄存器”,每个寄存器都以一个字符来表示。关于寄存器的详细说明可以看这里 http://blah.blogsome.com//vim_tut_register/ (随便google的一个网页),这里简单列一些常用的操作技巧 (注意,vim使用双引号"来作为选择寄存器的命令,因此下文中的双引号均指在普通模式下按双引号键):
a)用y命令将文本存入寄存器后,如果想在别处替换原有内容,可以先用v命令选中原有内容,然后用p命令粘贴。但第一次粘贴后,默认的寄存器"将被替换为刚刚删除的内容。如果要再次粘贴之前复制的内容,需要使用 "0p 命令组合来复制。也可以进入插入模式后用 Ctrl+r 0 来复制,例如 ciw&Ctrl+r&0 命令组合将用粘贴内容替换光标处的一个单词,并停留在插入模式。
b)在Windows下,寄存器 + 和 * 都代表系统剪贴板,可以互换使用,选一个顺手的即可。例如 "+yy 命令组合可将当前行复制到系统剪贴板。 ci"&Ctrl+r&* 命令组合则将系统剪贴板的内容替换字符串的内部文本。
c) 寄存器1至9记录之前九次的删除大段文本,每次超过一行的删除操作都会导致这9个寄存器的内容发生位移,最近删除的文本会存入寄存器1。但只有删除超过1行时才会影响寄存器1至9,行内的删除内容则会被存入寄存器-(减号)。如果用q命令录制宏时不涉及跨行删除,可以在宏中直接使用这9个寄存器来暂存文本。(在Vim中,复制内容与录制宏共享同一套寄存器,因此我习惯把字母寄存器留给宏使用)
d) 普通模式下小写p把寄存器内容复制到当前位置之后,大写P把寄存器内容复制到当前位置之前。
e) 使用 :regs 命令可以列出当前所有寄存器的内容
8.& 一些插入模式下的常用快捷键
Ctrl+h - 删除光标左边字符
Ctrl+w - 删除光标左边的单词
Ctrl+y - 复制上方的一个字符
Ctrl+e - 复制下方的一个字符
Ctrl+r 0 - 插入前一次用y命令寄存的内容
Ctrl+r * - 插入系统剪贴板的内容
Ctrl+r &寄存器名称& - 插入指定寄存器的内容
Ctrl+a - 插入前一次插入模式所键入的内容
Ctrl+o - 执行一个普通模式下的命令然后返回插入模式。 例如 Ctrl+o A 相当于按 End键, Ctrl+o I相当于按Home键
9. 退出插入模式
退出插入模式可以用 ESC 键,但键位太远。其实也可以用 Ctrl+[ 键退出插入模式 。当然也可以用第1点自定义的Ctrl+;快捷键,但这不是标准vim按键,会养成不良习惯,不建议使用。
10. 重复操作
普通模式下按. (小数点)可重复上一次的修改操作
& - 重复上一次的:s替换命令
@@ - 重复上一次执行的宏
11. 跳转
Ctrl+] 跳转到当前标识符的定义位置 (相当于在当前光标位置的单词上按住ctrl用鼠标点击)
Ctrl+o 回退一步 (go back)
Ctrl+i 前进一步 (go forward)
`. 跳转到之前修改位置
`` 在前一次跳转位置与当前位置间切换
行号G 或 :行号&回车&& 跳转到某一行
gg 跳转到文件开头
G& 跳转到文件末尾
H& 跳转到屏幕顶端(如果设置了set so=n,则跳转到第n行)
L& 跳转到屏幕底端(如果设置了set so=n,则跳转到倒数第n行)
M& 跳转到屏幕中间
f 或 F 跳转到本行某个字符,小写f向右查找,大写F向左查找。用;或,在匹配间切换
t 或 T 跳转到本行某个字符之前,小写t向右查找,大写T向左查找。用;或,在匹配间切换
/正则表达式& 跳转到下一个匹配。用n或N在匹配间切换。
?正则表达式& 跳转到上一个匹配。用n或N在匹配间切换。
(结合前面第5点,你也许注意到了,在指定范围时,使用跳转命令将指定一个从光标位置到跳转目标的区域)
12 书签
在普通模式下按 m&小写字母& 即可定义书签,按 `&字母& 则可跳转到某个书签的精确位置,按 '&字母&可跳转到某个书签所在行的行首(用来录制宏时比较有用)。最常用的自然是mm, mn, mj, mk, ml这几个顺手的键位。
真正的vim中的全局书签 m&大写字母& 在目前IdeaVim版本中不生效。需要定义全局书签可以使用Idea原本的 F11 + 数字 方式
13 文本替换
使用 :s/正则表达式/替换文本/ 可在本行内替换首次出现的匹配
使用 :s/正则表达式/替换文本/g 在本行内替换所有出现的匹配
使用 :%s/正则表达式/替换文本/g 在当前文件内替换所有出现的匹配
在可视模式下选中文本后,使用:'&,'&s/正则表达式/替换文本/g 命令可在选中区域中替换文本。其中'&,'&部分在可视模式下,按:冒号后自动加入,直接输入s命令即可。但有效区域只能以行为单位。真正Vim中的 \%V 标志在IdeaVim中不生效。
11 代码折叠
zo - 打开折叠
zc - 关闭折叠
14 宏定义
在IdeaVim中定义宏比Idea自带的宏功能要轻量许多。按在普通模式下 q&寄存器名称& 即可开始把后续按键序列录制到指定寄存器中(寄存器参考前面第7条)。录制完毕进入普通模式再按q键即可停止录制。之后用 @&寄存器名称& 即可重放。需要注意的是宏和复制粘贴共用一套寄存器,因此在录制宏时就注意不要把当前宏正在使用的寄存器用来复制了。寄存器内容是自动保存的,重启Idea仍然生效。但IdeaVim没有导出宏独立保存的功能。因此最好把用来保存宏的寄存器和用来复制粘贴的寄存器分开,不要同一个寄存器有时用来记录宏,有时用来复制粘贴。我的习惯是键盘左手区用来保存一些长期使用的宏(比如说我有一个宏专门用来把pom.xml中的版本号抽取到property区域,原来的位置则改用${property}引用)。右手区的hjklnm键用来保存一些临时宏。yuiop五个寄存器保留用来复制粘贴。如果录制的宏不涉及删除大段代码,寄存器1至9也可以用来进行复制粘贴。
执行一次宏后,可以用@@命令重复上一次执行的宏。
在Idea中录制宏时,如果触发了代码自动完成,在自动完成列表启动的状态输入的字符不会被记录。因此最好在Setting -& Code Completion -& Autopopup code completion中把延迟设为500ms以上或干脆关掉。在录制宏的过程中避免触发代码自动完成功能。
录制一些长期有效的宏时,开始录制后,最好先用0,^,T, F, $等命令把光标对齐到行首行末或某个特定起始位置(比如说用 F" 跳转到字符串的左边引号),再用一个f或/指令跳转到操作位置,这样的宏就不用必须把光标放在某个特定字符才能使用了。
15. 一些常用组合技
全选: ggvG
调换两个字符位置: xp
复制一行: yyp
调换两行位置: ddp
插入模式下到行尾继续输入(相当于End键): Ctrl+o A 或 Ctrl+[ A
插入模式下到行首继续输入(相当于Home键): Ctrl+o I 或 Ctrl+[ I
到类定义位置(适用于正确缩进的public,protected类) : ?^p回车
16. 一些在目前版本已知没有实现的一些常用Vim功能
(如果对Vim不熟悉可以跳过这节)
a)let命令 (没有let命令就无法导出/导入寄存器内容,也就是无法导入宏)
b):g命令 (在文本处理中很有用的一个命令,在编程中倒是不那么常用)
c)!命令 (执行shell命令)
d)大部分正则表达式标记 (例如 \%V, \v 等等)
e) 某些多键命令双击最后一个字符表示作用于当前行。例如在Vim中gUU可以把当前行转换为大写,在IdeaVim中无效,实现同样功能可以先用V命令选中当前行,再用gU转换为大写。
f)关于窗口操作的大部分命令 (Ctrl+w系列命令, :split等)
g)所有Vim脚本插件 (不过大部分可以用Idea自身的功能和插件来补偿)
嗯,差点忘了,在普通模式下按u撤销上一个修改(相当于其他IDE的Ctrl+z),按Ctrl+r重做被撤销的修改。
浏览 70777
kidneyball 写道parthenon 写道本来对IdeaVim的使用就比较晕,看完你的文章之后更晕了。是IdeaVim本身使用晕,还是Vim的用法晕?请略过3楼。IdeaVim。针对“1. 切换Vim模拟器状态 ”这一章节说说我的理解,您看对不对:如果我当前的keymaps为Eclipse,然后我启用了Vim模拟器,那么我当前的keymaps变为Vim,这时如果我关闭Vim模拟器,我的keymaps又自动变为Eclipse。对么?是的,关闭Vim模拟器时会自动返回到进入Vim模式前的keymaps
parthenon 写道本来对IdeaVim的使用就比较晕,看完你的文章之后更晕了。是IdeaVim本身使用晕,还是Vim的用法晕?请略过3楼。IdeaVim。针对“1. 切换Vim模拟器状态 ”这一章节说说我的理解,您看对不对:如果我当前的keymaps为Eclipse,然后我启用了Vim模拟器,那么我当前的keymaps变为Vim,这时如果我关闭Vim模拟器,我的keymaps又自动变为Eclipse。对么?
parthenon 写道本来对IdeaVim的使用就比较晕,看完你的文章之后更晕了。是IdeaVim本身使用晕,还是Vim的用法晕?IdeaVim。针对“1. 切换Vim模拟器状态 ”这一章节说说我的理解,您看对不对:如果我当前的
本来对IdeaVim的使用就比较晕,看完你的文章之后更晕了。是IdeaVim本身使用晕,还是Vim的用法晕?
kidneyball
浏览: 248925 次
来自: 南太平洋
Ace Jump和IdeaVim,您都是如何安装的啊?在int ...
这里没有看懂。我对着设置了一下。 然后查了一下 setting ...
分享快乐,谢啦
“很难找到这样的两种语言(Pascal和Lisp),它们能如 ...
kidneyball 写道 写道下载页面打不 ...
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'Ctags工具是用来遍历源代码文件生成tags文件,这些tags文件能被编辑器或者其他工具用来快速查找定位源代码中的符号,入变量名,函数名等。比如,tags文件就是Taglist和OmniCppComplete工作的基础。
安装过程:
(1)打开链接:,下载完成后进去下载文件夹。
(2)在下载文件夹下通过命令unzip ctags.vim命令解压下载的stags压缩文件,然后通过命令sudo apt install exuberant-ctags命令安装ctags插件。
使用过程:
(1)到自己的源码目录中,如果你的源码是多层的目录, 就去最上层的目录, 在该目录下运行命令: ctags –R,会产生一个名叫tags文件,将该文件拷贝到$HOME/.vim/tags目录下。然后用命令$vim ~/.vim/tags就能看到生成的tags文件中的内容。
(2)在vim中运行命令“:set tags=HOME/.vim/tags/tags,也可以将这个命令放在HOME/.vimrc文件中。当要查询某个函数的定义时,将光标放在该函数上,按&Ctrl+]&键,就会跳转到该函数的定义处,按&Ctrl+t&键是返回。(注意:这里的HOME是指的存放.vim的路径就是你用户名的路径,不仅仅是home这个路径,一般的是要增加你的用户名,类似home/yang/)
这样在使用的时候也会出现一个问题,当你修改程序后, 如果增加了函数定义,或者删除了变量定义, tags文件不能自动rebuild, 你必须手动再运行一下命令:ctags –R。
列出了当前文件中所有宏、全局变量,函数名等,能高效浏览源码,功能像vc里的workspace。
安装过程:
(1)从网址http://www.vim.org/scripts/script.php?script_id=273下载taglist压缩包。
(2)把解压的两个文件taglist.vim 和 taglist.txt 分别放到HOME/.vim/plugin和HOME/.vim/doc 目录中。
(3)通过命令$vim ~/.vimrc在.vimrc文件中加入下面两句话:
let Tlist_Show_One_File=1
let Tlist_Exit_OnlyWindow=1
使用插件Taglist:
进入vim后,再vim命令模式下输入Tlist命令就能打开taglist窗口。
我们可以通过Ctrl-w快捷键或鼠标点击在Taglist窗口和编辑区之间切换焦点,在Taglist窗口用鼠标或键盘选择某个符号,然后点击或回车,就可以跳转到该符号定义的位置。
更多功能可通过在Vim命令行下运行help taglist.txt查询。
关于插件的管理,主要就是通过.vimrc文件来管理vim插件的。通过指令行来使用插件不方便,使用.vimrc文件能够实现自动化或者半自动化的使用插件很方便。
下面是我的vimrc文件,由于现在对于插件的种类、具体的功能还不是很熟悉,而且写的代码太少,也不知道到底有哪些很好用的插件,所以需要管理的插件和用到功能很少。以后学习的过程中也要注意工具的使用,更加熟练的使用工具是提高效率的办法之一。
阅读(...) 评论()下次自动登录
现在的位置:
& 综合 & 正文
Vim 插件使用大全
2.1. gzip(压缩文件支持)作者:Bram Moolenar网站脚本编号:无(包含在 Vim 的标准发布之中)安装说明:无功能说明:
该脚本使得 Vim 可以直接打开使用 gzip [1]、bzip2 [2] 和 compress [3] 压缩的文件(要求存在相应的命令行工具)。后缀为“.gz”、“.bz2”和“.Z”的文件会在打开时被动态解压缩,并在写操作时被自动重新压缩。
打开压缩文件时,屏幕上出现一个(不正确的)“[noeol]”的提示是正常的,不必进行理睬。
2.2. netrw(网络文件支持)作者:Charles E. Campbell, Jr.(绰号 Dr. Chip)网站脚本编号:1075(Vim 的标准发布之中可能包含一个较老的版本)安装说明:
Vim 6.4 的标准发布带的版本是 42,较老、功能不齐全,但无须安装。建议:
1. 在 Vim 网站上下载版本 62(更新的版本只能用于 Vim 7);
2. 使用“tar xvfj netrw.tar.bz2 -C ~/.vim”解开;
3. 在Vim中运行“:helptags ~/.vim/doc”安装文档。功能说明:
支持直接读写网络上的文件,支持的协议有 ftp、http、rsync、scp 等。比如,使用 FTP 协议以用户名 adah 打开服务器 server 上 ~/temp 目录下的 test.cpp 文件,可以直接在命令行上使用:
vim ftp://adah@server/temp/test.cpp
Vim会自动提示用户输入口令,然后打开文件。
更多的帮助内容请参考“:help netrw”。
2.3. engspchk(英文拼写检查)作者:Charles E. Campbell, Jr.(绰号Dr. Chip)网站脚本编号:195安装说明:
在 Vim 网站上下载最新版本(engspchk.tar.gz);
使用“tar xvfz engspchk.tar.gz -C ~/.vim”解开;
在Vim中运行“:helptags ~/.vim/doc”安装文档。
提示替换拼写功能需要 agrep [4],可能需要另外下载安装。功能说明:
一个Vim专用的拼写检查器,其最主要的特点是:
可以通过变量 spchkdialect 选择英语变体(英国、美国、加拿大),对于找不到的词、不常见的词、不在当前英语变体中的词以不同的方式加亮显示;
支持用户词典(保存在 .vim/CVIMSYN 目录中)和项目词典(保存在被检查文件所在的目录中);
对于源代码文件,只对注释进行拼写检查,而不会对你的变量名称胡乱提抗议;
通过词典文件可支持除英语以外的其它语言。
5 中的窗口里 engspchk
正在运行中。其中可以看到,红色部分是插件所不能识别的单词,黄色部分是当前英文变体(缺省是美国英语)中不正确的拼法,而青色部分是很少见的单词。图中
运行的是包含图形界面支持的 Vim,因而还可以看到一个名为 DrChip
的菜单项(参见图6),在其中可通过菜单选择拼写检查相关的各项功能;同时还能看到快捷键:“\ec”开始拼写检查,“\ee”结束拼写检查,“\ea”
选择替换拼写,等等。在文本模式的 Vim 中,我们一般就只使用这些快捷键了。图 5图 6
更多的帮助内容请参考“:help engspchk”。
2.4. calendar(日历显示)作者:Yasuhiro Matsumoto网站脚本编号:52安装说明:
在 Vim 网站上下载文件 calendar.vim,存到 ~/.vim/plugin 目录中。功能说明:
6 的下半部分就是 calendar
的运行示例,是直接在正常模式下键入“\caL”显示出来的。光标在该窗口中时,可使用左箭头或上箭头显示前一个月,右箭头或下箭头显示后一个月,“t”
回到“今天”,“q”关闭日历窗口。在有鼠标支持时,也可以使用鼠标在黄色字样的“Prev”、“Today”、“Next”上双击达到类似的效果。
使用“\caL”外,“\cal”也可以打开一个日历窗口,但显示位置是在 Vim
的左侧而不是下方。另外,命令“:Calendar”效果和“\cal”相同,但其后可以跟参数:一个参数的话表示月份,两个参数的话则分别表示年份和月
份。“:CalendarH”与“:Calendar”类似,但日历窗口的打开位置和“\caL”(而不是“\cal”)一样,是在下方而不是左侧。
2.5. project(文件的“项目”管理)作者:Aric Blumer网站脚本编号:69安装说明:
1. 在 Vim 网站上下载最新版本(project-1.3.tar.gz);
2. 使用“tar xvfz project-1.3.tar.gz -C ~/.vim”解开;
3. 在 Vim 中运行“:helptags ~/.vim/doc”安装文档。功能说明:
插件可以把文件组织成一棵树的形式,以便于查找和管理。使用命令“:Project”即可打开一个用户的“项目文件”(~/.vimprojects)。
项目文件采用普通的文本文件的形式,非常易于浏览和修改。图 7 是一个示例。其中左边窗口部分的就是一棵项目树,完整内容如下:图 7
CvsMenu="~/.vim" CD=. {
plugin/cvsmenu.vim
doc/cvsmenu.txt
Nvwa="~/nvwa_local" CD=. {
webupdate.sh
nvwa=nvwa {
bool_array.cpp
debug_new.cpp
mem_pool_base.cpp
static_mem_pool.cpp
bool_array.h
class_level_lock.h
cont_ptr_utils.h
debug_new.h
fast_mutex.h
fixed_mem_pool.h
mem_pool_base.h
object_level_lock.h
set_assign.h
static_assert.h
static_mem_pool.h
在这个项目文件中存在两个项目:CvsMenu 和
Nvwa。引号中的内容表示路径,“CD=.”则表示打开该项目中的文件时,当前目录会更改到项目所在的目录。项目下面可以再分子项目,如 Nvwa
项目下有 doc 和 nvwa 两个子项目,没有“CD=.”表示打开子项目里的文件时不再更改当前目录。
图中并没有显示出完整的内容,
因为其中的内容可以折叠(缺省打开项目文件时是完全折叠起来的,即在上面的例子中,只能看到两个项目的名字“CvsMenu”和“Nvwa”)。在非文件
名行上使用鼠标双击或回车键可以进行展开或折叠,在文件名行上使用鼠标双击或回车键则可以打开对应的文件。
更多的帮助内容请参考“:help project”。
2.6. taglist(源代码结构浏览)作者:Yegappan Lakshmanan网站脚本编号:273安装说明:
1. 确保机器上有一个可用的 Exuberant Ctags 的版本(可以执行命令“ctags”)
2. 在 Vim 网站上下载 taglist(假设为 taglist.zip);
3. 使用“unzip taglist.zip -d ~/.vim”解开;
4. 在 Vim 中运行“:helptags ~/.vim/doc”安装文档。
虽然 taglist 使用 ctags,但并不要求 tags 文件的存在。功能说明:
使用命令“:Tlist”启用/关闭 taglist,效果请先看一下图 8。Taglist 的主要特性有:图 8
可以显示宏(macro)、函数(function)、变量(variable)、类型定义(typedef)、类(class)、结构(struct)等多种内容信息;
打开多个文件时,可以同时看到多个文件的结构信息;
在左边的 taglist 窗口显示的名称上双击鼠标或按回车键,右边主窗口中会跳转到相应的定义位置;
右边窗口中光标的位置改变,左边的窗口也会在 4 秒内(缺省值,参见“:help 'updatetime'”)黄色加亮显示相应的名称;
在启用/关闭 taglist 时,插件能够自动改变当前 Vim 窗口的大小(不管是文本模式的 Vim 还是图形界面的 Vim),除非使用“:let Tlist_Inc_Winwidth=0”关闭这一功能(当使用这一功能导致兼容性问题时)。
更多的帮助内容请参考“:help taglist”。
2.7. cvsmenu(CVS集成)作者:Thorsten Maerz/吴咏炜网站脚本编号:1245安装说明:
1. 在 Vim 网站上下载文件 cvsmenu.vim,存到 ~/.vim/plugin 目录中;
2. 启动 gvim,在菜单中选择“CVS-Settings-Install-Install updates”(文本模式的 Vim 可以使用快捷键“,cgii”),从网上(SourceForge)的 CVS 中安装最新版本和帮助文档(此步骤可选)。功能说明:
Vim 中集成 CVS [24]版本管理功能。该插件最初由 Thorsten Maerz 编写,在 2002 年以来没有再得到维护。我在
2005 年初开始使用这个插件后,非常喜欢它,修正了其中存在的错误,并一直维护该插件。如果大家发现有 bug,报告给我就可以了。
主要功能可在图 9 的菜单中看到:图 9
了解 CVS 环境的基本信息和 cvsmenu 中的变量设定(参见图 10);
调整设定,安装更新版本;
插入 CVS 的可扩展关键字,如“$Date$”、“$Id$”;
对目录进行基本操作(cvs update 等);
接受附加参数的基本操作(文件比较等);
管理功能,如登录;
删除类操作;
观察(跟踪)和编辑功能;
将本地文件和 CVS 中的文件进行比较(以 Vim 的分左右两列使用颜色加亮显示修改、增加、删除部分的比较方式;效果参见图 11);
显示文件每一行的更改人和更改时间(cvs annotate,参见图 12);
显示库的访问历史(cvs history);
显示文件修订日志(cvs log;参见图 13);
显示文件状态;
显示较短的文件状态;
根据本地信息显示文件状态(不访问库);
签出模块(cvs checkout);
查询更新;
更新,如有冲突会高亮显示(cvs update);
取消修改;
添加当前文件到 CVS 中(cvs add);
签入当前文件(cvs commit);
导入文件(cvs import);
添加并签入当前文件。
据实际使用的需要,除了修订错误之外,我加入了一些编码相关的支持。拿一个最实际的情况,如果使用“set
encoding=utf-8”,但源代码中仍使用了 GBK 编码的中文字符,那么,必须在 .vimrc 中加入一行“let
g:CVScvsoutputencoding='gbk'”才能保证“cvs annotate”操作的结果是正确的。
Thorsten 把该插件的易用性设计得相当好。举例来说,在作文件比较时,按 Tab 可跳转到下一个不同处,左侧的比较窗口中按一下“q”即可关闭该窗口。更多的帮助内容请参考“:help cvsmenu”。
2.8. doxygen(文档注释语法加亮)作者:Michael Geddes网站脚本编号:5安装说明:
1. 在 Vim 网站上下载最新版本(doxygen.zip);
2. 使用“unzip doxygen.zip”解开;
3. 执行“cp -p doxygen.vim ~/.vim/syntax”和“cp -p doxygen.txt ~/.vim/doc”复制文件到 Vim 目录下;
4. 在 Vim 中运行“:helptags ~/.vim/doc”安装文档。
5. 如果 ~/.vim/after/syntax 目录不存在,使用“mkdir -p ~/.vim/after/syntax”创建该目录;
6. 进入 ~/.vim/after/syntax 目录,使用下面三行创建语法文件之间的关联,使得在 C、C++ 和Java 文件中可以识别文档注释:
ln -s ../../syntax/doxygen.vim c.vim
ln -s ../../syntax/doxygen.vim cpp.vim
ln -s ../../syntax/doxygen.vim java.vim"
6. 可选地,看一下我的个人编程网页 [6] 下有没有对 doxygen.vim 的更新(里面包含有作者尚未并入到标准发布中去的我的更改——好奇的话,你可以在 doxygen.vim 文件中数一下,看一看 Wu Yongwei 的名字出现了几次:-))。功能说明:
如果你用过文档注释,相信我不需要多说,看一下图 14你就知道这个脚本的功能了。如果你没有用过文档注释,强烈建议你到 Doxygen [7] 的网站上看一下,了解一下这个非常有用的工具。作为示例,可在
看一下图中的代码使用 Doxygen 自动生成的 HTML 网页。图 14
2.9. matrix(!)作者:Don Yang网站脚本编号:1189安装说明:
在 Vim 网站上下载文件 matrix.vim,存到 ~/.vim/plugin 目录中即可。功能说明:
是的,说的就是电影 Matrix!Vim 的脚本并不是都干“正经事”的。想看一下电影里那些酷酷的字符在 Vim 的窗口里翻滚吗?发一个命令“:Matrix”即可(按任意键退出)。效果见图 15。图 15
【上篇】【下篇】}

我要回帖

更多关于 ideavim插件使用技巧 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信