当我点击时,我想列出比赛:
/example
这样我就可以一次看到所有比赛的位置。
当我点击时,我想列出比赛:
/example
这样我就可以一次看到所有比赛的位置。
Answers:
" put in your ~/.vimrc file
" START search related configs and helps
"
" ignore case when searching
set ignorecase
" search as characters are entered, as you type in more characters, the search is refined
set incsearch
" highlight matches, in normal mode try typing * or even g* when cursor on string
set hlsearch
" yank those cheat commands, in normal mode type q: than p to paste in the opened cmdline
" how-to search for a string recursively
" :grep! "\<doLogErrorMsg\>" . -r
"
" how-to search recursively , omit log and git files
" :vimgrep /srch/ `find . -type f \| grep -v .git \| grep -v .log`
" :vimgrep /srch/ `find . -type f -name '*.pm' -o -name '*.pl'`
"
" how-to search for the "srch" from the current dir recursively in the shell
" vim -c ':vimgrep /srch/ `find . -type f \| grep -v .git \| grep -v .log`'
"
" how-to highlight the after the search the searchable string
" in normmal mode press g* when the cursor is on a matched string
" how-to jump between the search matches - open the quick fix window by
" :copen 22
" how-to to close the quick fix window
" :ccl
" F5 will find the next occurrence after vimgrep
map <F5> :cp!<CR>
" F6 will find the previous occurrence after vimgrep
map <F6> :cn!<CR>
" F8 search for word under the cursor recursively , :copen , to close -> :ccl
nnoremap <F8> :grep! "\<<cword>\>" . -r<CR>:copen 33<CR>
" omit a dir from all searches to perform globally
set wildignore+=**/node_modules/**
" use perl regexes - src: http://andrewradev.com/2011/05/08/vim-regexes/
noremap / /\v
"
" STOP search related configs and helps
:g//
-由于p(rint)是默认操作,因此您也可以忽略该操作。
:g/
更短!
--context 9
?
:%s/regular-expression//gn
它将产生以下内容:X matches on Y lines
如果您想查看此列表并在比赛之间快速跳转,请考虑使用
:vimgrep example %
要么
:grep example %
这将填充“错误清单”所有的比赛,这样就可以使用:copen
它们全部列出在quickfix缓冲区,按特定线路上的输入跳转到该比赛,还是喜欢使用命令:cn
和:cp
去来回。
有关详细说明,请参阅我对类似问题的答复
E499: Empty file name for '%' or '#', only works with ":p:h"
上的MacVim 8.1
刚学了一个新的:Location List
!
键入:lvim foo %
要foo
在当前文件中进行搜索,然后将所有包含foo
的匹配项输入到位置列表中。
键入:lopen
以在快速修复窗口中打开位置列表,该窗口通常可以完全导航。
使用:lnext
/ :lprevious
来遍历列表(使用tpope /未配对映射以获得最佳体验)
g/pattern
如果您有:set number
,上述命令也会显示行号。
如果还没有的:set number
话
g/pattern/#
将显示行号。
我为此编写了一段代码。它实际上避免了的问题vimgrep
。它甚至适用于未命名的文件。而且更容易使用。
function! Matches(pat)
let buffer=bufnr("") "current buffer number
let b:lines=[]
execute ":%g/" . a:pat . "/let b:lines+=[{'bufnr':" . 'buffer' . ", 'lnum':" . "line('.')" . ", 'text': escape(getline('.'),'\"')}]"
call setloclist(0, [], ' ', {'items': b:lines})
lopen
endfunction
当您使用模式调用它时,它将打开包含所有匹配项的位置窗口。
这可能是一个命令
command! -nargs=1 Mat call Matches(<f-args>)
所以您要做的就是输入 :Mat pattern
我还使用以下映射来获取当前视觉选择的匹配项。
vnoremap Y "xy:call Matches(@x)<CR>
node_modules
?--perl正则表达式如何更改Vim的默认功能?- -下面是如何我设计我的搜索.tex文件里askubuntu.com/a/789769/25388这将是很好的向你学习如何改进它。它不是那么直观,所以我也经常忘记自己的逻辑。