2010-08-12 86 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空格)