После поиска чего-то, если вы нажмете //
, вы, похоже, получите следующий результат. Как это отличается от n
? Как его использовать? Что соответствует //e
, и какие другие параметры существуют для //
?
Как работает команда поиска `//` в Vim?
Ответ 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
для подробного объяснения этих команд и их параметров.