aboutsummaryrefslogtreecommitdiffhomepage
path: root/vim/init
diff options
context:
space:
mode:
Diffstat (limited to 'vim/init')
-rw-r--r--vim/init/basic.vim6
-rw-r--r--vim/init/config.vim174
-rw-r--r--vim/init/keymaps.vim183
3 files changed, 194 insertions, 169 deletions
diff --git a/vim/init/basic.vim b/vim/init/basic.vim
index 5008b2f..b843476 100644
--- a/vim/init/basic.vim
+++ b/vim/init/basic.vim
@@ -66,8 +66,8 @@ set autoindent " If current line has indent, automatically set indent for n
66set cindent 66set cindent
67set ttimeout 67set ttimeout
68set ttimeoutlen=50 68set ttimeoutlen=50
69set updatetime=500 69" set updatetime=1000
70autocmd CursorHold * normal! m' 70" autocmd CursorHold * normal! m'
71 71
72imap <C-c> <Esc>l 72imap <C-c> <Esc>l
73" Change IM to US when exit to Normal mode 73" Change IM to US when exit to Normal mode
@@ -209,7 +209,7 @@ set matchtime=2
209set display=lastline 209set display=lastline
210 210
211" 允許下方顯示目錄 211" 允許下方顯示目錄
212set wildmenu 212set wildmenu wildoptions=pum,fuzzy
213 213
214" Improve performance 214" Improve performance
215set lazyredraw 215set lazyredraw
diff --git a/vim/init/config.vim b/vim/init/config.vim
index 489521f..20beab2 100644
--- a/vim/init/config.vim
+++ b/vim/init/config.vim
@@ -10,25 +10,49 @@
10" Open help page in a new tab 10" Open help page in a new tab
11autocmd BufEnter *.txt if &filetype == 'help' | wincmd T | endif 11autocmd BufEnter *.txt if &filetype == 'help' | wincmd T | endif
12 12
13" Quickly edit html tag class 13" Automatically apply filetype by shebang
14function! s:ChangeAttr(pattern) 14function! s:ApplyShebang()
15 15 let l:filetype = matchstr(getline(1), '^#!.*[ /]\zs[[:alnum:]]\+$')
16 let l:attr = matchstr(getline('.'), a:pattern.'="') 16 let l:shebangMatch = #{node: "javascript"}
17 if l:attr == '' 17 if l:filetype != ""
18 let l:all_attrs = matchstr(getline('.'), '<[[:alnum:]]\+\zs\s\?[^>]*>\ze') 18 if has_key(shebangMatch, l:filetype)
19 execute 's/'.l:all_attrs.'/ '.a:pattern.'=""'.l:all_attrs.'/' 19 let l:filetype = shebangMatch[l:filetype]
20 noh
21 normal! 0f"l
22 startinsert
23 else
24 normal! 0
25 call search(l:attr)
26 normal! f"l
27 noh
28 startinsert
29 endif 20 endif
21 echo "filetype from shebang: ".l:filetype
22 execute "set filetype=".l:filetype
23 endif
30endfunction 24endfunction
25autocmd BufReadPost * call <SID>ApplyShebang()
26
27" For vimscript
28if executable('vim-language-server')
29 echo "set vim language server"
30 au User lsp_setup call lsp#register_server({
31 \ 'name': 'vimscript-language-server',
32 \ 'cmd': {server_info->['vimscript-language-server']},
33 \ 'whitelist': ['vim'],
34 \ })
35endif
31 36
37" html
38" Quickly edit html tag class
39function! s:ChangeAttr(pattern)
40 let l:attr = matchstr(getline('.'), a:pattern.'="')
41 if l:attr == ''
42 let l:all_attrs = matchstr(getline('.'), '<[[:alnum:]]\+\zs\s\?[^>]*>\ze')
43 execute 's/'.l:all_attrs.'/ '.a:pattern.'=""'.l:all_attrs.'/'
44 noh
45 normal! 0f"l
46 startinsert
47 else
48 normal! 0
49 call search(l:attr)
50 normal! f"l
51 noh
52 startinsert
53 endif
54endfunction
55" Edit class and id for javascript files
32autocmd FileType html nnoremap <leader>cl :call <SID>ChangeAttr("class")<CR> 56autocmd FileType html nnoremap <leader>cl :call <SID>ChangeAttr("class")<CR>
33autocmd BufLeave nunmap <leader>cl 57autocmd BufLeave nunmap <leader>cl
34autocmd FileType html nnoremap <leader>id :call <SID>ChangeAttr("id")<CR> 58autocmd FileType html nnoremap <leader>id :call <SID>ChangeAttr("id")<CR>
@@ -38,9 +62,9 @@ autocmd BufLeave nunmap <leader>id
38" 有 tmux 何没有的功能键超时(毫秒) 62" 有 tmux 何没有的功能键超时(毫秒)
39"---------------------------------------------------------------------- 63"----------------------------------------------------------------------
40if $TMUX != '' 64if $TMUX != ''
41 set ttimeoutlen=30 65 set ttimeoutlen=30
42elseif &ttimeoutlen > 80 || &ttimeoutlen <= 0 66elseif &ttimeoutlen > 80 || &ttimeoutlen <= 0
43 set ttimeoutlen=80 67 set ttimeoutlen=80
44endif 68endif
45 69
46 70
@@ -49,22 +73,22 @@ endif
49" 记得设置 ttimeout (见 init-basic.vim) 和 ttimeoutlen (上面) 73" 记得设置 ttimeout (见 init-basic.vim) 和 ttimeoutlen (上面)
50"---------------------------------------------------------------------- 74"----------------------------------------------------------------------
51if has('nvim') == 0 && has('gui_running') == 0 75if has('nvim') == 0 && has('gui_running') == 0
52 function! s:metacode(key) 76 function! s:metacode(key)
53 exec "set <M-".a:key.">=\e".a:key 77 exec "set <M-".a:key.">=\e".a:key
54 endfunc 78 endfunc
55 for i in range(10) 79 for i in range(10)
56 call s:metacode(nr2char(char2nr('0') + i)) 80 call s:metacode(nr2char(char2nr('0') + i))
57 endfor 81 endfor
58 for i in range(26) 82 for i in range(26)
59 call s:metacode(nr2char(char2nr('a') + i)) 83 call s:metacode(nr2char(char2nr('a') + i))
60 call s:metacode(nr2char(char2nr('A') + i)) 84 call s:metacode(nr2char(char2nr('A') + i))
61 endfor 85 endfor
62 for c in [',', '.', '/', ';', '{', '}'] 86 for c in [',', '.', '/', ';', '{', '}']
63 call s:metacode(c) 87 call s:metacode(c)
64 endfor 88 endfor
65 for c in ['?', ':', '-', '_', '+', '=', "'"] 89 for c in ['?', ':', '-', '_', '+', '=', "'"]
66 call s:metacode(c) 90 call s:metacode(c)
67 endfor 91 endfor
68endif 92endif
69 93
70 94
@@ -72,9 +96,9 @@ endif
72" 终端下功能键设置 96" 终端下功能键设置
73"---------------------------------------------------------------------- 97"----------------------------------------------------------------------
74function! s:key_escape(name, code) 98function! s:key_escape(name, code)
75 if has('nvim') == 0 && has('gui_running') == 0 99 if has('nvim') == 0 && has('gui_running') == 0
76 exec "set ".a:name."=\e".a:code 100 exec "set ".a:name."=\e".a:code
77 endif 101 endif
78endfunc 102endfunc
79 103
80 104
@@ -104,10 +128,10 @@ call s:key_escape('<S-F12>', '[24;2~')
104" Refer: http://sunaku.github.io/vim-256color-bce.html 128" Refer: http://sunaku.github.io/vim-256color-bce.html
105"---------------------------------------------------------------------- 129"----------------------------------------------------------------------
106if &term =~ '256color' && $TMUX != '' 130if &term =~ '256color' && $TMUX != ''
107 " disable Background Color Erase (BCE) so that color schemes 131 " disable Background Color Erase (BCE) so that color schemes
108 " render properly when inside 256-color tmux and GNU screen. 132 " render properly when inside 256-color tmux and GNU screen.
109 " see also http://snk.tuxfamily.org/log/vim-256color-bce.html 133 " see also http://snk.tuxfamily.org/log/vim-256color-bce.html
110 set t_ut= 134 set t_ut=
111endif 135endif
112 136
113 137
@@ -143,26 +167,26 @@ silent! call mkdir(expand('~/.vim/tmp'), "p", 0755)
143" 会令一些支持 xterm 不完全的终端解析错误,显示为错误的字符,比如 q 字符 167" 会令一些支持 xterm 不完全的终端解析错误,显示为错误的字符,比如 q 字符
144" 如果你确认你的终端支持,不会在一些不兼容的终端上运行该配置,可以注释 168" 如果你确认你的终端支持,不会在一些不兼容的终端上运行该配置,可以注释
145if has('nvim') 169if has('nvim')
146 set guicursor= 170 set guicursor=
147elseif (!has('gui_running')) && has('terminal') && has('patch-8.0.1200') 171elseif (!has('gui_running')) && has('terminal') && has('patch-8.0.1200')
148 let g:termcap_guicursor = &guicursor 172 let g:termcap_guicursor = &guicursor
149 let g:termcap_t_RS = &t_RS 173 let g:termcap_t_RS = &t_RS
150 let g:termcap_t_SH = &t_SH 174 let g:termcap_t_SH = &t_SH
151 set guicursor= 175 set guicursor=
152 set t_RS= 176 set t_RS=
153 set t_SH= 177 set t_SH=
154endif 178endif
155 179
156" 打开文件时恢复上一次光标所在位置 180" 打开文件时恢复上一次光标所在位置
157autocmd BufReadPost * 181autocmd BufReadPost *
158 \ if line("'\"") > 1 && line("'\"") <= line("$") | 182 \ if line("'\"") > 1 && line("'\"") <= line("$") |
159 \ exe "normal! g`\"" | 183 \ exe "normal! g`\"" |
160 \ endif 184 \ endif
161 185
162" 定义一个 DiffOrig 命令用于查看文件改动 186" 定义一个 DiffOrig 命令用于查看文件改动
163if !exists(":DiffOrig") 187if !exists(":DiffOrig")
164 command DiffOrig vert new | set bt=nofile | r ++edit # | 0d_ | diffthis 188 command DiffOrig vert new | set bt=nofile | r ++edit # | 0d_ | diffthis
165 \ | wincmd p | diffthis 189 \ | wincmd p | diffthis
166endif 190endif
167 191
168 192
@@ -172,16 +196,16 @@ endif
172"---------------------------------------------------------------------- 196"----------------------------------------------------------------------
173augroup InitFileTypesGroup 197augroup InitFileTypesGroup
174 198
175 " 清除同组的历史 autocommand 199 " 清除同组的历史 autocommand
176 au! 200 au!
177 201
178 " C/C++ 文件使用 // 作为注释 202 " C/C++ 文件使用 // 作为注释
179 au FileType c,cpp setlocal commentstring=//\ %s 203 au FileType c,cpp setlocal commentstring=//\ %s
180 204
181 " markdown 允许自动换行 205 " markdown 允许自动换行
182 au FileType markdown setlocal wrap 206 au FileType markdown setlocal wrap
183 au FileType markdown set sw=2 207 au FileType markdown set sw=2
184 au FileType markdown set ts=2 208 au FileType markdown set ts=2
185 209
186 " Fold markdown by heading level 210 " Fold markdown by heading level
187 function MarkdownLevel() 211 function MarkdownLevel()
@@ -195,24 +219,24 @@ augroup InitFileTypesGroup
195 au FileType markdown setlocal foldexpr=MarkdownLevel() 219 au FileType markdown setlocal foldexpr=MarkdownLevel()
196 au FileType markdown setlocal foldmethod=expr 220 au FileType markdown setlocal foldmethod=expr
197 221
198 " lisp 进行微调 222 " lisp 进行微调
199 au FileType lisp setlocal ts=8 sts=2 sw=2 et 223 au FileType lisp setlocal ts=8 sts=2 sw=2 et
200 224
201 " scala 微调 225 " scala 微调
202 au FileType scala setlocal sts=4 sw=4 noet 226 au FileType scala setlocal sts=4 sw=4 noet
203 227
204 " haskell 进行微调 228 " haskell 进行微调
205 au FileType haskell setlocal et 229 au FileType haskell setlocal et
206 230
207 " quickfix 隐藏行号 231 " quickfix 隐藏行号
208 au FileType qf setlocal nonumber 232 au FileType qf setlocal nonumber
209 233
210 " 强制对某些扩展名的 filetype 进行纠正 234 " 强制对某些扩展名的 filetype 进行纠正
211 au BufNewFile,BufRead *.as setlocal filetype=actionscript 235 au BufNewFile,BufRead *.as setlocal filetype=actionscript
212 au BufNewFile,BufRead *.pro setlocal filetype=prolog 236 au BufNewFile,BufRead *.pro setlocal filetype=prolog
213 au BufNewFile,BufRead *.es setlocal filetype=erlang 237 au BufNewFile,BufRead *.es setlocal filetype=erlang
214 au BufNewFile,BufRead *.asc setlocal filetype=asciidoc 238 au BufNewFile,BufRead *.asc setlocal filetype=asciidoc
215 au BufNewFile,BufRead *.vl setlocal filetype=verilog 239 au BufNewFile,BufRead *.vl setlocal filetype=verilog
216 au BufRead /tmp/mutt-* set tw=72 240 au BufRead /tmp/mutt-* set tw=72
217 241
218augroup END 242augroup END
diff --git a/vim/init/keymaps.vim b/vim/init/keymaps.vim
index ff4821e..dc7f616 100644
--- a/vim/init/keymaps.vim
+++ b/vim/init/keymaps.vim
@@ -128,7 +128,8 @@ vnoremap so :source<CR>
128"---------------------------------------------------------------------- 128"----------------------------------------------------------------------
129" MANAGE_VIMRC 129" MANAGE_VIMRC
130"---------------------------------------------------------------------- 130"----------------------------------------------------------------------
131nnoremap <leader>e :edit $MYVIMRC<CR> 131nnoremap <leader>e :scriptnames<space>
132nnoremap <leader>ee :edit $MYVIMRC<CR>
132autocmd! BUFWRITEPOST $MYVIMRC source $MYVIMRC 133autocmd! BUFWRITEPOST $MYVIMRC source $MYVIMRC
133 134
134 135
@@ -227,16 +228,16 @@ map <leader>te :tabedit <C-r>=expand("%:p:h")<cr>
227 228
228" Tab move functions 229" Tab move functions
229function! Tab_MoveLeft() 230function! Tab_MoveLeft()
230 let l:tabnr = tabpagenr() - 2 231 let l:tabnr = tabpagenr() - 2
231 if l:tabnr >= 0 232 if l:tabnr >= 0
232 exec 'tabmove '.l:tabnr 233 exec 'tabmove '.l:tabnr
233 endif 234 endif
234endfunc 235endfunc
235function! Tab_MoveRight() 236function! Tab_MoveRight()
236 let l:tabnr = tabpagenr() + 1 237 let l:tabnr = tabpagenr() + 1
237 if l:tabnr <= tabpagenr('$') 238 if l:tabnr <= tabpagenr('$')
238 exec 'tabmove '.l:tabnr 239 exec 'tabmove '.l:tabnr
239 endif 240 endif
240endfunc 241endfunc
241 242
242 243
@@ -283,22 +284,22 @@ vnoremap Q <ESC>`<i「<ESC>`>la」<ESC>
283" :Redir !ls -al ........ show the full output of command ':!ls -al' in a scratch window 284" :Redir !ls -al ........ show the full output of command ':!ls -al' in a scratch window
284" 285"
285function! Redir(cmd) 286function! Redir(cmd)
286 for win in range(1, winnr('$')) 287 for win in range(1, winnr('$'))
287 if getwinvar(win, 'scratch') 288 if getwinvar(win, 'scratch')
288 execute win . 'windo close' 289 execute win . 'windo close'
289 endif 290 endif
290 endfor 291 endfor
291 if a:cmd =~ '^!' 292 if a:cmd =~ '^!'
292 let output = system(matchstr(a:cmd, '^!\zs.*')) 293 let output = system(matchstr(a:cmd, '^!\zs.*'))
293 else 294 else
294 redir => output 295 redir => output
295 execute a:cmd 296 execute a:cmd
296 redir END 297 redir END
297 endif 298 endif
298 vnew 299 vnew
299 let w:scratch = 1 300 let w:scratch = 1
300 setlocal buftype=nofile bufhidden=wipe nobuflisted noswapfile 301 setlocal buftype=nofile bufhidden=wipe nobuflisted noswapfile
301 call setline(1, split(output, "\n")) 302 call setline(1, split(output, "\n"))
302endfunction 303endfunction
303 304
304command! -nargs=1 -complete=command Redir silent call Redir(<q-args>) 305command! -nargs=1 -complete=command Redir silent call Redir(<q-args>)
@@ -340,22 +341,22 @@ inoremap <m-J> <esc><c-w>j
340inoremap <m-K> <esc><c-w>k 341inoremap <m-K> <esc><c-w>k
341 342
342if has('terminal') && exists(':terminal') == 2 && has('patch-8.1.1') 343if has('terminal') && exists(':terminal') == 2 && has('patch-8.1.1')
343 " vim 8.1 支持 termwinkey ,不需要把 terminal 切换成 normal 模式 344 " vim 8.1 支持 termwinkey ,不需要把 terminal 切换成 normal 模式
344 " 设置 termwinkey 为 CTRL 加减号(GVIM),有些终端下是 CTRL+? 345 " 设置 termwinkey 为 CTRL 加减号(GVIM),有些终端下是 CTRL+?
345 " 后面四个键位是搭配 termwinkey 的,如果 termwinkey 更改,也要改 346 " 后面四个键位是搭配 termwinkey 的,如果 termwinkey 更改,也要改
346 set termwinkey=<c-_> 347 set termwinkey=<c-_>
347 tnoremap <m-H> <c-_>h 348 tnoremap <m-H> <c-_>h
348 tnoremap <m-L> <c-_>l 349 tnoremap <m-L> <c-_>l
349 tnoremap <m-J> <c-_>j 350 tnoremap <m-J> <c-_>j
350 tnoremap <m-K> <c-_>k 351 tnoremap <m-K> <c-_>k
351 tnoremap <m-q> <c-\><c-n> 352 tnoremap <m-q> <c-\><c-n>
352elseif has('nvim') 353elseif has('nvim')
353 " neovim 没有 termwinkey 支持,必须把 terminal 切换回 normal 模式 354 " neovim 没有 termwinkey 支持,必须把 terminal 切换回 normal 模式
354 tnoremap <m-H> <c-\><c-n><c-w>h 355 tnoremap <m-H> <c-\><c-n><c-w>h
355 tnoremap <m-L> <c-\><c-n><c-w>l 356 tnoremap <m-L> <c-\><c-n><c-w>l
356 tnoremap <m-J> <c-\><c-n><c-w>j 357 tnoremap <m-J> <c-\><c-n><c-w>j
357 tnoremap <m-K> <c-\><c-n><c-w>k 358 tnoremap <m-K> <c-\><c-n><c-w>k
358 tnoremap <m-q> <c-\><c-n> 359 tnoremap <m-q> <c-\><c-n>
359endif 360endif
360 361
361 362
@@ -394,7 +395,7 @@ nnoremap <silent> <F4> :AsyncRun -cwd=<root> cmake . <cr>
394 395
395" Windows 下支持直接打开新 cmd 窗口运行 396" Windows 下支持直接打开新 cmd 窗口运行
396if has('win32') || has('win64') 397if has('win32') || has('win64')
397 nnoremap <silent> <F8> :AsyncRun -cwd=<root> -mode=4 make run <cr> 398 nnoremap <silent> <F8> :AsyncRun -cwd=<root> -mode=4 make run <cr>
398endif 399endif
399 400
400 401
@@ -402,45 +403,45 @@ endif
402" F5 运行当前文件:根据文件类型判断方法,并且输出到 quickfix 窗口 403" F5 运行当前文件:根据文件类型判断方法,并且输出到 quickfix 窗口
403"---------------------------------------------------------------------- 404"----------------------------------------------------------------------
404function! ExecuteFile() 405function! ExecuteFile()
405 let cmd = '' 406 let cmd = ''
406 if index(['c', 'cpp', 'rs', 'go'], &ft) >= 0 407 if index(['c', 'cpp', 'rs', 'go'], &ft) >= 0
407 " native 语言,把当前文件名去掉扩展名后作为可执行运行 408 " native 语言,把当前文件名去掉扩展名后作为可执行运行
408 " 写全路径名是因为后面 -cwd=? 会改变运行时的当前路径,所以写全路径 409 " 写全路径名是因为后面 -cwd=? 会改变运行时的当前路径,所以写全路径
409 " 加双引号是为了避免路径中包含空格 410 " 加双引号是为了避免路径中包含空格
410 let cmd = '"$(VIM_FILEDIR)/$(VIM_FILENOEXT)"' 411 let cmd = '"$(VIM_FILEDIR)/$(VIM_FILENOEXT)"'
411 elseif &ft == 'python' 412 elseif &ft == 'python'
412 let $PYTHONUNBUFFERED=1 " 关闭 python 缓存,实时看到输出 413 let $PYTHONUNBUFFERED=1 " 关闭 python 缓存,实时看到输出
413 let cmd = 'python "$(VIM_FILEPATH)"' 414 let cmd = 'python "$(VIM_FILEPATH)"'
414 elseif &ft == 'javascript' 415 elseif &ft == 'javascript'
415 let cmd = 'node "$(VIM_FILEPATH)"' 416 let cmd = 'node "$(VIM_FILEPATH)"'
416 elseif &ft == 'perl' 417 elseif &ft == 'perl'
417 let cmd = 'perl "$(VIM_FILEPATH)"' 418 let cmd = 'perl "$(VIM_FILEPATH)"'
418 elseif &ft == 'ruby' 419 elseif &ft == 'ruby'
419 let cmd = 'ruby "$(VIM_FILEPATH)"' 420 let cmd = 'ruby "$(VIM_FILEPATH)"'
420 elseif &ft == 'php' 421 elseif &ft == 'php'
421 let cmd = 'php "$(VIM_FILEPATH)"' 422 let cmd = 'php "$(VIM_FILEPATH)"'
422 elseif &ft == 'lua' 423 elseif &ft == 'lua'
423 let cmd = 'lua "$(VIM_FILEPATH)"' 424 let cmd = 'lua "$(VIM_FILEPATH)"'
424 elseif &ft == 'zsh' 425 elseif &ft == 'zsh'
425 let cmd = 'zsh "$(VIM_FILEPATH)"' 426 let cmd = 'zsh "$(VIM_FILEPATH)"'
426 elseif &ft == 'ps1' 427 elseif &ft == 'ps1'
427 let cmd = 'powershell -file "$(VIM_FILEPATH)"' 428 let cmd = 'powershell -file "$(VIM_FILEPATH)"'
428 elseif &ft == 'vbs' 429 elseif &ft == 'vbs'
429 let cmd = 'cscript -nologo "$(VIM_FILEPATH)"' 430 let cmd = 'cscript -nologo "$(VIM_FILEPATH)"'
430 elseif &ft == 'sh' 431 elseif &ft == 'sh'
431 let cmd = 'bash "$(VIM_FILEPATH)"' 432 let cmd = 'bash "$(VIM_FILEPATH)"'
432 else 433 else
433 return 434 return
434 endif 435 endif
435 " Windows 下打开新的窗口 (-mode=4) 运行程序,其他系统在 quickfix 运行 436 " Windows 下打开新的窗口 (-mode=4) 运行程序,其他系统在 quickfix 运行
436 " -raw: 输出内容直接显示到 quickfix window 不匹配 errorformat 437 " -raw: 输出内容直接显示到 quickfix window 不匹配 errorformat
437 " -save=2: 保存所有改动过的文件 438 " -save=2: 保存所有改动过的文件
438 " -cwd=$(VIM_FILEDIR): 运行初始化目录为文件所在目录 439 " -cwd=$(VIM_FILEDIR): 运行初始化目录为文件所在目录
439 if has('win32') || has('win64') 440 if has('win32') || has('win64')
440 exec 'AsyncRun -cwd=$(VIM_FILEDIR) -raw -save=2 -mode=4 '. cmd 441 exec 'AsyncRun -cwd=$(VIM_FILEDIR) -raw -save=2 -mode=4 '. cmd
441 else 442 else
442 exec 'AsyncRun -cwd=$(VIM_FILEDIR) -raw -save=2 -mode=0 '. cmd 443 exec 'AsyncRun -cwd=$(VIM_FILEDIR) -raw -save=2 -mode=0 '. cmd
443 endif 444 endif
444endfunc 445endfunc
445 446
446 447
@@ -452,17 +453,17 @@ endfunc
452" 下面进行 grep,这样能方便的对相关项目进行搜索 453" 下面进行 grep,这样能方便的对相关项目进行搜索
453"---------------------------------------------------------------------- 454"----------------------------------------------------------------------
454if executable('rg') 455if executable('rg')
455 noremap <silent><F2> :AsyncRun! -cwd=<root> rg -n --no-heading 456 noremap <silent><F2> :AsyncRun! -cwd=<root> rg -n --no-heading
456 \ --color never -g *.h -g *.c* -g *.py -g *.js -g *.vim 457 \ --color never -g *.h -g *.c* -g *.py -g *.js -g *.vim
457 \ <C-R><C-W> "<root>" <cr> 458 \ <C-R><C-W> "<root>" <cr>
458elseif has('win32') || has('win64') 459elseif has('win32') || has('win64')
459 noremap <silent><F2> :AsyncRun! -cwd=<root> findstr /n /s /C:"<C-R><C-W>" 460 noremap <silent><F2> :AsyncRun! -cwd=<root> findstr /n /s /C:"<C-R><C-W>"
460 \ "\%CD\%\*.h" "\%CD\%\*.c*" "\%CD\%\*.py" "\%CD\%\*.js" 461 \ "\%CD\%\*.h" "\%CD\%\*.c*" "\%CD\%\*.py" "\%CD\%\*.js"
461 \ "\%CD\%\*.vim" 462 \ "\%CD\%\*.vim"
462 \ <cr> 463 \ <cr>
463else 464else
464 noremap <silent><F2> :AsyncRun! -cwd=<root> grep -n -s -R <C-R><C-W> 465 noremap <silent><F2> :AsyncRun! -cwd=<root> grep -n -s -R <C-R><C-W>
465 \ --include='*.h' --include='*.c*' --include='*.py' 466 \ --include='*.h' --include='*.c*' --include='*.py'
466 \ --include='*.js' --include='*.vim' 467 \ --include='*.js' --include='*.vim'
467 \ '<root>' <cr> 468 \ '<root>' <cr>
468endif 469endif