Замена текста
Тут уже пойдёт разговор о замене текста без перехода в insert режим и удаления текста.
Удаление одного символа
x
- это команда, которая удалит один символ.
Режим замены
Режим замены символа активируется через R
. В этом режиме каждый вводимый символ будет замещать текущий, а каретка будет перемещаться на следующий символ.
- Например, замена “header” на “footer”:
- Переместите каретку на начало слова “header”.
- Нажмите
shift + r
. - Введите
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-сервера