vim常用插件安装 Vim8内置插件管理方案 在Vim8这个版本Vim有了自己的插件管理方案,引入了packages 的概念。用户只需要将插件放在指定的目录下,vim 就会自动加载这个插件。
假如有插件NERDTree ,只需要将插件放在~$ .vim/pack/vendor/start/
这个目录下即可。
Vim8会自动加载 目录下的插件,也就是说插件也可以放在.vim/pack/NERDTree/start/下。
那些我们不想自动加载的插件可以放到opt 目录下。 然后在~$ .vimrc
中使用packadd
来手动加载插件,例如:
1 2 3 4 5 if xxx_version > 34 packadd xxx else packadd xxx endif
:computer:在windows中,vim的下载目录下,vim82文件夹相当于.vim文件夹,_vimrc相当于.vimrc
:notebook: 查看文档 ::h packages
可以获得更多帮助信息
vim插件推荐
参阅 Vim Awesome 获取热门插件
NERDTree插件安装及使用 下载NERDTree插件 NERDTree下载地址:https://github.com/preservim/nerdtree.git 使用git
下载NERDTree 插件,并将插件放在vim8要求的目录:1 2 3 ~$ mkdir -p ~/.vim/pack/NERDTree/start ~$ cd ~/.vim/pack/NERDTree/start ~$ git clone https://github.com/preservim/nerdtree.git
NERDTree插件的配置 1 2 3 4 5 6 7 8 9 10 11 12 13 "将该配置写进.vimrc文件中" "打开NERDTree的快捷键设置" nnoremap <C-n> :NERDTree<CR> :set nu<CR> "关闭NERDTree" nnoremap <C-t> :NERDTreeToggle<CR> "打开NERDTree,在node中选中当前文件" nnoremap <C-f> :NERDTreeFind<CR> "vim打开时,自动打开NERDTree,并且将光标放在文件窗口" autocmd VimEnter * NERDTree | wincmd p "当NERDTree是唯一的窗口时退出vim" autocmd BufEnter * if tabpagenr('$') == 1 && winnr('$') == 1 && exists('b:NERDTree') && b:NERDTree.isTabTree() | quit | endif "在每一个新的new tab打开存在的NERDTree" autocmd BufWinEnter * silent NERDTreeMirror
NERDTree常用快捷键
光标位置
快捷键
说明
左侧树形目录
s
纵向分割窗口打开文件
左侧树形目录
i
水平分割窗口打开文件
左侧树形窗口
t
在标签页中打开
左侧树形窗口
T
在后台标签页中打开
左侧树形窗口
p
到上层目录
左侧树形窗口
P
到根目录
左侧树形目录
K
到同目录第一个节点
左侧树形目录
J
到同目录最后一个节点
左侧树形目录
m
显示文件系统菜单(添加、删除、移动操作)
左侧树形目录
C
改变树的根为当前目录
左侧树形目录
?
帮助
左侧树形目录
q
关闭
gruvbox插件 插件说明: 更改vim的配色
插件安装 gruvbox 下载地址:https://github.com/morhetz/gruvbox.git 使用git
下载 gruvbox 插件,并将插件放在vim8要求的目录:1 2 3 ~$ mkdir -p ~/.vim/pack/gruvbox/start ~$ cd ~/.vim/pack/gruvbox/start ~$ git clone https://github.com/morhetz/gruvbox.git
插件配置 1 2 3 4 "设置暗色背景" set background=dark "配色方案选用gruvbox" colorscheme gruvbox
lightline插件 插件说明: 美化vim的状态栏
插件安装 lightline 下载地址:https://github.com/itchyny/lightline.vim.git
使用git
下载 lightline 插件:1 2 3 ~$ mkdir -p ~/.vim/pack/lightline/start ~$ cd ~/.vim/pack/lightline/start ~$ git clone https://github.com/itchyny/lightline.vim.git
Vim-Rainbow插件 插件说明: Vim-Rainbow插件会给每一对括号加一个独特的颜色,这样你就会很容易辨认,而且会让代码显的丰富多彩
Vim-Rainbow 下载地址:https://github.com/kien/rainbow_parentheses.vim.git 使用git
下载 Vim-Rainbow 插件:
1 2 3 ~$ mkdir -p ~/.vim/pack/rainbow/start ~$ cd ~/.vim/pack/rainbow/start ~$ git clone https://github.com/kien/rainbow_parentheses.vim.git
coc.nvim插件 插件说明: 代码自动补全
coc.nvim下载地址: https://github.com/neoclide/coc.nvim.git
说明: 打开上述地址,进入coc.nvim的github仓库,点击Wiki 查看安装说明,以及使用说明。
coc.nvim安装环境要求 安装 Node.js
安装 Yarn
linux安装 curl --compressed -o- -L https://yarnpkg.com/install.sh | bash
windows安装 yarn的.msi下载地址
下载后将node.js和yarn均添加到环境变量
coc.nvim的安装 1 2 3 4 ~$ mkdir -p ~/.vim/pack/coc/start ~$ cd ~/.vim/pack/coc/start ~$ git clone --branch release https://github.com/neoclide/coc.nvim.git --depth=1 ~$ vim -c "helptags coc.nvim/doc/ | q"
安装coc.nvim的插件 :point_right:coc.nvim支持的语言插件
安装插件(两种方式):
使用CocInstall
:CocInstall coc-json coc-css
使用g:coc_global_extensions
变量,当coc.nvim服务开启的时候,coc会自动加载缺失的插件 let g:coc_global_extensions = ['coc-json', 'coc-git']
卸载插件:
使用CocList
管理插件:
插件状态:
?
无效的插件
*
插件处于活动状态
+
插件被加载
-
插件失能
注意: 有的插件有依赖,如coc-clangd依赖clangd
coc.nvim的配置文件 打开配置文件::CocConfig
:point_right:关键字
例子:安装c/c++的语法补全
安装coc-clangd :CocInstall coc-clangd
clangd有些c库支持不全需要另外添加
下载MinGW或者安装vs都可以
如果下载的是MinGW则将include的路径添加到环境变量INCLUDE
取消coc-clangd的错误提示(看需求,如果库添加的不全,则引用头文件的时候,会有错误提示)
打开配置文件:CocConfig
{ diagnostic.enableSign: false, }
修改vim的光标 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 "Mode Settings" let &t_SI.="\e[5 q" "SI = INSERT mode let &t_SR.="\e[4 q" "SR = REPLACE mode let &t_EI.="\e[1 q" "EI = NORMAL mode (ELSE) "Cursor settings:" " 1 -> blinking block " " 2 -> solid block " " 3 -> blinking underscore " " 4 -> solid underscore " " 5 -> blinking vertical bar " " 6 -> solid vertical bar " "let &t_SI = "\<Esc>]50;CursorShape=1\x7" "let &t_SR = "\<Esc>]50;CursorShape=2\x7" "let &t_EI = "\<Esc>]50;CursorShape=0\x7"
vim-startify插件 插件说明: 给vim添加开始界面,并且记录历史打开的文件,显示在界面上
vim-startify 下载地址:https://github.com/mhinz/vim-startify.git
使用git
下载 vim-startify 插件:
1 2 3 ~$ mkdir -p ~/.vim/pack/startify/start ~$ cd ~/.vim/pack/startify/start ~$ git clone https://github.com/mhinz/vim-startify.git
fzf和fzf.vim(模糊搜索)下载 插件说明: 模糊搜索,fzf.vim依赖fzf,因此安装fzf.vim需要安装fzf
fzf 下载地址: https://github.com/junegunn/fzf.git fzf.vim 下载地址:https://github.com/junegunn/fzf.vim.git
:point_right::fzf.vim命令说明
我的.vimrc文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 "--------------------------vim设置-----------------------------------------" set nu set tabstop=4 syntax on set showmodeset showcmdset mouse=a set encoding=utf-8 set t_Co=256 set autoindentset cursorlineset linebreakset showmatchset hlsearchset incsearch"设置vim可以使用back键" set backspace=2 nnoremap <C-l> :tabn <CR> "移动到下一个标签" nnoremap <C-h> :tabp <CR> "移动到上一个标签" "---------------------------NERDTree 设置----------------------------------" "打开NERDTree的快捷键设置" nnoremap <C-n> :NERDTree<CR> :set nu <CR> "关闭NERDTree" nnoremap <C-t> :NERDTreeToggle<CR> "打开NERDTree,在node中选中当前文件" nnoremap <C-f> :NERDTreeFind<CR> "vim打开时,自动打开NERDTree,并且将光标放在文件窗口" autocmd VimEnter * NERDTree | :set nu | wincmd p "当NERDTree是唯一的窗口时退出vim" autocmd BufEnter * if tabpagenr ('$' ) == 1 && winnr ('$' ) == 1 && exists ('b:NERDTree' ) && b:NERDTree .isTabTree() | quit | endif "在每一个新的new tab打开存在的NERDTree" "autocmd BufWinEnter * silent NERDTreeMirror " "----------------------------gruvbox 设置----------------------------------" "设置暗色背景" set background=dark"设置vim背景透明" "配色方案设置为gruvbox" colorscheme gruvbox"---------------------------ranibow 设置------------------------------------" let g:rainbow_active =1 "---------------------------修改vim的光标样式-------------------------------" "Mode Settings" let &t_SI.="\e[5 q" let &t_SR.="\e[4 q" let &t_EI.="\e[1 q" "Cursor settings:" " 1 -> blinking block " " 2 -> solid block " " 3 -> blinking underscore " " 4 -> solid underscore " " 5 -> blinking vertical bar " " 6 -> solid vertical bar " "let &t_SI = " \<Esc> ]50 ;CursorShape=1 \x7"let &t_SR = " \<Esc> ]50 ;CursorShape=2 \x7"let &t_EI = " \<Esc> ]50 ;CursorShape=0 \x7"---------------------------markdown preview设置---------------------------" map <F3> :MarkdownPreview<CR> let g:mkdp_auto_start = 0 let g:mkdp_auto_close = 1 let g:mkdp_refresh_slow = 1 let g:mkdp_open_to_the_world = 0 let g:mkdp_browser = '' let g:mkdp_port = '' let g:mkdp_page_title = '「${name}」' let g:mkdp_preview_options = { \ 'mkit' : {}, \ 'katex' : {}, \ 'uml' : {}, \ 'maid' : {}, \ 'disable_sync_scroll' : 0 , \ 'sync_scroll_type' : 'middle' , \ 'hide_yaml_meta' : 1 , \ 'sequence_diagrams' : {}, \ 'flowchart_diagrams' : {}, \ 'content_editable' : v:false , \ 'disable_filename' : 0 \ } "-------------------------c/c++自动注释-------------------------------------" "定义自动插入函数适用于c/c++" function InsertExegesisC (str_list,now_line) "得到当前文件扩展名" let file_extend_name= expand ("%:e" ) "如果当前文件为c或者c++文件才执行" if file_extend_name == "c" || file_extend_name =="cpp" || file_extend_name == "h" let str_list=['/**' ] for i in a:str_list call extend (str_list,[" * @" .i]) endfor call extend (str_list,[" */" ]) call append (a:now_line ,str_list) endif endfunction "函数注释" function ExegesisFun () let fun_str=['Name: ' ,'Description: ' ,'Date: ' .strftime ("%c" ),'Author: chen jixuan' ,'Param: ' ,'Return: ' ] call InsertExegesisC(fun_str,line ("." )-1 ) endfunction "文件注释" function ExegesisFile () let file_str=['FileName: ' .expand ("%:t" ),'Author: chen jixuan' ,'Date: ' .strftime ("%c" ),'Version: ' , 'Description: ' ] call InsertExegesisC(file_str,0 ) endfunction nnoremap <F2> :call ExegesisFun() <CR> nnoremap <F3> :call ExegesisFile() <CR> "-----------------------------得到当前时间------------------------------" function GetNowTime (now_line) let str = "Date: " .strftime ("%c" ) call append (a:now_line ,str) endfunction nnoremap <F4> :call GetNowTime(line ("." )-1 ) <CR>