在vim中覆盖搜索命令

时间:2010-08-12 09:11:32

标签: vim

使用vim编写非代码时,我经常需要搜索可能由换行符而不是空格分隔的多个单词。

例如,我可能想要搜索“白宫”的出现,但有些事件可能在“白色”和“房子”之间有换行符。

我知道使用“\ _s”(例如“white \ _shouse”)可以进行这种多行搜索,但这很麻烦。我想替换搜索命令,以便将空格视为“\ _s”,而不必将其键入。

是否可以“重新映射”/ search命令?

1 个答案:

答案 0 :(得分:1)

您至少有两个选择:

  1. 定义将重新映射的映射,例如,s\_s,s更容易输入:
        cnoremap ,t \\_s
    
  2. 定义一个自定义搜索功能,用\s替换所有出现的\_s并使用它:
        function Search(prompt)
            let searchstring=substitute(input(a:prompt), '\\\\s', '\\\\_s', 'g')
            return a:prompt.searchstring."\n"
        endfunction
        nnoremap <expr> <special> / Search('/')
    
    甚至
        function Search(prompt)
            let searchstring=substitute(input(a:prompt), ' ', '\\\\_s', 'g')
            return a:prompt.searchstring."\n"
        endfunction
        nnoremap <expr> <special> / Search('/')
    
    (此函数用\_s
  3. 替换空格