1 插件安装
1.1 下载插件包
链接: https://pan.baidu.com/s/1UN3BZB4Wy9DxzVrk3IsUUw
提取码: v6ie
包含的插件:
- taglist
- cscope_maps
- nerdtree
- xxx
1.2 安装 cscope
执行命令:
tar -xvf cscope-15.9.tar.gz
cd cscope-15.9
./configure
make
sudo make install
如果make时出现错误:build.c:52:20: fatal error: curses.h: 没有那个文件或目录
,需要安装libncurses
库,执行:
sudo apt-get install libncurses5-dev
1.3 安装 ctages
执行命令:
tar -xvf ctags-5.8.tar.gz
cd ctags-5.8
./configure
make
sudo make install
1.4 安装nodejs
nodejs下载地址
tar node-v12.9.1-linux-x64.tar.gz
mv node-v12.9.1-linux-x64 /usr/local/
mv /usr/local/node-v12.9.1-linux-x64 /usr/local/node
sudo ln -s /usr/local/node/bin/node /usr/local/bin/node
sudo ln -s /usr/local/node/bin/npm /usr/local/bin/npm
# 输入 npm 查看
2 插件的使用
2.1 ctags 的使用
-
在当前目录下生成tags文件,执行:
ctags -R
-
如果经常在不同工程中查阅代码,可以在~ /.vimrc中添加:
set tags=tags set autochdir
或者,在~/.vimrc中加入一行:
set tags=xxx/tags # 这里的目录是上一步中生成tags文件的路径
或者,在vim中输入命令:
set tags=./tags # 当前路径下的tags文件
-
快捷键
ctrl
+]
:跳转到函数定义,或者用命令:ta xxx
ctrl
+o
/t
:返回跳转前的位置
g
+d
:跳转到局部定义 -
自动打开定义xxx函数的地方
vim -t xxx
-
列出查找/跳转过程
:tags
2.2 taglist 的使用
- 在~/.vimrc中设置:
let Tlist_Show_One_File=1 "不同时显示多个文件的tag,只显示当前文件的 let Tlist_Exit_OnlyWindow=1 "如果taglist窗口是最后一个窗口,则退出vim let Tlist_Ctags_Cmd="/usr/bin/ctags" "将taglist与ctags关联
- 打开taglist左侧窗口,按
q
退出::TlistOpen
- 光标在taglist中时的快捷键:
回车
:跳到光标下tag所定义的位置
o
:在新窗口中显示刚刚的tag定义的位置
空格
:在底部显示此tag的函数名原型
u
:更新tag列表(如果添加了新函数)
s
:更改排序方式
[[
:跳到前一个文件
]]
:跳到后一个文件
2.3 cscope 的使用
-
生成文件索引文件
cscope.files
由于索引文件中的路径需要全路径,所以可以使用一个Python脚本来生成,存放在~/.index.py
,脚本内容如下: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()
在需要生成cscope.files文件的目录下执行:
python ~/.index.py
-
在当前目录下生成
cscope.out
文件cscope -bqk
-
如果经常在不同工程中查阅代码,可以在~ /.vimrc中添加:
if filereadable("cscope.out") cs add cscope.out elseif $CSCOPE_DB != "" cs add $CSCOPE_DB endif
或者,在命令行中输入以下命令即可添加cscope数据库:
:cs add ./cscope.out
或者,在.vimrc文件中添加以下语句制定路径:
export CSCOPE_DB="xxxx/cscope.out"
-
常用命令
:cs f s xxx #查找C语言符号,即查找函数名、宏、枚举值等出现的地方 :cs f g xxx #查找函数、宏、枚举等定义的位置,类似ctags所提供的功能 :cs f d xxx #查找本函数调用的函数 :cs f c xxx #查找调用本函数的函数 :cs f t xxx #查找指定的字符串 :cs f e xxx #查找egrep模式,相当于egrep功能,但查找速度快多了 :cs f f xxx #查找并打开文件,类似vim的find功能 :cs f i xxx #查找包含本文件的文
这里的
s ~ i
对应数字0 ~ 8
-
使用快捷键
需要cscope_maps.vim文件,插件包里已经包含
使用快捷键时,把光标移动到要查找的关键字上,同时按下ctrl+\,松开后再按s~i中某个快捷键:<CTRL - \> s <CTRL - \> g <CTRL - \> d <CTRL - \> c <CTRL - \> t <CTRL - \> e <CTRL - \> f <CTRL - \> i
2.4 nerdtree 的使用
- 调出左侧目录树
:NERDTree
- 热键
o
:打开/关闭文件夹
回车
:打开文件
p
:跳转到父目录
P
:跳转到根目录
m
:显示文件系统菜单(添加、删除、移动操作) - 在.vimrc中的设置如下(插件包里已经配置好),打开/关闭NERDTree的快捷键是
F3
:"打开vim时,自动打开NERDTree autocmd vimenter * NERDTree " 设置NerdTree打开的快捷键,可自行更改 map <F3> :NERDTreeMirror<CR> map <F3> :NERDTreeToggle<CR> "当NERDTree为剩下的唯一窗口时自动关闭 autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif
2.5 MarkdownPreview 的使用
打开.md文件,按下F4
即可在网页上打开预览;
具体可以参考这里
- 安装nodejs
tar node-v12.9.1-linux-x64.tar.gz
mv node-v12.9.1-linux-x64 /usr/local/
mv /usr/local/node-v12.9.1-linux-x64 /usr/local/node
sudo ln -s /usr/node/local/bin/node /usr/local/bin/node
sudo ln -s /usr/node/local/bin/npm /usr/local/bin/npm
# 输入 npm 查看
- 下载markdown-preview.vim
下载地址
克隆到本地后,把该目录复制到.vim/bundle/中即可使用,用vim打开md文件后,可以执行下面的命令来打开或关闭预览:
:MarkdownPreview
:MarkdownPreviewStop
- 设置快捷键
在.vimrc文件中添加以下语句即可使用快捷键F4
打开预览:
map <F4> :MarkdownPreview<CR>
3 其他快捷键
3.1 删除空格
删除行末空格:
:%s/\s\+$//
# 其中:
# 行末:$
# 行首:^
# 空格:\s
# 行末空格:\s\+$
# 行首空格:^\+\s
3.2 移动
热键:
W
/w
:移动到下一个单词开头E
/e
: 移动到下一个单词结尾B
/b
: 倒退到上一个单词开头
3.3 分屏
快捷键:
<CTRL - w> v # 水平方向复制窗口
<CTRL - w> s # 竖直方向复制窗口
<CTRL - w> w # 切换到另一个选中窗口
<CTRL - w> j/k/h/l # 按照方向切换窗口
<CTRL - w> > # 宽度+1
<CTRL - w> 10 > # 宽度+10
<CTRL - w> < # 宽度-1
<CTRL - w> + # 高度+1
<CTRL - w> 10 + # 高度+10
<CTRL - w> - # 高度-1
<CTRL - w> H/J/K/L # 把当前窗口移动到最左/下/右/上
vim -on file1 file2 # 上下分屏
vim -On file1 file2 # 左右分屏
:sp filename # 横屏打开另一个文件
:vsp filename # 竖屏打开另一个文件
:qall # 退出全部打开的窗口
3.4 自动补全
ctrl + n
ctrl + p
3.5 缩进
== 缩进所在行
=a{ 缩进所在程序块
gg=G 缩进全部
4 vim实用命令
4.1 读取二进制文件
如果正常打开二进制文件会是乱码,所以 vim 打开这类文件是要加上参数 -b:
vim -b filename # 打开二进制文件、
:%!xxd
:%!xxd -g 1 # 用1个字节做拆分
4.2 批量行尾插入
ctrl+v
$
A
输入要插入的内容
esc结束