3

Есть ли способ поиска в vim, как в emacs?

Точнее сказать, я начинаю поиск с включенным пошаговым поиском. Курсор перейдет к первому совпадению. Я нажимаю Enter и затем «n», чтобы перейти к следующему матчу. Теперь я хочу добавить несколько символов в исходное поисковое выражение и найти следующее совпадение. Я не могу этого сделать, потому что после нажатия кнопки «Ввод» фокус покидает область поиска.

Эквивалентом emacs будет ctrl-s blah ctrl-s ha. И я бы закончил поиском термина «блаха».

Имеет ли это смысл? Является ли это возможным?

редактировать

Идеальной ситуацией было бы сделать что-то вроде /blah <CS> и заставить его немедленно перейти ко второму вхождению 'blah', сохраняя фокус в буфере поиска.

2 ответа2

8

/<Up> или /<C-P> приведут вас к предыдущему поиску, и вы можете продолжить ввод после этого для добавления. Вы можете добавить :nnoremap / /<Up> в ваш vimrc, если хотите, чтобы это было вашим поведением по умолчанию.

5

Самое близкое, что я могу придумать, - нажать /<C-R>/ добавить свой новый текст. / откроет диалоговое окно поиска, <C-R> позволяет вставить из одного из ваших регистров, а / registers - это предыдущий буфер поиска, который содержит ваш самый последний текст поиска.

Если вы обнаружите, что делаете это много, вы можете составить карту, например:

nnoremap <leader>/ /<C-R>/

Как я упоминал в другом комментарии, если вы хотите остаться в буфере поиска, вы можете добавить что-то подобное в ваш vimrc. Я думаю, что это даст вам то, что вы хотите.

cnoremap <C-S> <CR>/<C-R>/

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .