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
提供一些常用快捷键来操作目录:
- 通过
h、j、k、l
来移动光标 o
打开关闭文件或目录,如果想打开文件,必须光标移动到文件名t
在标签页中打开s
和i
可以水平或纵向分割窗口打开文件p
到上层目录P
到根目录K
到同目录第一个节点P
到同目录最后一个节点
YouCompleteMe & syntastic
在输入时敲入相关代码,就会自动提示代码列表,选择后按``tab`键即可补全
YouCompleteMe
已经集成了Syntastic,所以出现代码语法错误,就会有红色错误提示
ctrlp
启用ctrlp
- 运行命令
:CtrlP
或:CtrlP [starting-directory]
来以查找文件模式来启用ctrlp - 运行命令
:CtrlPBuffer
或:CtrlPMRU
来以查找缓冲或最近打开文件模式来启用ctrlp - 运行命令
CtrlPMixed
来查找文件、查找缓冲和最近打开文件混合模式来启动ctrlp
基本使用
- 按
<c-f>
和<c-b>
在三种查找模式中互相切换 - 按
<c-y>
来创建新文件和对应的父目录 - 按
<c-d>
来切换到只查找文件名而不是全路径 - 按
<c-j>
,<c-k>
或箭头方向键来移动查找结果列表 - 按
<c-t>
或<c-v>
,<c-x>
来以新标签或分割窗口的方式来打开文件 - 按
<c-z>
来标识或取消标识文件,然后按<c-o>
来打开文件 - 按
<c-n>
,<c-p>
来在提示历史中选择下一个/上一个字符串