Vim 使用
Vim配置文件
配置文件~/.vimrc
https://github.com/daybreakgx/daybreakgx.github.io/tree/master/workspace/vim_config/vim.vimrc
if filereadable(expand('~/.vimrc.bundle'))
source ./.vimrc.bundle
endif
set nocompatible
set nu
filetype indent on
filetype plugin on
Vundle
vundle是一个开源的vim插件管理工具,源代码地址为 https://github.com/VundleVim/Vundle.vim
Vundle安装
git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle
在.vimrc中添加vundle支持
if filereadable(expand('~/.vimrc.bundle'))
source ./.vimrc.bundle
endif
.vimrc.bundle中配置如下:
filetype off
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
Plugin 'VundleVim/Vundle.vim'
call vundle#end()
Bundle 'ctags.vim'
https://github.com/daybreakgx/daybreakgx.github.io/tree/master/workspace/vim_config/vim.vimrc.bundles
- 将想要安装的插件,填写到vundle#begin和vundle#end之间
- 保存之后,安装插件的方法有以下两种
- vim中输入 :PluginInstall
- 在linux中执行 vim +PluginInstall +qall
常用插件
NERDTree插件
NERDTree配置文件
" 设置快捷键, 注意冒号前面有个空格
nmap <F2> :NERDTree<CR>
“ 显示行号
let NERDTreeShowLineNumbers=1
” 显示隐藏文件
let NERDTreeShowHidden=1
" 显示书签列表
let NERDTreeShowBookmarks=1
" 设置宽度
let NERDTreeWinSize=30
NERDTree快捷键
- ? 帮助文档
- o 打开一个目录,文件或书签,光标跳转到打开的文件
- go 打开一个文件,但是光标仍然留在NERDTree
- t 在新的tab中打开一个文件或书签, 使用
gt进行tab之间切换 - T 在新的tab中打开一个文件,但是光标留在NERDTree,对书签同样
- x 收起当前打开的目录
- D 删除书签
- P 大写,跳转到当前跟路径
- p 小写,跳转到光标所在的上一级路径
- K 跳转到第一个子路径
- J 跳转到最后一个子路经
- q 退出NERDTree
- A 全屏显示NERDTree或退出全屏显示
- m 打开NERDTree Menu
- C 设置当前目录为根目录
- K 跳转到当前光标所在那一级的第一个子节点
- J 跳转到当前光标所在那一级的最后一个子节点
- r 刷新当前光标节点
- R 刷新根目录
- ma 创建目录或文件
vim-nerdtree-tabs
https://github.com/Xuyuanp/nerdtree-git-plugin
插件配置
let g:NERDTreeIndicatorMapCustom = {
\ "Modified" : "✹",
\ "Staged" : "✚",
\ "Untracked" : "✭",
\ "Renamed" : "➜",
\ "Unmerged" : "═",
\ "Deleted" : "✖",
\ "Dirty" : "✗",
\ "Clean" : "✔︎",
\ 'Ignored' : '☒',
\ "Unknown" : "?"
\ }
ctags
https://github.com/vim-script/ctags.vim
sudo apt install ctags
生成tags文件 在项目根目录执行ctags -R
插件设置
" 设置tags的搜索路径,分号表示向上搜索,首先会在当前文件所在文件夹里面搜索tags,没有的话搜索上一级,直到搜索到根目录
set tags=./tags;,tags
快捷键
- ctrl+] 跳转到光标所在变量或函数定义的源文件中
- ctrl+t 跳转到原来的地方
- :tag start 跳转到start的定义处
- :tags 列出搜索过哪些tag
- :tag 跳转到前一个浏览过的tag处
- :ts xxx 列出所有匹配xxx的代码及其所属文件,可以通过数字选择浏览
- :ts 列出前一个搜索过的tag的所有匹配的代码及其所属文件
- :tf go to first match
- :tl go to last match
- :[count]tp go to [count] previous match
- :[count]tn go to [count] next match
taglist
https://github.com/vim-script/taglist.vim
插件配置
" 设置ctags路径
let Tlist_Ctags_Cmd='/usr/bin/ctags'
" 启动vim后自动打开taglist
let Tlist_Auto_Open=1
" 不同时显示多个文件的taglist
let Tlist_Show_One_File=1
" taglist为最后一个窗口时退出vim
let Tlist_Exit_OnlyWindow=1
" 设置taglist在右边显示
let Tlist_Use_Right_Window=1
" 设置打开关闭taglist的快捷键
nmap <F8> :TlistToggle<CR>
" 更新ctags标签文件快捷键
nmap <F6> :!ctags -R<CR>
快捷键
- o 在新窗口中显示光标所在的tag
-
- 展开一个折叠,同zo
-
- 将tag折叠,同zc
- = 将所有tag都折叠,同zM
-
- 将所有tag都展开,同zR
- x 放大/缩小taglist窗口
- u 更新taglist窗口中的tag
- s 更改taglist中tag的排列顺序,在按名字和按照出现顺序之间切换
cscope
https://github.com/vim-script/cscope.vim
sudo apt install cscope
生成cscope文件 在项目根目录执行cscope -Rqb
- R 递归所有的子目录中的文件
- q 生成倒排索引,使得符号查找更快,用这个命令后会生成cscope.in.out和cscope.po.out
- b 生成符号表,但不自动进入交互界面
powerline
https://github.com/powerline/powerline
Bundle安装
powerline/powerline
插件配置
" 总是显示状态栏
set laststatus=2
" powerline显示背景颜色
set t_Co=256
let g:Powerline_symbols='unicode'