Подтвердить что ты не робот

Как работает команда поиска `//` в Vim?

После поиска чего-то, если вы нажмете //, вы, похоже, получите следующий результат. Как это отличается от n? Как его использовать? Что соответствует //e, и какие другие параметры существуют для //?

4b9b3361

Ответ 1

Команда поиска имеет следующий формат:

/pattern/offset<cr>

Если часть pattern не указана, поиск ищет последний шаблон, который был найден. Если смещение не указано, смещение не применяется. Смещение в основном, что делать с курсором, когда вы нашли свой элемент pattern.

Большинство пользователей vi знакомы с изменением без смещения, /pax<cr> и повторением последнего поиска /<cr>, что эквивалентно n.

В ваших конкретных примерах //<cr> совпадает с /<cr>, и это означает, что вы повторите последний поиск и не применяете смещение.

С другой стороны, //e<cr> означает повторить последний поиск и переместить курсор в конец найденного элемента. Смещения:

[num]         [num] lines downwards, in column 1
+[num]        [num] lines downwards, in column 1
-[num]        [num] lines upwards, in column 1
e[+num]       [num] characters to the right of the end of the match
e[-num]       [num] characters to the left of the end of the match
s[+num]       [num] characters to the right of the start of the match
s[-num]       [num] characters to the left of the start of the match
b[+num]       [num] identical to s[+num] above (mnemonic: begin)
b[-num]       [num] identical to s[-num] above (mnemonic: begin)
;{pattern}    perform another search, see |//;|

A плюс или минус без num использует 1.

Ответ 2

Одна из приятных функций // заключается в том, что вы можете использовать ее с помощью команды s. Поэтому, если вы первоначально искали /Foo, а затем решили заменить его на Bar, вы можете сделать это, не повторяя шаблон. Просто сделайте :%s//Bar/g

Очевидно, что это намного более полезно, если шаблон немного сложнее.

Ответ 3

//<CR> означает повтор поиска последнего шаблона без смещения.

//e<CR> означает повторить поиск последнего паттерна, но приземлиться в конце матча.

n совпадает с /<CR> тем, что использует последний шаблон и последнее смещение, однако n сохраняет последнее направление, а / всегда находит следующее совпадение.

См. :h last-pattern и :h search-offset для подробного объяснения этих команд и их параметров.