vim插件

Vim插件

安装插件管理器

curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim	#安装plugvim ~/.vim/vimrc	#在vimrc文件中启用plug插件管理,并添加配置插件

插件安装

"                               _ ____   __     _____ __  __ ____   ____
"   ___  ___  _ __  _   _ _ __ ( ) ___|  \ \   / /_ _|  \/  |  _ \ / ___|
"  / _ \/ _ \| '_ \| | | | '_ \|/\___ \   \ \ / / | || |\/| | |_) | |
" |  __/ (_) | | | | |_| | | | |  ___) |   \ V /  | || |  | |  _ <| |___
"  \___|\___/|_| |_|\__,_|_| |_| |____/     \_/  |___|_|  |_|_| \_\\____|
" ===============================木He寸&eonun===============================

"===================
"===首次使用自动配置===
"===================
if empty(glob('~/.vim/autoload/plug.vim'))
  silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs
    \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
  autocmd VimEnter * PlugInstall --sync | source $MYVIMRC
endif

"=============
"===插件安装===
"====START====

" 安装plug:
" curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

call plug#begin('~/.vim/plugged')  " 启用plug安装
" 插件github项目地址为:https://github.com/ 加 '' 中的内容
" 如:https://github.com/vim-airline/vim-airline

"===状态栏===
Plug 'vim-airline/vim-airline'	" 状态栏
Plug 'vim-airline/vim-airline-themes'	" 状态栏主题

"===配色方案===
Plug 'lifepillar/vim-solarized8'		" solarized8主题
Plug 'ayu-theme/ayu-vim'				" ayu主题
Plug 'nathanaelkane/vim-indent-guides'	" 显示缩进级别

"===目录树===
Plug 'scrooloose/nerdtree'				" 目录树,方便浏览当前目录下的文件
Plug 'Xuyuanp/nerdtree-git-plugin'      " 目录树git提示
Plug 'kien/ctrlp.vim'					" 适用于大规模项目文件的浏览

"===自动化===
Plug 'neoclide/coc.nvim', {'branch': 'release'}		" 代码补全 需要vim >=8 或neovim
Plug 'vim-syntastic/syntastic'							" 错误语法提示
Plug 'jiangmiao/auto-pairs'			" 符号补全

"===历史===
Plug 'mbbill/undotree'					" 历史修改撤回

"===文本===
Plug 'godlygeek/tabular'				" 文本过滤、对齐工具
Plug 'gcmt/wildfire.vim'				" 视图模式下快速选中符号中的内容
Plug 'scrooloose/nerdcommenter'			" 快速注释一行

"===markdon===
Plug 'iamcco/markdown-preview.nvim', { 'do': { -> mkdp#util#install() } } " markdowm预览
Plug 'dhruvasagar/vim-table-mode', { 'on': 'TableModeToggle' }	" 表格制作工具

"===其他===
Plug 'yianwillis/vimcdoc'				" vim中文帮助
"Plug 'liuchengxu/vim-which-key'			" 显示被绑定的可用按键
"==依赖==
Plug 'MarcWeber/vim-addon-mw-utils'
Plug 'kana/vim-textobj-user'
Plug 'fadein/vim-FIGlet'

call plug#end()		"结束plug安装
" 刷新vimrc后使用 :PlugInstall 安装插件

"=====END=====
"===插件安装===
"=============
"=============
"===插件配置===
"====START====

"pyhon解释器位置
let g:python_host_prog='/usr/bin/python2'
let g:python3_host_prog='/usr/bin/python3'




"===状态栏===
"==airline状态栏==
let g:airline#extensions#tabline#enabled = 1	" airline 显示选项卡和缓冲区
let g:airline_theme='jellybeans'
" 状态栏分隔美化  需要安装powerline-fonts字体(https://github.com/powerline/fonts) #sudo pacman -S powerline-fonts
if !exists('g:airline_symbols')
    let g:airline_symbols = {}
  endif
let g:airline_left_sep = ''
let g:airline_left_alt_sep = ''
let g:airline_right_sep = ''
let g:airline_right_alt_sep = ''
let g:airline_symbols.branch = ''
let g:airline_symbols.readonly = ''
let g:airline_symbols.linenr = '☰'
let g:airline_symbols.maxlinenr = ''
let g:airline_symbols.dirty= '⚡'
"==状态模式简洁显示==
let g:airline_mode_map = {
      \ '__'     : '-',
      \ 'c'      : 'C',
      \ 'i'      : 'I',
      \ 'ic'     : 'I',
      \ 'ix'     : 'I',
      \ 'n'      : 'N',
      \ 'multi'  : 'M',
      \ 'ni'     : 'N',
      \ 'no'     : 'N',
      \ 'R'      : 'R',
      \ 'Rv'     : 'R',
      \ 's'      : 'S',
      \ 'S'      : 'S',
      \ ''     : 'S',
      \ 't'      : 'T',
      \ 'v'      : 'V',
      \ 'V'      : 'V',
      \ ''     : 'V',
      \ }


"===配色方案===
map <LEADER>c1 :set background=dark<CR>:colorscheme solarized8<CR>:AirlineTheme jellybeans<CR>	"配色1
map <LEADER>c2 :set background=light<CR>:let ayucolor='light'<CR>:colorscheme ayu<CR>:AirlineTheme ayu_light<CR>	" 配色2
set termguicolors	"开启真彩支持
set background=dark
let g:solarized_termtrans=1	" 透明背景
colorscheme solarized8
"let ayucolor='light'	" light mirage dark
"colorscheme ayu


"===目录树===
"==NERDTreeToggle==
nmap <F3> :NERDTreeToggle<CR>	" 设置目录树快捷键

"==NERDTree-git提示==
let g:NERDTreeIndicatorMapCustom = {
    \ "Modified"  : "✹",
    \ "Staged"    : "✚",
    \ "Untracked" : "✭",
    \ "Renamed"   : "➜",
    \ "Unmerged"  : "═",
    \ "Deleted"   : "✖",
    \ "Dirty"     : "✗",
    \ "Clean"     : "✔︎",
    \ "Unknown"   : "?"
    \ }

"==大规模项目文件浏览==
map <C-p> :CtrlP<CR>
let g:ctrlp_prompt_mappings = {
  \ 'PrtSelectMove("j")':   ['<c-e>', '<down>'],
  \ 'PrtSelectMove("k")':   ['<c-u>', '<up>'],
  \ }
  
  
"===自动化===
"==coc配置==
" 查看:https://github.com/neoclide/coc.nvim 中Extensions的列表 
" 执行命令安装coc对相应语言的补全

" 若表中没有需要的,可参考 "Register custom language servers" 进行配置
" 参考教程:https://www.jianshu.com/p/231bfb066051
set timeoutlen=500 		" 设置按键超时为500ms
set cmdheight=2 		" 设置命令行行数

inoremap <C-d> <Esc>:set cmdheight=2<CR>a
inoremap <C-t> <Esc>:set cmdheight=10<CR>a
nnoremap <C-d> :set cmdheight=2<CR>
nnoremap <C-t> :set cmdheight=10<CR>

set updatetime=1000
set shortmess+=c
set signcolumn=yes
inoremap <silent><expr> <TAB>
      \ pumvisible() ? "\<C-n>" :
      \ <SID>check_back_space() ? "\<TAB>" :
      \ coc#refresh()
inoremap <expr><S-TAB> pumvisible() ? "\<C-p>" : "\<C-h>"

function! s:check_back_space() abort
  let col = col('.') - 1
  return !col || getline('.')[col - 1]  =~# '\s'
endfunction
" 使用<cr>确认完成,`<C-g> u`表示在当前位置断开撤销链
" Coc仅在确认时执行片段和其他编辑
inoremap <expr> <cr> pumvisible() ? "\<C-y>" : "\<C-g>u\<CR>"
" 使用K在预览窗口中显示文档
nnoremap ? :call <SID>show_documentation()<CR>
function! s:show_documentation()
  if (index(['vim','help'], &filetype) >= 0)
    execute 'h '.expand('<cword>')
  else
    call CocAction('doHover')
  endif
endfunction

" 突出显示CursorHold上光标下的符号
autocmd CursorHold * silent call CocActionAsync('highlight')


"==自定义补全==
"=html自动补全标签=
autocmd BufNewFile *  setlocal filetype=html
function! InsertHtmlTag()
	let pat = '\c<\w\+\s*\(\s\+\w\+\s*=\s*[''#$;,()."a-z0-9]\+\)*\s*>'
	normal! a>
	let save_cursor = getpos('.')
	let result = matchstr(getline(save_cursor[1]), pat)
	"if (search(pat, 'b', save_cursor[1]) && searchpair('<','','>','bn',0,  getline('.')) > 0)
	if (search(pat, 'b', save_cursor[1]))
		normal! lyiwf>
		normal! a</
		normal! p
		normal! a>
	endif
	:call cursor(save_cursor[1], save_cursor[2], save_cursor[3])
endfunction



"===历史===
let g:undotree_DiffAutoOpen = 0
map <LEADER>l :UndotreeToggle<CR>


"===文本===
"==过滤对齐工具==
"使用 :Tabularize /|	使文本向 | 对齐,可是其他符号

"==快速选中==
"视图模式下,使用 i' 快速选中 '' 中的内容,其他: i" i) i] i} ip

"==快速注释==
"输入 <space>cc 对该行注释


"===markdon===
"==MarkdownPreview配置==
" 设置为1,nvim将在进入降价缓冲区后打开预览窗口,默认0
let g:mkdp_auto_start = 0

" 设置为1,当从降价缓冲区转换到另一个缓冲区时,nvim将自动关闭当前预览窗口,默认1
let g:mkdp_auto_close = 1

" 设置为1时,vim将在保存缓冲区时刷新markdown或从插入模式退出,默认0为自动刷新markdown,因为您编辑或移动光标,默认0
let g:mkdp_refresh_slow = 0

" 设置为1,MarkdownPreview命令可用于所有文件,默认情况下可用于markdown文件,默认0
let g:mkdp_command_for_global = 0

" 设置为1,默认情况下预览服务器可供网络中的其他人使用,服务器侦听localhost(127.0.0.1,默认0
let g:mkdp_open_to_the_world = 0

" 当您在远程vim中工作并在本地浏览器上预览时,使用自定义IP打开预览页面非常有用。详细信息请参阅:https://github.com/iamcco/markdown-preview.nvim/pull/9,默认空
let g:mkdp_open_ip = ''

" 指定浏览器打开预览页面,默认:'',firefox浏览器快熟关闭窗口需要设置:
" about:config > dom.allow_scripts_to_close_windows 将值设置为 true
let g:mkdp_browser = ''

" 设置为1,打开预览页面时,在命令行中回显预览页面url,默认0
let g:mkdp_echo_preview_url = 0

" 自定义vim函数名称打开预览页面此函数将接收url作为param,默认空
let g:mkdp_browserfunc = ''

" markdown渲染选项
" mkit: markdown-it选项
" katex: katex选项
" uml: markdown-it-plantuml选项
" maid: mermaid选项
" disable_sync_scroll: 禁用同步滚动,默认0
" sync_scroll_type: 'middle', 'top' or 'relative', default value is 'middle'
"   middle: 表示光标位置总是显示在预览页面的中间
"   top: 表示预览页面顶部的vim顶部视口总是显示
"   relative: 表示光标位置总是显示在预览页面的相对位置
" hide_yaml_meta: 隐藏yaml元数据,默认1
" sequence_diagrams: js-sequence-diagrams 选项
let g:mkdp_preview_options = {
    \ 'mkit': {},
    \ 'katex': {},
    \ 'uml': {},
    \ 'maid': {},
    \ 'disable_sync_scroll': 0,
    \ 'sync_scroll_type': 'middle',
    \ 'hide_yaml_meta': 1,
    \ 'sequence_diagrams': {}
    \ }

" 使用自定义markdown样式必须是绝对路径
let g:mkdp_markdown_css = ''

" 使用自定义高亮样式必须绝对路径
let g:mkdp_highlight_css = ''

" 使用自定义端口启动服务器或使用随机空白
let g:mkdp_port = ''

" 预览页面标题,$ {name}将替换为文件名
let g:mkdp_page_title = '「${name}」'
|
nmap <F8> <Plug>MarkdownPreview
nmap <F9> <Plug>MarkdownPreviewStop
nmap <LEADER>mt <Plug>MarkdownPreviewToggle

"==表格制作工具==
map <LEADER>tm :TableModeToggle<CR>


"===其他===
"==中文帮组==
set helplang=cn		" 启用英文的为en

"==显示按键绑定==
"nnoremap <silent> <leader> :WhichKey '<Space>'<CR>


"=====END=====
"===插件配置===
"=============

plug插件管理器相关命令

安装插件

vimrc中添加需要的插件plug内容,重载vimrc,使用命令进行安装

:PlugInstall

检查状态

:PlugStatus

更新插件

:PlugUpdate

更新plug插件管理器

:PlugUpgrade

删除插件

vimrc中的plug内容删除,重载vimrc,使用命令进行删除

PlugClean

审查插件

更新的插件可能会有新bug,需要滚回插件版本,使用该命令可查看上次PlugUpdate的更,在段落上按X将插件滚回到更新前的状态

:PlugDiff

插件的使用

NERD Tree 目录树

通过设置的映射按键(F3)启用或禁用NERD Tree

NERD Tree提供一些常用快捷键来操作目录:

YouCompleteMe & syntastic

在输入时敲入相关代码,就会自动提示代码列表,选择后按``tab`键即可补全

YouCompleteMe已经集成了Syntastic,所以出现代码语法错误,就会有红色错误提示

ctrlp

启用ctrlp

基本使用