在VIM中使用视觉选择进行搜索?

twh00eeo  于 2023-01-21  发布在  其他
关注(0)|答案(5)|浏览(135)

我想

  • 用可视模式选择一个单词
  • 按下一个键搜索所选单词
bxjv4tth

bxjv4tth1#

Search for selection in vim中对此进行了解释。
1.使用可视选择来选择文本,例如v
1.拉它,y
1.搜索,/
1.使用<C-r>0(Ctrlr+0)粘贴最后一个拖动的文本
实际插入寄存器0的内容,参见:h i_ctrl-r(由于注解中的romainl
另一个示例是使用命令行:
1.使用可视选择来选择文本,例如v
1.拉它,y
1.通过编辑Ex命令q/进入命令行模式
1.粘贴拖动的文本p,然后按Enter进行搜索
简而言之:yq/p<Enter>

kjthegm6

kjthegm62#

哦,伙计,实际上你可以使用强大的视觉搜索,它是由 * 实用Vim* 一书的作者发明的。
只需将以下内容添加到您的vimrc中,

xnoremap * :<C-u>call <SID>VSetSearch()<CR>/<C-R>=@/<CR><CR>
xnoremap # :<C-u>call <SID>VSetSearch()<CR>?<C-R>=@/<CR><CR>

function! s:VSetSearch()
    let temp = @s
    norm! gv"sy
    let @/ = '\V' . substitute(escape(@s, '/\'), '\n', '\\n','g')
    let @s = temp
endfunction

直观的选择你要做搜索的内容,然后按星星*,瞧!

njthzxwz

njthzxwz3#

Bairui/Dahu的SearchParty有两个漂亮的Map,它们建立在“yank and insert”方法的基础上,但可以干净地处理换行符等问题:

* Searches for the next occurrence of the currently selected visual text.

# Searches for the prior occurrence of the currently selected visual text.

& Starts a :substitute using the currently selected visual text.

如果你觉得某个插件有些过头了,很容易从脚本中取出相关的代码行并将其放入你的~/.vimrc中。

az31mfrm

az31mfrm4#

要同时搜索多个单词,vim搜索支持或'|'。因此,要搜索dog cat和bird,您可以:

/dog\|cat\|bird

或更好(精确单词匹配):

/\<dog\>\|\<cat\>\|\<bird\>
klh5stk1

klh5stk15#

不知道为什么@romainl reply没有得到更多的upvoted,它更快,自动转义会搞砸搜索的字符,还有香草vim,结合cgn后跟.,它是那些在vscode中错过Ctrl-d的完美替代品。

相关问题