vim插件

Vim插件

安装插件管理器

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

插件安装

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
"                               _ ____   __     _____ __  __ ____   ____
" ___ ___ _ __ _ _ _ __ ( ) ___| \ \ / /_ _| \/ | _ \ / ___|
" / _ \/ _ \| '_ \| | | | '_ \|/\___ \ \ \ / / | || |\/| | |_) | |
" | __/ (_) | | | | |_| | | | | ___) | \ 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=====
"===插件安装===
"=============
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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
"=============
"===插件配置===
"====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,使用命令进行安装

1
:PlugInstall

检查状态

1
:PlugStatus

更新插件

1
:PlugUpdate

更新plug插件管理器

1
:PlugUpgrade

删除插件

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

1
PlugClean

审查插件

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

1
:PlugDiff

插件的使用

NERD Tree 目录树

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

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

  • 通过 h、j、k、l 来移动光标
  • o 打开关闭文件或目录,如果想打开文件,必须光标移动到文件名
  • t 在标签页中打开
  • si 可以水平或纵向分割窗口打开文件
  • 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>来在提示历史中选择下一个/上一个字符串
-------------本文结束感谢阅读-------------

欢迎关注我的其它发布渠道