vim配置教程
插件
1.vim-plug
插件管理
junegunn/vim-plug: 🌺 Minimalist Vim Plugin Manager
curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
- PlugInstall [name ...]
- PlugUpdate [name ...]
- PlugClean[!]
- PlugUpgrade: Upgrade vim-plug itself
- PlugStatus: Check the status of plugins
- PlugDiff: Examine changes from the previous update and the pending changes
- PlugSnapshot[!] [output path]: Generate script for restoring the current snapshot of the plugins
vim-plug 安装失败_vimplus安装失败_云梦谭的博客-CSDN博客
$ diff plug.vim plug.vim.bak
778c778
< let fmt = get(g:, 'plug_url_format', 'https://git::@ghproxy.com/https://github.com/%s.git')
---
> let fmt = get(g:, 'plug_url_format', 'https://git::@github.com/%s.git')
1174c1174
< \ '^https://git::@ghproxy.com\.com', 'https://ghproxy.com/https://github.com', '')
---
> \ '^https://git::@github\.com', 'https://github.com', '')
2.NERDTree
文件浏览器
preservim/nerdtree: A tree explorer plugin for vim.
nnoremap <leader>n :NERDTreeFocus<CR>
nnoremap <C-n> :NERDTree<CR>
nnoremap <C-t> :NERDTreeToggle<CR>
nnoremap <C-f> :NERDTreeFind<CR>
3.vim-devicons
用于支持Nerd Fonts, Nerd Fonts需要额外安装
ryanoasis/vim-devicons: Adds file type icons to Vim plugins such as: NERDTree, vim-airline, CtrlP, unite, Denite, lightline, vim-startify and many more
set encoding=UTF-8
call plug#begin()
Plug 'ryanoasis/vim-devicons'
call plug#end()
4.ctags
vim+ctags+cscope+Taglist+Nerdtree打造成sourceinsight - 知乎
ctags文件只能查看函数、类或变量的定义,而没有被调用信息。如果要知道一个函数在什么地方被使用,需要使用cscope工具。
添加的tags最好是source code的索引,对于头文件索引没有效果。
sudo apt install universal-ctags
# 生成ctag文件
ctags -R --c++-kinds=+p --fields=+iaS --extra=+q
ctags的选项:
-R表示递归创建,也就包括源代码根目录(当前目录)下的所有子目录;
--c++-kinds=+ps是为c/c+语言添加函数原型信息;
--fields=+iaS是为标签添加继承信息(inheritance),访问控制信息(access)和函数特征(Signature)如参数表或原型等;
--extra=+q是为类成员添加标签;
当用户在当前目录中运行vi时,会自动载入此tags文件。假如你想让你当前目录文件中的函数名在其他目录中打开vim时也能被定位到的话,那么可以把当前目录的tags文件路径添加到.vimrc中: set tags+=/home/ubuntu/code/tags
Ctrl+] 跳到当前光标下单词的标签
Ctrl+O 返回上一个标签
Ctrl+T 返回上一个标签
:tag TagName 跳到TagName标签
以上命令是在当前窗口显示标签,当前窗口的文件替代为包标签的文件,当前窗口光标跳到标签位置。如果不希望在当前窗口显示标签,可以使用以下命令:
:stag TagName 新窗口显示TagName标签,光标跳到标签处
Ctrl+W + ] 新窗口显示当前光标下单词的标签,光标跳到标签处
:tselect TagName
输入以上命令后,vim会为你展示一个选择列表。然后你可以输入要跳转到的匹配代号 (在第一列)。其它列的信息可以让你知道标签在何处被定义过。
以下命令将在预览窗口显示标签
:ptag TagName 预览窗口显示TagName标签,光标跳到标签处
Ctrl+W + } 预览窗口显示当前光标下单词的标签,光标跳到标签处
:pclose 关闭预览窗口
5.cscope
sudo apt install cscope
cscope -Rbkq
cscope的选项:
-R: 在生成索引文件时,搜索子目录树中的代码
-b: 只生成索引文件,不进入cscope的界面
-q: 生成cscope.in.out和cscope.po.out文件,加快cscope的索引速度
-k: 在生成索引文件时,不搜索/usr/include目录
-i: 如果保存文件列表的文件名不是cscope.files时,需要加此选项告诉cscope到哪儿去找源文件列表。可以使用“-”,表示由标准输入获得文件列表。
-I dir: 在-I选项指出的目录中查找头文件
-u: 扫描所有文件,重新生成交叉索引文件
-C: 在搜索时忽略大小写
-P path: 在以相对路径表示的文件前加上的path,这样,你不用切换到你数据库文件所在的目录也可以使用它了。
生成.out文件之后,我们需要在当前用户的用户目录中的.vimrc文件中把.out数据库的路径配置进去,假如不配置的话,cscope无法查找.out所在目录文件中的函数等,使用cs add命令添加.out的路径,即在~/.vimrc文件中添加下面这些内容即可: cs add /home/ubuntu/linux-4.12.1/linux/cscope.out
6.taglist
vim-scripts/taglist.vim: Source code browser (supports C/C++, java, perl, python, tcl, sql, php, etc)
yegappan/taglist: Source code browser plugin for Vim
Taglist其实是一个vim的插件,能将当前vim打开的文件中函数名、变量名等在一个窗口中列出来,并支持通过列出的函数名实现跳转。
"Tlist 的快捷键
map <F2> :Tlist <CR>
let Tlist_Show_One_File=1
let Tlist_Exit_OnlyWindow=1
let Tlist_Use_Right_Window=1
进入vim后用命令":Tlist"打开/关闭taglist窗口
taglist的常用使用命令:
o 在一个新打开的窗口中显示光标下tag
u 更新taglist窗口中的tag
s 更改排序方式,在按名字排序和按出现顺序排序间切换
x taglist窗口放大和缩小,方便查看较长的tag
+ 打开一个折叠,同zo
- 将tag折叠起来,同zc
- 打开所有的折叠,同zR
= 将所有tag折叠起来,同zM
[[ 跳到前一个文件
]] 跳到后一个文件
q 关闭taglist窗口
显示帮助
可以用“:TlistOpen”打开taglist窗口,用“:TlistClose”关闭taglist窗口。或者使用“:TlistToggle”在打开和关闭间切换。
7.winmanager
anscoral/winmanager.vim: winmanager : A windows style IDE for Vim
let g:winManagerWindowLayout='FileExplorer|TagList'
nmap wm :WMToggle<cr>
:WMToggle 打开/关闭WinManage,不过我们在配置文件.vimrc中做了快捷键映射,所以直接按wm就可以打开/关闭WinManage
文件浏览器命令(在文件浏览器窗口中使用)
或双击 如果光标下是目录, 则进入该目录; 如果光标下文件, 则打开该文件
如果光标下是目录, 则进入该目录; 如果光标下文件, 则在新窗口打开该文件
刷新列表
- 返回上一层目录
c 使浏览目录成为vim当前工作目录
d 创建目录
D 删除当前光标下的目录或文件
i 切换显示方式
R 文件或目录重命名
s 选择排序方式
r 反向排序列表
x 定制浏览方式, 使用你指定的程序打开该文件
winmanager帮助文档
:help winmanager
netrw帮助文档
:help netrw
linux vim配置,打造ide_magoYang的技术博客_51CTO博客