2010-08-12 128 views
1

当用vim编写非代码时,我经常需要搜索多个可能被换行符而不是空格分隔的单词。在vim中覆盖搜索命令

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

我知道这样的多行搜索对于“\ _s”(例如“white \ _shouse”)是可能的,但是它很麻烦。我想替换搜索命令,以便将空格视为“\ _s”,而不必将其输出。

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

+0

muckabout:这是什么_s你是指什么?这听起来很有用...我历来使用[\ s \ n]。 *编辑* - 刚试过。你的意思是\\ _ s? – 2010-08-12 09:16:15

回答

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空格)