spf13-Vim
事实上只需在Vim里:help plugin_name就可以查看帮助内容。
顺带说一下,
是自定义的一个快捷键。spf13-vim默认是逗号:,
在.vimrc里面可以更改。
###NERDCommenter注释工具
快捷键 功能
,cc 注释一行
,cu 取消注释一行
,ca 在两种注释符之间切换,如/**/和//
,cm 以block的最简方式注释一段代码
,c 切换当前行或选中内容是否注释,根据首行判断
,ci 以独立注释单行的方式 注释选中的每一行, 注释模式取决ca
,cs 有格式地注释, 以block的常规方式注释一段代码
,cy 复制内容,然后注释
,cA 在行尾巴追加注释,注释模式取决于ca
,cl 在行首添加注释符并进入insert mode
###NERDTree文件导航工具
快捷键 功能
Ctrl+e 打开/关闭NERDTree
? 显示快速帮助
o或Ctrl+R 打开文件、目录和书签
go 打开选中文件,不过光标仍在NERDTree中
t 在新tab中打开选中节点/书签
T 功能与t相同,不过焦点仍在当前tab
i 在新split打开选中文件
gi 与i相同,不过光标仍在NERDTree中
s 在新vsplit中打开选中文件
gs 与s相同,不过光标仍在NERDTree中
O 打开选中目录所有子目录
x 关闭当前节点父节点
X 关闭当前节点所有子节点
D 删除当前书签
P 跳到根节点
p 跳到当前节点父节点
K 跳到本层级第一个节点
J 跳到本层级最后一个节点
C 设置选中目录为根结点
u 根结点向上跳出一级
U 与u相同,只是老根结点保持打开
r 刷新当前目录所有子目录
R 刷新当前根目录所有子目录
m 显示NERDTree的菜单
cd 将当前工作目录改为选中节点
CD 将根结点改为当前工作目录
f 切换是否打开文件过滤
F 切换是否显示文件
B 切换书签列表是否显示
A 最大最小化NERDTree窗口
###ctrlp搜索file/buf/mru/tag工具
mru是Most Recently Used。
快捷键 功能
Ctrl+p 打开ctrlp并定位在file mode
? 查看帮助
F5 刷新当前目录
Ctrl+f,Ctrl+d 在mode间左右切换
Ctrl+r 切换正则表达式mode
Ctrl+j,Ctrl+k 在搜索结果间上下移动
Ctrl+t 在新tab打开选中结果
Ctrl+v 在新vsplit打开选中结果
Ctrl+x 在新split打开选中结果
Ctrl+z then Ctrl+o 先标记多个文件,然后一起打开
… 向上跳一层级
:25 跳转到文件第25行
:/any\:\ string 跳转到第一个any: string
:+setfiletype\ myfiletype|25 将文件类型设为myfiletype并跳转到第25行
:diffthis 对前4个用Ctrl+z标记的文件比较不同
###Surround处理所有"’{[()]}’"等
最适用于HTML/XML文件。
快捷键 功能
ds. 删除包围结构。当光标在(Hello *world)中处于*位置时按ds)会得到结果Hello world!
cs. 改变包围结构。当光标在(Hello *world)中处于*位置时按cs)]会得到结果[Hello world!]
ysiw. 包围当前词。当光标在Hello w*orld中处于*位置时按ysiw)会得到结果Hello (world)!
yss. 包围当前行。当光标在Hello w*orld中处于*位置时按yss)会得到结果(Hello world!)
###neocomplcache自动补全工具
快捷键 功能
Ctrl+u或Ctrl+n或Ctrl+p 在原始输入与补全方案间切换
###Fugitive集成git工具
快捷键 功能
,gs 查看git状态:Gstatus
,gd :Gdiff
,gc :Gcommit
,gb :Gblame
,gl :Glog
,gp :Git push
###[Tabularize]对齐工具
###[Tagbar]Tag工具
使用前要先安装exuberant-ctags。执行命令sudo apt-get install exuberant-ctags。
在你的项目根目录运行下面的命令:
ctags -R *
快捷键 功能
Ctrl+] 跳转到定义处
Ctrl+t 返回
,tt 打开关闭tagbar,显示当前文件函数列表,变量列表、属性等
? 显示帮助
p 跳转到tag所在处,光标留在tagbar
P 在预览窗口打开tag
Space 显示tag声明
o 切换文件夹打开关闭状态,在折叠与展开间切换
zj 跳转到下一文件夹
zk 跳转到上一文件夹
s 改变排序方式,一次s,则让标签按字典排序,再一次s,则按照文件内出现顺序排序
x 最大最小化窗口
q 关闭窗口
+ 展开标签内容
- 折叠标签内容
* 展开所有标签
= 折叠所有标签
x 是否展开tagbar标签栏,x展开,再一次x,则缩小标签栏
切换快捷键帮助页面,F1一次出现快捷键帮助页面,在一次F1,快捷键帮助页面隐藏。
###EasyMotion跳转工具
快捷键 功能
,,w 跳转到当前光标前的位置(w)
,,b 跳转到当前光标后的位置(b)
,,s 搜索跳转(s),双向跳转
,,j或,,k 行级跳转(jk)
,,h或,,l 行内跳转(hl)
顺带说一下,
是自定义的一个快捷键。spf13-vim默认是逗号:,
在.vimrc里面可以更改。
###cscope
详细见:程序员的利器 – cscope
在你的项目根目录运行下面的命令:
cscope -Rbq
下表中列出了cscope的常用选项:
-R: 在生成索引文件时,搜索子目录树中的代码
-b: 只生成索引文件,不进入cscope的界面
-q: 生成cscope.in.out和cscope.po.out文件,加快cscope的索引速度
-k: 在生成索引文件时,不搜索/usr/include目录
-i: 如果保存文件列表的文件名不是cscope.files时,需要加此选项告诉cscope到哪儿去找源文件列表。可以使用"-",表示由标准输入获得文件列表。
-Idir: 在-I选项指出的目录中查找头文件
-u: 扫描所有文件,重新生成交叉索引文件
-C: 在搜索时忽略大小写
-Ppath: 在以相对路径表示的文件前加上的path,这样,你不用切换到你数据库文件所在的目录也可以使用它了。
"cscope add"命令(或cs add)
使用方法:
:cs add {file|dir} [pre-path] [flags]
其中:
[pre-path] 就是以-p选项传递给cscope的文件路径,是以相对路径表示的文件前加上的path,这样你不要切换到你数据库文件所在的目录也可以使用它了。
[flags] 你想传递给cscope的额外旗标
实例:
:cscope add /project/vim/cscope.out
"cscope find"命令(或cs find)
使用方法:
:cs find {querytype} {name}
其中:
{querytype} 即相对应于实际的cscope行接口数字,同时也相对应于nvi命令:
0或s: 查找符号(C语言符号,即查找函数名、宏、枚举值等出现的地方)
1或g: 查找全局定义(函数、宏、枚举等定义的位置,类似ctags所提供的功能)
2或d: 查找被这个函数调用的函数, 它调了xi. it{x1(); x2(); x3();}
3或c: 查找调用这个函数的函数, xi调了它. x1(){it}, x2(){it}, x3(){it}
4或t: 查找指定的字符串
i: 查找包含头文件的文件, 即哪些用了该头文件
6或e: 查找egrep模式,相当于egrep功能,但查找速度快多了
7或f: 查找并打开文件,类似vim的find功能
实例:(#号后为注释)
:cscope find c my_printf # 查找所有调用这个函数的函数(们)
:cscope find 3 my_printf # 和上面结果一样
其他命令
:cs help # 显示一个简短的摘要。
:cs kill {num|partial_name} # 杀掉一个cscope链接(或者杀掉所有的cscope链接)
:cs reset # 重新初始化所有的cscope链接。
:cs show # 显示cscope的链接
####cscope帮助命令列表
反复按回车键(Enter),以移动到所需的输入字段, 输入要搜索的模式, 然后按回车键(Enter). 对于前四和最后两个输入字段,模式可以是regcomp(3)正则表达式。
如果搜索成功,您可以使用这些单字符命令:
0-9a-zA-Z 编辑包含显示行的文件。
space bar 显示下一组匹配的行。
+ 显示下一组匹配的行。
^V 显示下一组匹配的行。
- 显示先前的匹配行。
^E 编辑所有行。
> 把显示的行列表,写到一个文件中。
>> 把显示的行列表,增补到一个文件中。
< 从文件中读行。
^ 通过shell命令过滤所有行。
| 将所有行输送到shell命令。
在任何时候,您都可以使用这些单字符命令:(^表示Ctrl键)
TAB 在输入和输出区域之间交换位置。
RETURN 移动到下一个输入字段。
^N 移动到下一个输入字段。
^P 移动到上一个输入字段。
^Y / ^A 用最后的样式类型搜索
^B 退到以前的输入字段和搜索模式。
^F 退到下一个输入字段和搜索模式。
^C 在搜索(使用)时切换忽略/使用字母大小写。
^R 重建交叉引用,即重回到搜索界面
! 启动交互式shell (type ^D to return to cscope).
^L 屏幕重绘
? 显示此命令列表。
^D 退出 cscope.
注意: 如果您想要搜索匹配某个命令模式的第一个字符,首先键入一个“\”字符
注意: 一些ctrl键可能被终端配置占用。
####cscope file does not exist 错误解决
#####方法一:
在/.bashrc中添加如下代码:(对于/.cshrc文件, 注意把等号=, 改成空格)
alias mkcscopefile='find `pwd` -name "*.[ch]" -o -name "*.cpp" > cscope.files'
alias mktag='ctags -R *; cscope -Rb'
#####方法二:
创建python文件,名为gen_cscope_files.py
, 代码如下,该文件放在哪里都行。
比如我放在/home/code/gen_cscope_files.py
。
在要生成cscope.files的地方执行python ~/code/gen_cscope_files.py
即可,然后再执行cscope -Rb
。
python脚本gen_cscope_files.py :
#!/bin/python
import os
save_file = open("cscope.files", 'w')
for root, dirs, list in os.walk("./"):
for i in list:
cur_path = os.path.abspath(root)
file_path = cur_path + '/' + i
save_file.write(file_path+'\n')
save_file.close()
转自: