Конвертировать vim / search для поиска и замены без повторного ввода регулярного выражения - PullRequest
23 голосов
/ 11 января 2011

Когда я выполняю поиск и замену в Vim, мне нравится сначала использовать функцию поиска (/regex) для визуального тестирования моего регулярного выражения.

Есть ли простой способ вызвать выражение, которое я написал, в команде поиска и замены, не вводя его снова?

Например, если я хотел найти слово выполнить и заменить его на выполнить в приведенном выше тексте после выполнения:

/perform введите

есть ли способ легко вставить perform в команду поиска и замены ниже?

:%s/perform/execute/g

Ответы [ 3 ]

36 голосов
/ 11 января 2011

Вы можете набрать

/search_term

, а затем

:%s/<ctrl-r>// etc

, где вы фактически нажимаете ctrl + r , а затем / , чтобы вставить поисковый термин.

19 голосов
/ 11 января 2011

Если вы выполнили предыдущий поиск с: /foo

Вы можете просто набрать: :%s//bar/g

и он заменит каждое вхождение foo на bar, потому что Vim неявно понимает, что вы хотите заменить предыдущий поиск. Вам не нужно вообще печатать foo.

В общем случае для повторного использования команды из истории вы можете использовать команду q:, чтобы открыть историю команд, и q/, чтобы вызвать историю поиска в небольшом буфере. Как только вы окажетесь там, вы можете использовать каждую команду Vim для вставки, вырезания, вызова предыдущей команды, нажав <Enter> ...

Там можно найти отличный ресурс по вашей теме, это веб-трансляция о регулярных выражениях и о том, как их улучшить с помощью окна командной строки.
http://vimcasts.org/episodes/refining-search-patterns-with-the-command-line-window/

0 голосов
/ 11 января 2011

% s / бла / бла / ч не поможет?

:%s/perform/execute/cg
...