Для поиска вперед в Vim cake, я бы набрал /cake, но курсор переходит к первому совпадению, когда я нажимаю return. Есть ли команда Vim, аналогичная команде «найти следующее»?
Привыкайте к использованию :help. :help /показывает справку о поиске, и ответ на ваш вопрос появляется чуть-чуть вниз по странице.
Крис Морган
Ответы:
878
Это nдля следующего и Nдля предыдущего.
И если вы используете обратный поиск с ?(например, ?cake) вместо /, это наоборот.
Если он установлен в вашей системе, вы должны попытаться запустить vimtutorкоманду с вашего терминала, которая запустит учебник по основным командам Vim.
Есть ли способ перейти к следующему совпадению (не в текущей строке)?
user13107
@ user13107: n и N работают на весь буфер / файл. Вы не ограничены текущей строкой.
Ксавье Т.
@XavierT. Любая идея, как я могу перейти на фиксированное количество результатов в поиске. Я имею в виду, например, перейти к 10-й линии соответствия
GP cyborg
@GPcyborg: nкак и у большинства операторов vim, для повторения команды можно добавить префикс с номером. Если вы введете текст, 10nон перейдет к 10-му результату (после исходного). Это также работает для всех операторов движения, как 3jспуститься на 3 строки.
Ксавье Т.
212
Самый полезный ярлык в Vim, IMHO, это *ключ.
Поместите курсор на слово и нажмите *клавишу, и вы перейдете к следующему экземпляру этого слова.
#Ключ делает то же самое, но он переходит к предыдущему примеру слова.
И в случае, если это не было очевидно, nи Nпроведет вас вперед и назад по *матчам, как только вы нажали *. (Или вы можете просто нажимать, *чтобы идти вперед или #назад, но использование этих сдвинутых клавиш, как правило, неоптимально.)
Герберт Ситц,
3
@ Херберт, на самом деле n и N не ведут вас вперед и назад. Как отмечалось выше @Xavier, n является следующим, а N является предыдущим . Управление поиском вперед и назад осуществляется путем указания поиска клавишей «/» и «?» или с помощью клавиши «*» и клавиши «#».
Роб Уэллс
Я не думаю, что * это полезно ... большую часть времени я ищу фрагмент слова (например, часть имени функции). Я не хочу, чтобы /Funcон взял меня, SomeFuncа затем нажмите «*», чтобы перейти к следующему экземпляру, SomeFuncкогда следующий экземпляр Funcнаходится в SomeOtherFunc.
weberc2
Еще хуже то, что с C ++ я считаю, что это не идет от вызова метода к реализации метода, потому /\<foo\>что не совпадает"className::foo()"
Печатание *неверно. Т.е. файл aa aaa. Поиск /aa, вы должны совпадать. При первом совпадении нажатие *меняет условие поиска.
Бернхард
1
n не «следующий», а «повторить последний поиск». Таким образом, ввод? Var начнет поиск вверх от вашей текущей позиции для 'var'. И «N» на самом деле «повторяет последний поиск в противоположном направлении», так что для этого примера, который будет искать вниз «var» с текущей позиции.
Как уже говорилось, есть несколько способов поиска:
/pattern
?pattern
* (and g*, which I sometimes use in macros)
# (and g#)
плюс, навигация назад / вперед с помощью Nи n.
Вы также можете отредактировать / вызвать историю поиска, открыв строку поиска с помощью, /а затем циклически нажав C-p/ C-n. Еще более полезным является то q/, что вы попадете в окно, где вы можете перемещаться по истории поиска.
Также для рассмотрения является все важное 'hlsearch'(тип, :hlsчтобы включить). Это значительно упрощает поиск нескольких экземпляров вашего шаблона. Возможно, вы даже захотите сделать ваши спички более яркими, например:
hi Search ctermfg=yellow ctermbg=red guifg=...
Но тогда вы можете сойти с ума от постоянных желтых матчей по всему экрану. Так что вы часто будете использовать :noh. Это так часто, что отображение в порядке:
nmap <leader>z :noh<CR>
Я легко запоминаю этот, zпоскольку я постоянно печатал /zz<CR>(что является необычным быстрым вводом), чтобы очистить подсветку. Но :nohотображение намного лучше.
Если вы чувствуете себя вдохновленным q/, вы также должны поиграть с q:. Оба действительно удобны! (Хотя на самом деле не имеет отношения к этому вопросу.)
Мика Эллиотт
Спасибо, Михей. Я уже знал о «q:», хотя я не так часто его использую. Но «q /» был полностью пропущен в моем образовании vim, и я думаю, что он будет очень полезен.
Конюшня
2
Если вы нажмете Ctrl+ Enterпосле того, как нажмете что-то вроде «/ wordforsearch», то вы можете найти слово «wordforsearch» в текущей строке. Затем нажмите nдля следующего матча; нажмите Nдля предыдущего матча.
:help
.:help /
показывает справку о поиске, и ответ на ваш вопрос появляется чуть-чуть вниз по странице.Ответы:
Это nдля следующего и Nдля предыдущего.
И если вы используете обратный поиск с
?
(например,?cake
) вместо/
, это наоборот.Если он установлен в вашей системе, вы должны попытаться запустить
vimtutor
команду с вашего терминала, которая запустит учебник по основным командам Vim.Rob Wells советы о том, *и #это тоже очень уместны.
источник
n
как и у большинства операторов vim, для повторения команды можно добавить префикс с номером. Если вы введете текст,10n
он перейдет к 10-му результату (после исходного). Это также работает для всех операторов движения, как3j
спуститься на 3 строки.Самый полезный ярлык в Vim, IMHO, это *ключ.
Поместите курсор на слово и нажмите *клавишу, и вы перейдете к следующему экземпляру этого слова.
#Ключ делает то же самое, но он переходит к предыдущему примеру слова.
Это действительно экономит время.
источник
n
иN
проведет вас вперед и назад по*
матчам, как только вы нажали*
. (Или вы можете просто нажимать,*
чтобы идти вперед или#
назад, но использование этих сдвинутых клавиш, как правило, неоптимально.)/Func
он взял меня,SomeFunc
а затем нажмите «*», чтобы перейти к следующему экземпляру,SomeFunc
когда следующий экземплярFunc
находится вSomeOtherFunc
./\<foo\>
что не совпадает"className::foo()"
Когда я начинал, мне нужно было посмотреть демо .
Как искать в Vim
/
источник
*
неверно. Т.е. файлaa aaa
. Поиск/aa
, вы должны совпадать. При первом совпадении нажатие*
меняет условие поиска.Возможно, вы ищете nключ.
источник
Печатание nпойдет на следующий матч.
источник
Как уже говорилось, есть несколько способов поиска:
плюс, навигация назад / вперед с помощью Nи n.
Вы также можете отредактировать / вызвать историю поиска, открыв строку поиска с помощью,
/
а затем циклически нажавC-p
/C-n
. Еще более полезным является тоq/
, что вы попадете в окно, где вы можете перемещаться по истории поиска.Также для рассмотрения является все важное
'hlsearch'
(тип,:hls
чтобы включить). Это значительно упрощает поиск нескольких экземпляров вашего шаблона. Возможно, вы даже захотите сделать ваши спички более яркими, например:Но тогда вы можете сойти с ума от постоянных желтых матчей по всему экрану. Так что вы часто будете использовать
:noh
. Это так часто, что отображение в порядке:Я легко запоминаю этот,
z
поскольку я постоянно печатал/zz<CR>
(что является необычным быстрым вводом), чтобы очистить подсветку. Но:noh
отображение намного лучше.источник
q/
, вы также должны поиграть сq:
. Оба действительно удобны! (Хотя на самом деле не имеет отношения к этому вопросу.)Если вы нажмете Ctrl+ Enterпосле того, как нажмете что-то вроде «/ wordforsearch», то вы можете найти слово «wordforsearch» в текущей строке. Затем нажмите nдля следующего матча; нажмите Nдля предыдущего матча.
источник