Точный поиск выделенной многострочной строки в vim - PullRequest
0 голосов
/ 05 июля 2018

У меня есть буфер. В этом буфере существует строка, которая занимает несколько строк:

asdf
qrughatuxlnjtzu
... tens more lines...

У меня есть один экземпляр этой строки, легко доступный под моим курсором. Я хочу найти других экземпляров этой многострочной строки в том же буфере без необходимости вручную копировать / редактировать значительные части указанной многострочной строки в командном буфере (примечание: замена строк новой строкой на их эквиваленты в регулярном выражении вручную - это существенное редактирование ).

Я пытался использовать Как искать выбранный текст? (визуальный выбор -> yank -> буфер команд) + Точное совпадение строк в vim? (Подобно режиму 'regex-off' в less.) (дословный поиск), но подходы не работают для нескольких строк.

Как выполнить точный многострочный поиск выбранной строки в Vim?

Ответы [ 3 ]

0 голосов
/ 05 июля 2018

В зависимости от символов новой строки, которые есть в вашем файле, вы также можете включить символы конца строки в свой поиск,

например. для окончаний строк Unix вы можете искать

/asdf\nqrughatuxlnjtzu$

для оконных линий окон вы бы использовали \r\n.

Символ $, приведенный выше, будет искать в конце строки, поэтому исключит любые окончания строки, но это необходимо, чтобы избежать совпадения в таких строках, как

asdf
qrughatuxlnjtzuNotToBeMatched

Также см. http://vim.wikia.com/wiki/Search_across_multiple_lines

0 голосов
/ 05 июля 2018
nnoremap <your keys> :<c-u>let @/=@"<cr>gvy:let [@/,@"]=[@",@/]<cr>/\V<c-r>=substitute(escape(@/,'/\'),'\n','\\n','g')<cr><cr>

Затем визуально выделите строки с помощью V (или v для части строк), а затем нажмите <ESC> и <your keys>.

Источник: здесь (см. Ответ @Peter Rincker).

0 голосов
/ 05 июля 2018

Вы можете просто искать с \n в качестве новой строки:

/asdf\nqrughatuxlnjtzu
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...