Перезапись команды поиска в vim - PullRequest
1 голос
/ 12 августа 2010

Когда я пишу не код с помощью vim, мне часто приходится искать несколько слов, которые могут быть разделены новой строкой вместо пробела.

Например, я могу захотеть найти вхождения "белого дома", но в некоторых случаях может быть новая строка между "белым" и "домом".

Мне известно, что такой многострочный поиск возможен с помощью "\ _s" (например, "white \ _shouse"), но это громоздко. Я хотел бы заменить команду поиска так, чтобы пробелы обрабатывались как "\ _s", и мне не нужно было их печатать.

Возможно ли "переназначить" команду / search?

1 Ответ

1 голос
/ 12 августа 2010

У вас есть как минимум две опции:

  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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...