Замена текста

Тут уже пойдёт разговор о замене текста без перехода в insert режим и удаления текста.

Удаление одного символа

x - это команда, которая удалит один символ.

Режим замены

Режим замены символа активируется через R. В этом режиме каждый вводимый символ будет замещать текущий, а каретка будет перемещаться на следующий символ.

  • Например, замена “header” на “footer”:
    1. Переместите каретку на начало слова “header”.
    2. Нажмите shift + r.
    3. Введите footer, замещая каждый символ поочередно.

Replace Mode используется редко, так как в некоторых случаях может испортить форматирование.

Поиск по буферу

Основные методы поиска:

Поиск по текущему слову осуществляется через *. Переходим курсором на нужное слово, нажимаем * и дальше переходим к следующему слову через n и к предыдущему через N.

Эта команда автоматически сгенерирует RegExp, который и найдёт все нужные вхождения слова

Чтобы убрать подсветку поиска, нужно использовать команду :noh (nohighlight). Подсветка исчезнет, и перемещение с помощью n перестанет работать до нового поиска.

Ввод поиска вручную:

Так же можно и вручную определить слова, которые мы будем искать, через /, который сразу перейдёт в режим команды и будет искать по буферу нужные вхождения

Через enter мы перейдём в режим такого же поиска, как и при *

Использование регулярных выражений:

Можно так же использовать регулярные выражения для поиска сложных паттернов.

Например, для поиска строки в кавычках: \/".*?".

Замена в файле

Теперь нужно понять, как мы можем редактировать найденное слово.

  • Находим слово /sheet
  • переходим в режим корректирования c
  • g позволит перейти к последнему найденному вхождению
  • n удалит слово

Так же, чтобы просто удалить слово, мы могли бы использовать dgn

(c, c, d)

Команда замены

Так же через команду мы можем заменять определённые вхождения слов глобально, либо по буферу. Команда :s позволит заменить по RegExp одно значение на другое

Например:

  • :s/div/span - заменит первое вхождение в одной строке тег div на span
  • :s/styles/aaa/g - заменит значение с одного на другое во всех вхождениях текущей строки
  • :%s/styles/aaa/g - заменит во всех строках буфера

Регулярные выражения

Так же можно использовать регулярные выражения для более сложных поисков и замен:

  • :%s/"\..*"/aaa/gi - заменит все значения, которые начинаются с ". и заканчиваются на ", на aaa
  • :%s/\s+/ /g — заменяет все пробелы на одиночный пробел.
  • Флаг i для игнорирования регистра: :%s/styles/aaa/gi — заменяет “styles” и “Styles” на “aaa”.

Локальные сервера протоколов (LSP)

Для переименования определённой переменной в рамках всего проекта уже используются LSP-сервера