spf13-vim常用快捷键、功能

版权声明:本文为Ye pengyu原创文章,随意转载,但是请注明出处。内容自: https://blog.csdn.net/BjarneCpp/article/details/80608706

spf13-Vim
事实上只需在Vim里:help plugin_name就可以查看帮助内容。
顺带说一下,<Leader>是自定义的一个快捷键。spf13-vim默认是逗号:在.vimrc里面可以更改。

NERDCommenter注释工具

快捷键       功能
,cc         注释一行
,cu         取消注释一行
,ca         在两种注释符之间切换,如/**///
,cm         以block的最简方式注释一段代码
,c<Space>   切换当前行或选中内容是否注释,根据首行判断
,ci         以独立注释单行的方式 注释选中的每一行, 注释模式取决<Leader>ca
,cs         有格式地注释, 以block的常规方式注释一段代码
,cy         复制内容,然后注释
,cA         在行尾巴追加注释,注释模式取决于<Leader>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一次出现快捷键帮助页面,在一次F1,快捷键帮助页面隐藏。

EasyMotion跳转工具

快捷键     功能
,,w         跳转到当前光标前的位置(w)
,,b         跳转到当前光标后的位置(b)
,,s         搜索跳转(s),双向跳转
,,j或,,k    行级跳转(jk)
,,h或,,l    行内跳转(hl)

顺带说一下,<Leader>是自定义的一个快捷键。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命令:

  0s: 查找符号(C语言符号,即查找函数名、宏、枚举值等出现的地方)
  1g: 查找全局定义(函数、宏、枚举等定义的位置,类似ctags所提供的功能)
  2d: 查找被这个函数调用的函数
  3c: 查找调用这个函数的函数
  4t: 查找指定的字符串
  6e: 查找egrep模式,相当于egrep功能,但查找速度快多了
  7f: 查找并打开文件,类似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()

转自:
1. https://www.jianshu.com/p/c0cc1e6d50e4
2. http://conglang.github.io/2015/04/06/spf13-vim-cheat-sheet/
3. http://www.open-open.com/lib/view/1342676273979(带界面讲解)
4. https://ifhw.github.io/2016/01/10/vim-spf13/
5. https://blog.easwy.com/archives/advanced-vim-skills-cscope/
6. https://blog.csdn.net/dengxiayehu/article/details/6330200
7. https://blog.easwy.com/archives/advanced-vim-skills-cscope/
8. cscope解决找不到该文件问题(File ../xxx/yyy.c不存在) - CSDN博客
9. cscope file does not exist 错误解决方法 - CSDN博客

猜你喜欢

转载自blog.csdn.net/BjarneCpp/article/details/80608706