Есть ли в vim команда для перехода к первому результату поиска в файле (т. Е. С наименьшим номером строки)? Скажем, если я сделаю /foo
, могу ли я найти первый экземпляр foo
в файле (не начиная с того места, где я нахожусь в файле, а начиная с начала файла)?
6 ответов
ggn
приведет вас к первому поиску в файле - gg
даст вам начало файла, а n
перейдет к следующему совпадению вашего шаблона.
Вы также можете использовать gg2n
для перехода ко второму экземпляру в файле или gg42n
для перехода к сорок второму экземпляру. Вы также можете использовать G$N
для перехода к финальному совпадению (G
выводит вас на последнюю строчку, $
приводит вас к концу этой строки и N
ищет назад) или G$2N
для перехода к предпоследней.
Непонятные Ex команды для победы:
:ij[ump] foo "jumps to first foo that is not in a comment
:ij[ump]! foo "jumps to first foo, comment or not
Смотрите также :il[ist]
.
Используйте команду gg
чтобы перейти к началу файла.
gg
/foo
Команда gD будет искать в верхней части файла слово под курсором.
Связанная команда gd будет искать сверху текущей c-подобной функции.
Методы, основанные на использовании gg
и последующем поиске через /foo
или n
, хороши для интерактивного использования, но при пакетном редактировании с аргументом Vim -S
они не будут работать, если искомое слово является первым словом в файле; в этом случае ваш курсор будет установлен во второй раз.
Надежный метод - это команда ex :0/foo
. Если вы введете только адрес в команде ex, вы перейдете по этому адресу, поэтому :12
приведет вас к двенадцатой строке. ed/ex/Vim поддерживает шаблоны поиска в качестве адресов, поэтому :/foo
приведет вас к первому совпадению с позиции курсора (неявное "." в начале). :0/foo
означает «первый« foo »из нулевой строки».
Еще один крутой ярлык, если ваш курсор находится на одном из совпадений в файле:
[<C-i>
(Просто чтобы быть ясно, что это левая скобка ([), а затем control-i)
Это похоже на использование команды «*», но она идет к первому совпадению в файле, а не к следующему совпадению после курсора