Переместить в начало и конец поиска - PullRequest
25 голосов
/ 11 мая 2011

В vim / gvim я хотел бы иметь возможность перейти к началу и концу текущего поискового поиска. Возможно ли это?

Например, с этим файлом:

A dog and a cat
A hat and a bat

Я хотел бы иметь возможность выполнить поиск, например /dog\sand, а затем перейти от начала выражения «собака и» к концу и назад, чтобы мой курсор начинался в столбце 3 под буква «d» слова «собака», а затем перемещается в столбец 9 под буквой «d» или словом «и».

Причина, по которой я хочу это сделать, заключается в том, что я могу искать выражение и затем использовать команду изменения c в сочетании с командой перемещения для замены этого конкретного поискового выражения. Я не хочу использовать замену и замену здесь, я хочу выполнить эту операцию, используя команду изменения и клавишу перемещения.

Ответы [ 4 ]

38 голосов
/ 19 апреля 2013

Вы ищете c г n . От :help gn:

Search forward for the last used search pattern, like
with `n`, and start Visual mode to select the match.
If the cursor is on the match, visually selects it.
If an operator is pending, operates on the match.
E.g., "dgn" deletes the text of the next match.
If Visual mode is active, extends the selection
until the end of the next match.

Прелесть этого в том, что вы можете сделать c g n , а затем повторить команду с . и, да, это выполнит ту же операцию при следующем поиске по шаблону. Это становится чрезвычайно полезным, когда вы начинаете поиск со сложными регулярными выражениями.

17 голосов
/ 11 мая 2011

Вы можете перейти к концу матча с помощью c//e<CR>. И //<CR> приведет вас к началу следующего матча. Возможно, вы могли бы разработать какие-то привязки для тех, кто имеет смысл. Например, я только что попробовал следующее, и это, кажется, работает хорошо:

:onoremap <silent>m //e<CR>

Так что вы можете сказать cm для изменения соответствия. Я не уверен, что я сопоставлю //<CR>, хотя. Я попытался сопоставить его с n, и, похоже, оно работало нормально. Не знаю, будет ли это проблемой для тебя.

:nnoremap <silent>n //<CR>
13 голосов
/ 11 мая 2011

Попробуйте это:

/pattern<cr> to place the cursor at the start of search pattern
/pattern/e<cr> to place the cursor at the end of search pattern
0 голосов
/ 11 мая 2011

Поскольку вы знаете, сколько слов вы ищете, почему бы просто не переместиться туда и обратно, используя команды перемещения слов?То есть, «2w» для перехода к концу текущего результата поиска и «2b» для возврата.

...