vi是UNIX系统最初的文本编辑工具。vim是vi的升级,即vi improve,被包含在大多数UNIX和类UNIX系统中。
本文主要介绍Ubuntu20.04环境下vim的配置过程,会比较基础和实用。
题外话,从下图可以看到Ubuntu20.04中vi和vim都是/usr/bin/vim.basic,所以该环境下命令行键入vi或vim,没什么区别。
目录
-
简单配置
如上图,键入ls -a查看ad用户根目录已经有.vimrc文件,键入cp命令拷贝备份,键入vim打开.vimrc,键入i进入插入修改模式,将下列命令补充到该文件中。
备注:如果ad用户根目录下缺少.vimrc或该文件已经面目全非,可以cp拷贝/etc/vim/vimrc文件作为.vimrc,然后进行修改。
set number "显示行号
set tabstop=4 "设置tab为4个空格
set cindent shiftwidth=4 "设置回车自动宽度
set showmatch "高亮显示匹配的(圆/方/花)括号
set ignorecase "忽略大小写
set smartcase "智能匹配大小写
set hlsearch "查找字符串高亮
set mouse=nv "使能鼠标
inoremap ( ()<ESC>i "圆括号(自动补全
inoremap [ []<ESC>i "方括号[自动补全
inoremap { {}<ESC>i "花括号{自动补全
.vimrc修改完成后,按esc按键,接着键入:wq回车保存退出。
备注:
- 上图中引号"后面的中文注释仅为了本文说明方便,不建议.vimrc加入中文注释。
- inoremap, i表示在插入模式下,nore表示不进行递归,map表示按键映射。
-
函数跳转配置
函数跳转功能需要安装ctags和cscope:
sudo apt install exuberant-ctags
sudo apt install cscope
.vimrc文件中增加一行,配合后面操作以支持跳转到标准库函数定义。
set tags+=~/tmp/tags
为了方便使用,把相关指令写入shell脚本,使用时执行脚本就行,不用再键入多条命令。
其中,ctags.sh脚本内容如下:
#!/bin/sh
find . -name "*.h" -o -name "*.c" -o -name "*.cc" -o -name "*.inc">cscope.file
cscope -Rbq -i cscope.file
#ctags -R --c-kinds=+cdefgmnpstuv -L cscope.file
ctags -R --c++-kinds=+p --fields=+iaS --extra=+q -L cscope.file
ctags --fields=+iaS --extra=+q -R -f ~/tmp/tags /usr/include /usr/local/include
rm -rf cscope.file
vim打开代码文件,让光标处于需要跳转的函数,按ctrl+]键跳转到函数定义,按ctrl+t键返回。示例效果如下:
-
函数大纲配置
1)vim官网(https://www.vim.org/scripts/script.php?script_id=3465)下载tagbar.vmb
2)vim tagbar.vmb
:so %
:q
3)第二步操作会将tagbar插件解压到~/.vim目录,为了方便管理,我手动将解压到~/.vim/的目录和文件放到了~/.vim/bundle/tagbar/。并修改.vimrc,添加以下两行,配置tagbar插件路径和启动按键为F4。
set rtp+=~/.vim/bundle/tagbar/
nnoremap <silent><F4> :TagbarToggle<CR>
vim打开代码文件,按F4按键,右侧将显示该代码文件的函数大纲。示例效果如下:
-
文件列表配置
1)从vim官网(https://www.vim.org/scripts/script.php?script_id=1658)下载NERD_tree.zip
2)解压到.vim/bundle/NERD_tree目录
3)修改.vimrc,增加如下两行,配置NERD_tree插件路径和启用按键为F3:
set rtp+=~/.vim/bundle/NERD_tree/
nnoremap <silent><F3> :NERDTreeToggle<CR>
vim打开代码文件,按F3按键,左侧将显示当前路径的文件列表。示例效果如下:
安装两个插件后vim的大小才604K:
最后看一下.vimrc文件,改动其实不多: