Удаление текста
За удаление отвечает операцтор d
. Он включает операцию удаления, которая позволит по моушену удалить нужный нам участок текста.
Чтобы откатить изменения вместо ctrl + z
в Vim работает u
. Сам же вим хранит все изменения, которые мы совершали в файле, поэтому можно откатываться даже до тех изменений, которые были до входа в файл
Чтобы вернуть отменённые изменения, нам нужно использовать ctrl + r
Основные комбинации
d
- delete - удаляет текст и остается в нормальном режиме.c
- correct - удаляет текст и переходит в режим Insert.
Работа с операторами и motion
dw
- удалить слово.d2w
- удалить два словаdd
- удалить строку.d3d
- удалить три строки внизdb
- удалить назад до начала слова.de
- удалить до конца слова.
Примеры комбинирования
d2w
- удалить два слова.d$
- удалить до конца строки.d10j
- удалить 10 строк вниз.
Переходы в режим Insert
cw
- удалить слово и сразу перейти в режим Insert.cb
- удалить назад до начала слова и перейти в режим Insert.cc
- удалит строку и перейдёт в режимinsert
Упрощенные операции удаления
- Используемые команды для удаления могут быть комбинированы с count (числом удаляемых объектов) и motion (движением курсора), что позволяет эффективно удалять большие участки текста.
inside и around
Так же вместо Count мы можем использовать специальные операторы, которые будут выполнять действия в рамках определённых границ либо только за ними
d
– удалитьi (inside)
– внутри границa (around)
– вокруг границt
– тег
Например, мандой diw
мы можем выполнить действие внутри слова и удалить его целиком. То есть мы можем не переходить в его начало, а просто сделать действие удаления в самом слове. daw
удалит и всё, что вокруг слова (пробелы).
di"
- delete inside ” - удалит слово внутри кавычек "example"
→ ""
Команда dit
- delete inside tag - удалит всё внутри тегов: <title>Школа разработки</title>
→ <title></title>
dt:
- delete to : - удалит всё до :
di{
- delete inside { - удалит всё внутри фигурных кавычек
Мы можем вместо удаления скорректировать текст с помощью ci(
для круглых скобок с последующим вводом нового значения
Копирование и вставка
Удаление текста и регистры
При удалении текста в Vim с помощью команды d
(например, dd
для удаления строки), текст автоматически попадает в регистр, который действует как временное хранилище или буфер обмена.
В зависимости от настроек, регистр может интегрироваться с буфером обмена нашей операционной системы.
Вставка текста:
Команда P
/ p
вставляет текст из регистра ниже / выше текущей строки.
Эти команды помогают вернуть удаленный или скопированный текст в нужное место.
Если вырезана не вся строка, то P
и p
всталяют до/после курсора
Копирование текста:
Команда y
копирует текст, аналогично удалению, но не удаляя его. Этот процесс в Vim называется “yanking”.
yy
копирует всю строку.
Можно использовать комбинации, аналогичные удалению, для копирования отдельных частей текста (например, yi"
для копирования текста внутри кавычек).
Модификаторы движения и копирование
Они работают аналогично тем, что используются при удалении:
yw
копирует слово.y$
копирует текст до конца строки.yi<тег>
копирует текст внутри HTML-тега.
Регистры
Проблема: мы скопировали одно значение, удалили другое, вставляем и получаем то, что у нас вставилось из регистра последнее значение в виде удалённого только что текста (скопировали Блог, удалили Курсы и вставили Курсы, хотя хотелось Блог)
Дело в том, что мы помещаем все скопированные и удалённые значения в дефолтный регистр
Просмотреть ВСЕ регистры (включая дефолтный) и их содержимое можно командой :registers
Type
- говорит нам о типе данных, который присутствует в регистре (Character
, Line
, Block
)
Name
- имя регистра
Content
- контент регистра
Чтобы вставить и прочитать значение из именованного регистра, нужно перед началом команды записать индекс используемого регистра:
"2yiw
- запишет слово во второй регистр"2p
- вставит последнее значение из второго регистра
"
- это префикс регистра
И такое использование вполне можно комбинировать с использованием дефолтного регистра, когда мы копируем одного, второе, третье, четвёртое слово в разные регистры и потом достаём значения из них по очереди.
Использование регистров
- Дефолтный и нулевой регистр всегда обновляются автоматически, используйте их для повседневных задач.
- Именованные регистры удобны для хранения полезного текста, который не должен быть перезаписан.