- Как копировать, вырезать и вставлять в Vim / Vi
- Копирование, вырезание и вставка в нормальном режиме
- Копирование (Янкинг)
- Резка (Удаление)
- Склеивание (Вставка)
- Копирование, вырезание и вставка в визуальном режиме
- Выводы
- Шпаргалка по Vim
- Режим вставки — вставка/добавление текста
- Редактирование
- Выделение текста (визуальный режим)
- Визуальные команды
- Регистры
- Метки
- Макросы
- Вырезать и вставить
- Выход и сохранение
- Поиск и замена
- Поиск в нескольких файлах
- Сворачивание
- Работа с несколькими файлами
- Вкладки
Как копировать, вырезать и вставлять в Vim / Vi
При работе с текстовыми файлами копирование, вырезание и вставка текста — одна из наиболее часто выполняемых задач.
Vim или его предшественник Vi предустановлен на macOS и почти во всех дистрибутивах Linux. Знание основ Vim полезно в ситуации, когда ваш любимый редактор недоступен.
В этой статье показано, как копировать, вырезать и вставлять в редакторе Vim / Vi.
Копирование, вырезание и вставка в нормальном режиме
Когда вы запускаете редактор Vim, вы находитесь в обычном режиме. В этом режиме вы можете запускать команды Vim и перемещаться по файлу.
Чтобы вернуться в нормальный режим из любого другого режима, просто нажмите Esc .
В Vim есть собственная терминология для копирования, вырезания и вставки. Копирование называется yank ( y ), вырезание называется delete ( d ), а вставка называется put ( p ).
Копирование (Янкинг)
Чтобы скопировать текст, поместите курсор в желаемое место и нажмите клавишу y а затем команду перемещения. Ниже приведены некоторые полезные команды восстановления:
- yy — Янкнуть (скопировать) текущую строку, включая символ новой строки.
- 3yy — 3yy (копирование) трех строк, начиная с строки, в которой находится курсор.
- y$ — копировать (копировать) все от курсора до конца строки.
- y^ — Янкинг (копирование) всего от курсора до начала строки.
- yw — Янкнуть (копировать) до начала следующего слова.
- yiw — yiw (скопировать) текущее слово.
- y% — Янкнуть (копировать) на соответствующий символ. По умолчанию поддерживаются пары () , <> и [] . Полезно для копирования текста между совпадающими скобками.
Резка (Удаление)
В обычном режиме d — клавиша для вырезания (удаления) текста. Переместите курсор в желаемое положение и нажмите клавишу d , а затем команду перемещения. Вот несколько полезных команд для удаления:
- dd — Удалить (вырезать) текущую строку, включая символ новой строки.
- 3dd — Удалить (вырезать) три строки, начиная с линии, в которой находится курсор,
- d$ — Удалить (вырезать) все от курсора до конца строки.
Команды движения, применяемые для восстановления, также действительны для удаления. Например, dw удаляет до начала следующего слова, а d^ удаляет все от курсора до начала строки.
Склеивание (Вставка)
Чтобы поместить извлеченный или удаленный текст, переместите курсор в желаемое место и нажмите p чтобы вставить (вставить) текст после курсора, или P чтобы поместить (вставить) перед курсором.
Копирование, вырезание и вставка в визуальном режиме
Визуальный режим Vim позволяет выбирать текст и управлять им.
- Поместите курсор на линию, с которой вы хотите начать копирование или резку.
- Визуальный режим имеет три подтипа.
- Нажмите v чтобы войти в визуальный режим.
- Нажмите V чтобы войти в визуальный линейный режим, в котором текст выделяется построчно.
- Нажмите Ctrl+v чтобы войти в режим визуального блока. В этом режиме текст выделяется прямоугольными блоками.
Переход в визуальный режим также отмечает начальную точку выбора.
Выводы
В этом руководстве мы показали вам, как копировать, вырезать и вставлять в Vim.
Если вы новичок в Vim, посетите сайт Open Vim, где вы можете попрактиковаться в Vim с помощью интерактивного руководства.
Не стесняйтесь оставлять комментарии, если у вас есть вопросы.
Шпаргалка по Vim
Совет: Добавьте число перед командой перемещения курсора для того, чтобы повторить её. Например, 4j перемещает курсор на 4 строки вниз.
Режим вставки — вставка/добавление текста
- i — вставка перед курсором
- I — вставка в начало строки
- a — вставка (добавление) после курсора
- A — вставка (добавление) в конец строки
- o — добавление новой строки под текущей
- O — добавление новой строки над текущей
- ea — вставка (добавление) после конца слова
- Esc — выход из режима вставки
Редактирование
- r — заменить один символ
- J — присоединить нижнюю строку к текущей
- cc — заменить всю строку
- cw — заменить всё текущее слово
- c$ — заменить до конца строки
- s — удалить символ и заменить текст
- S — удалить строку и заменить текст (то же что cc)
- xp — переставить две буквы (удалить и вставить)
- u — отменить
- Ctrl + r — применить последнее отменённое изменение
- . — повторить последнюю команду
Выделение текста (визуальный режим)
- v — включить режим выделения текста, выделить строки, затем выполнить команду (например, y-копирование)
- V — включить построчный режим выделения
- o — переместиться на другой конец выделенной области
- Ctrl + v — включить режим выделения блоков
- O — переместить на другой угол блока
- aw — выделить слово
- ab — блок в ()
- aB — блок в <>
- ib — внутренний блок в ()
- iB — внутренний блок в <>
- Esc — выйти из режима выделения текста
Визуальные команды
Регистры
- :reg — показать содержимое регистров
- «xy — поместить содержимое в регистр x
- «xp — вставить содержимое регистра x
Совет: Содержимое регистров сохраняется в ~/.viminfo, и будет восстановлено при следующем запуске vim.
Метки
- :marks — список меток
- ma — установить метку A на текущей позиции
- `a — переместиться к метке A
- y`a — скопировать до метки A
Макросы
- qa — записать макрос A
- q — остановить запись макроса
- @a — run macro a
- @@ — выполнить последний макрос
Вырезать и вставить
- yy — скопировать строку
- 2yy — скопировать 2 строки
- yw — скопировать слово
- y$ — скопировать до конца строки
- p — вставить буфер обмена после курсора
- P — вставить буфер обмена перед курсором
- dd — удалить (вырезать) строку
- 2dd — удалить (вырезать) 2 строки
- dw — удалить (вырезать) слово
- D — удалить (вырезать) до конца строки
- d$ — удалить (вырезать) до конца строки
- x — удалить (вырезать) символ
Выход и сохранение
- :w — сохранить файл, но не выходить
- :w !sudo tee % — сохранить файл с sudo
- :wq либо 😡 либо ZZ — сохранить файл и выйти
- :q — выйти (терпит неудачу в случае несохраненных изменений)
- :q! либо ZQ — выйти и потерять несохраненные изменения
Поиск и замена
- /pattern — поиск шаблона
- ?pattern — обратный поиск шаблона
- \vpattern — ‘very magic’ режим: все не алфавитно-цифровые символы интерпретируются как специальные (экранирование не требуется)
- n — повторить поиск в том же направлении
- N — повторить поиск в обратном направлении
- :%s/old/new/g — заменить все вхождения шаблона в файл на указанное значение
- :%s/old/new/gc — заменить все вхождения шаблона в файл на указанное значение с подтверждением
- :noh — отключить подсвечивание результатов поиска
Поиск в нескольких файлах
- :cn — переместиться к следующему совпадению
- :cp — переместиться к предыдущему совпадению
- :copen — открыть окно со списком результатов
Сворачивание
- zf#j — создает свертку от текущей позиции до # строк вниз
- zf/подстрока — создает свертку от текущей позиции и до первой найденной подстроки
- v/V и zf — выделение блока и создание свертки
После закрытия Vim все свертки забываются, для сохранения сверток в открытом файле используется команда :mkview , для загрузки — :loadview (подробнее).
Работа с несколькими файлами
- :e file — редактировать файл в новом буфере
- :bnext либо :bn — перейти к следующему буферу
- :bprev либо :bp — перейти к предыдущему буферу
- :bd — удалить буфер (закрыть файл)
- :ls — список всех открытых буферов
- :sp file — открыть файл в новом буфере и разделить окно
- :vsp file — открыть файл в новом буфере и вертикально разделить окно
- Ctrl + ws — разделить окно
- Ctrl + ww — переключение окон
- Ctrl + wq — закрыть окно
- Ctrl + wv — разделить окно вертикально
- Ctrl + wh — переместить курсор в левое окно (вертикально разделение)
- Ctrl + wl — переместить курсор в правое окно (вертикальное разделение)
- Ctrl + wj — переместить курсор в окно ниже (горизонтальное разделение)
- Ctrl + wk — переместить курсор в окно выше (горизонтальное разделение)
Вкладки
- :tabnew либо :tabnew file — открыть файл в новой вкладке
- Ctrl + wT — переместить текущее окно в собственную вкладку
- gt либо :tabnext либо :tabn — переключиться на следующую вкладку
- gT либо :tabprev либо :tabp — переключиться на предыдущую вкладку
- #gt — переключить на вкладку номер #
- :tabmove # — переместить текущую вкладку на # позицию (нумерация с 0)
- :tabclose либо :tabc — закрыть текущую вкладку и все её окна
- :tabonly либо :tabo — закрыть все вкладки кроме текущей
- :tabdo command — выполнить command на всех вкладках (к примеру :tabdo q — закрывает все открытые вкладки)