vim配置教程

Devin'sBlog / 2023-08-24 / 原文

插件

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的常用使用命令:

         跳到光标下tag所定义的位置,用鼠标双击此tag功能也一样
o             在一个新打开的窗口中显示光标下tag
      显示光标下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博客