Vi заменит искомую строку

Я знаю, как я могу искать и заменять строку либо глобально, либо в выбранной области.

Но у меня есть привычка перебирать слово, а затем ударить * чтобы найти это слово. Это не только поиск словарной строки, но и игнорирование других строк, для которых искомая строка является подстрокой. Таким образом, поиск выглядит как \<word\> вместо простого word .

Теперь я хотел бы иметь возможность ударить * по слову, а затем заменить все уже обнаруженные и подсвеченные вхождения этой строки, не вводя их снова для команды поиска и замены. Есть ли хороший способ сделать это?

  • Отображать символы замены для свободного места в Vim
  • vim: несколько подстановок, таких как sed
  • Как вставить названный регистр из командной строки vim
  • VIM: создать функцию для генерации нескольких строк буфера
  • Как предотвратить автоматическое редактирование vim vim?
  • Картинка Vim ведет себя странно
  • Клавиши со стрелками спонтанно перестают работать в vim
  • Как узнать, какой файл в настоящее время открыт в vim?
  • 2 Solutions collect form web for “Vi заменит искомую строку”

    Образец текста:

     cat concatenate scat dog and cat 

    Скажем * нажата в первой строке, он будет искать шаблон \<cat\>

    Когда строка поиска остается пустой во время поиска и замены, она будет повторно использовать последний сопоставленный шаблон, поэтому

     :%s//CAT/g 

    приведет к

     CAT concatenate scat dog and CAT 

    От :h :substitute

    Если {pattern} для подстановочной команды пуст, команда использует шаблон из последней замены или :global команды. Если их нет, но есть предыдущий шаблон поиска, этот используется. С флагом [r] команда использует шаблон из последней команды substitute :global или search.

    Чтобы изменить поведение * и # для визуально выбранного текста для поиска только части текста вместо целого слова:

     vnoremap * y/<CR>"<CR> vnoremap # y?<CR>"<CR> 

    Вы можете использовать g* вместо * . От :help gstar

     g* Like "*", but don't put "\<" and "\>" around the word. This makes the search also find matches that are not a whole word. {not in Vi} g# Like "#", but don't put "\<" and "\>" around the word. This makes the search also find matches that are not a whole word. {not in Vi} 

    И затем используйте:

     :%s//replacement/g 

    как предложил @Sundeep.

    Linux и Unix - лучшая ОС в мире.