我试图谷歌如何在VIM范围内搜索并找到此链接。 Limiting search scope for code in Vim
我不会想象在VIM帮助中提供关键字“/ \%V”来搜索帮助。所以,我想知道大多数人如何从VIM帮助中获得帮助,就像在这种情况下一样。
答案 0 :(得分:1)
:help help-summary
是一个很好的文档,解释了如何搜索
我也有过同样的挫败感,但我刚刚意识到您可以使用通配符 搜索时扩展。
在您的情况下它不会有帮助,但可能如果您从 :h pattern
开始,然后在该页面中搜索与您的内容相关的关键字
努力实现你可能已经找到了。
就我而言,我正在寻找前一天晚上才访问过的页面,
:h ex-cmd-index
,(在另一台机器上,所以我无法搜索我的命令
历史)但我只记得它与 ex 命令有关,并且
那里的词索引。我花了 20 分钟试图找到它不成功(我
最终用谷歌搜索它,这样我就可以返回到 vim 并查找它......)。一世
正在尝试 ex
+ Tab
并展示了数百种可能性...
但是通过通配符扩展,我可以只执行 :h ex*index*
并点击 Tab
并且我
获得两种可能性的候选名单,('ex-cmd-index' 和 'ex-edit-index')一个
其中一个是我想要的!
所以只要你知道事物应该出现在 帮助主题,您应该能够更快地缩小可能性范围。
有一个内置命令 :helpgrep
可以将每一行匹配一个
模式到快速修复列表中。然后你可以跳过每一行
:cnext
和 cprev
命令。
fzf plugin 有命令 :Helptags
对...进行模糊搜索
帮助标签。这个很不错。
如果以上都失败了,我添加了一些功能来搜索整个 vim 的帮助文档目录中所有文件的内容(不仅仅是帮助标签) 使用 ag-silver-searcher 和 fzf。
首先是我在 fzf github repo 上的一个问题上发现的一个函数。我没有 了解它是如何工作的,但是调用此函数的命令允许我进行搜索 使用 ag 的目录内容,它将结果泵入 fzf:
" Ag: Start ag in the specified directory e.g. :Ag ~/foo
function! s:ag_in(bang, ...)
if !isdirectory(a:1)
throw 'not a valid directory: ' .. a:1
endif
" Press `?' to enable preview window.
call fzf#vim#ag(join(a:000[1:], ' '),
\ fzf#vim#with_preview({'dir': a:1}, 'right:50%', '?'), a:bang)
endfunction
" Ag call a modified version of Ag where first arg is directory to search
command! -bang -nargs=+ -complete=dir Ag call s:ag_in(<bang>0, <f-args>)
所以我写了一个函数(Help_Ag
)来调用上面的命令,并提供
包含 vim 帮助文档的目录(141 个 .txt 文件,加上一些
其他文件(自述文件、标签文件本身等)。
如果我们选择要打开的帮助页面,我们会将其设置为不可修改。我注意到
并非所有标签都有效,有些标签重定向到错误的页面(例如,像这样的标签)
*help-topic*
会带我到一个名为 help
的页面,如果光标在那个页面上
词,如果光标在该词上,则带我到 topic
,而 in
真正的帮助,我会被带到help-topic
)。我发现如果我打开真实的
帮助,标签将在使用 ag+fzf 选择的文件中开始正常运行。所以
我只是打开和关闭真正的帮助来触发这种行为(太快了
甚至看到,所以我对这个黑客很满意):
function! Help_Ag()
let orig_file = expand(@%)
let v1 = v:version[0]
let v2 = v:version[2]
" search in the help docs with ag-silver-search and fzf and open file
execute "normal! :Ag /usr/share/vim/vim".v1.v2."/doc/\<cr>"
" if we opened a help doc
if orig_file != expand(@%)
set nomodifiable
" for some reason not all the tags work unless I open the real help
" so get whichever help was found and opened through Ag
let help_doc=expand("%:t")
" open and close that help doc - now the tags will work
execute "normal! :tab :help " help_doc "\<cr>:q\<cr>"
endif
endfunction
" get some help
command! H :call Help_Ag()
答案 1 :(得分:0)
你做对了。谷歌可能是你最好的选择。您还可以使用vim帮助网站,它具有内置的搜索功能:http://vimdoc.sourceforge.net/htmldoc/