Vim вставить строку в конец файла

Обновлено: 04.07.2024

Vim или его предшественник Vi предустановлен на macOS и почти во всех дистрибутивах Linux. Знание основ Vim полезно в ситуации, когда ваш любимый редактор недоступен.

В этой статье показано, как копировать, вырезать и вставлять в редакторе Vim / Vi.

Копирование, вырезание и вставка в нормальном режиме

Когда вы запускаете редактор Vim, вы находитесь в обычном режиме. В этом режиме вы можете запускать команды Vim и перемещаться по файлу.

Чтобы вернуться в нормальный режим из любого другого режима, просто нажмите Esc .

В Vim есть собственная терминология для копирования, вырезания и вставки. Копирование называется yank ( y ), вырезание называется delete ( d ), а вставка называется put ( p ).

Копирование (Янкинг)

Чтобы скопировать текст, поместите курсор в желаемое место и нажмите клавишу y а затем команду перемещения. Ниже приведены некоторые полезные команды восстановления:

Резка (Удаление)

Команды движения, применяемые для восстановления, также действительны для удаления. Например, dw удаляет до начала следующего слова, а d^ удаляет все от курсора до начала строки.

Склеивание (Вставка)

Чтобы поместить извлеченный или удаленный текст, переместите курсор в желаемое место и нажмите p чтобы вставить (вставить) текст после курсора, или P чтобы поместить (вставить) перед курсором.

Копирование, вырезание и вставка в визуальном режиме

Визуальный режим Vim позволяет выбирать текст и управлять им.

Поместите курсор на линию, с которой вы хотите начать копирование или резку.

Визуальный режим имеет три подтипа.

  • Нажмите v чтобы войти в визуальный режим.
  • Нажмите V чтобы войти в визуальный линейный режим, в котором текст выделяется построчно.
  • Нажмите Ctrl+v чтобы войти в режим визуального блока. В этом режиме текст выделяется прямоугольными блоками.

Переход в визуальный режим также отмечает начальную точку выбора.

Переместите курсор в конец текста, который вы хотите скопировать или вырезать. Вы можете использовать команду перемещения или клавиши со стрелками вверх, вниз, вправо и влево.

Нажмите y чтобы скопировать, или d чтобы вырезать выделение.

Переместите курсор в то место, куда вы хотите вставить содержимое.

Нажмите P чтобы вставить содержимое перед курсором, или p чтобы вставить его после курсора.

Выводы

В этом руководстве мы показали вам, как копировать, вырезать и вставлять в Vim.

Если вы новичок в Vim, посетите сайт Open Vim, где вы можете попрактиковаться в Vim с помощью интерактивного руководства.

Текстовый редактор vim, созданный на основе более старого vi. Один из мощнейших текстовых редакторов с полной свободой настройки и автоматизации, возможными благодаря расширениям и надстройкам. По умолчанию входит в состав любого дистрибутива Linux.

Открываем файл с помощью vi / vim:

Основные режимы работы.

«Обычный режим» — перемещение по файлу, стирание текста и другие редактирующие функции. Это - основной режим, только из него можно сразу перейти в другие режимы. Для возврата в основной режим из любого другого режима:

«Режим ввода» - ввод текста. Как только завершается ввод текста, принято сразу возвращаться в обычный режим. Заметьте, что стирание и ввод текста происходит в двух разных режимах. Переход в него из обычного режима:

«Командный режим» - Команды (операции с файлом, поиск и замена, настройка редактора…). Переход в него из обычного режима:

«Режим поиска» - ввод поискового запроса. Переход в него из обычного режима

«Визуальный режим» - режим выделения текста:

Перемещение по файлу

После загрузки Vim, на экране вы увидите часть загруженного вами текстового файла. Загрузившись, Vim находится в «командном режиме» - один из основных режимов. Это значит, что если вы нажмете клавишу <l> (строчная L), вместо появления «l» на месте курсора вы увидите, что курсор сдвинулся на один символ вправо. В командном режиме знаки, набираемые на клавиатуре, используются как команды для Vim, а не как помещаемые в текст символы. Команды перемещения - один из наиболее важных типов команд. Вот некоторые из них:

Ввод текста

Следующие команды переводят редактор в режим ввода:

Удаление и вставка

Ниже перечислены основные комманды удаления и вставки текста:

Отмена изменений

Поиск

Перейти на строку:

Выход

Есть еще пара команд, которые вам необходимо знать:

В этой статье описаны основные возможности, необходимые для работы. Практически во все дистрибутивы Linux входит учебник по работе с редактором, - просто введите в командной строке команду vimtutor.

/.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 либо :x либо ZZ - сохранить файл и выйти
  • :q - выйти (терпит неудачу в случае несохраненных изменений)
  • :q! либо ZQ - выйти и потерять несохраненные изменения

Поиск и замена

  • /pattern - поиск шаблона
  • ?pattern - обратный поиск шаблона
  • \vpattern - 'very magic' режим: все не алфавитно-цифровые символы интерпретируются как специальные (экранирование не требуется)
  • n - повторить поиск в том же направлении
  • N - повторить поиск в обратном направлении
  • :%s/old/new/g - заменить все вхождения шаблона в файл на указанное значение
  • :%s/old/new/gc - заменить все вхождения шаблона в файл на указанное значение с подтверждением
  • :noh - отключить подсвечивание результатов поиска

Поиск в нескольких файлах

  • :vimgrep /pattern/ - поиск по шаблону в нескольких файлах
  • :cn - переместиться к следующему совпадению
  • :cp - переместиться к предыдущему совпадению
  • :copen - открыть окно со списком результатов

Сворачивание

Команды для управления:

После закрытия Vim все свертки забываются, для сохранения сверток в открытом файле используется команда :mkview , для загрузки - :loadview (подробнее).

Самое главное — побороть боязнь белого листа. Я всегда говорю это себе, когда нужно начать работу над чем-то и не знаешь, как подступиться. Так что я решил не ломать голову над тем, о чем будет первая запись в этом блоге, а просто выложить небольшую шпаргалку по текстовому редактору Vim.

Шпаргалка эта уже не первый месяц хранится у меня в

/txt/vim.txt. За это время я успел составить довольно объемный справочник по основным командам Vim. При желании вы можете начать свое обучение работе с Vim с этого поста.

/.vimrc
Можно редактировать файлы через сеть, например
:e <scp|ftp|ftps>://user@host/path/to/the/file.txt
:Ex или :e ./ - файловый менеджер

== Подсветка синтаксиса ==
:syntax on включить подсветку
:syntax off выключить подсветку (по умолчанию)

== Перенос строк ==
:set wrap разрешить word wrap (по умолчанию)
:set nowrap запретить word wrap

== Печать ==
:ha[rdcopy] распечатать документ
:set printoptions=duplex:off отключить двустороннюю печать

== Сворачивание ==
zc свернуть блок
zo развернуть блок
zM закрыть все блоки
zR открыть все блоки
za инвертирование
zf см :set foldmethod=manual
:set foldenable включить свoрачивание
:set foldmethod=syntax сворачивание на основе синтаксиса
:set foldmethod=indent сворачивание на основе отступов
:set foldmethod=manual выделяем участок с помощью v и говорим zf
:set foldmethod=marker сворачивание на основе маркеров в тексте
:set foldmarker=bigin,end задаем маркеры начала и конца блока

== Маркеры ==
ma установить локальный маркер a
mB установить глобальный маркер B
`c перейти к локальному маркеру c
`0 вернуться на позицию, на которой закончили
работу при закрытии vim
:marks просмотр маркеров
set viminfo='1000,f1 маркеры пишутся в

/.viminfo, восстанавливаясь
при следующем запуске vim. маркер " хранит
последнюю позицию курсора в файле
== Сессии ==
mksession file.session сохранить текущую сессию
source file.session восстановить ранее сохраненную сессию

== Макросы ==
qa записать макрос с именем a
q в режиме записи макроса: закончить запись
@a выполнить макрос с именем a
@@ повторить последний макрос

== Регистры ==
"ayy скопировать строку в регистр a
"bdd вырезать строку и поместить в регистр b
"С2d вырезать три строки и дописать в конец
регистра C
:reg [name1][name2][. ] просмотреть содержимое регистров

== Выделение ==
v + hjkl выделение текста
SHIFT + v выделить строку
CTR + v выделение прямоугольника
p вставить
y копировать
d удалить
gu к нижнему регистру
gU к верхнему регистру

== Поиск по всему проекту ==
:vimgrep /EXPR/ **/*.c поиск по регулярному выражению
:copen показать все найденные места
:close скрыть все найденные места
:cn переход к следующему результату
:cp переход к предыдущему результату

== Нумерация строк ==
:set number включить нумерацию строк
:set nonumber отключить нумерацию строк

== Работа с окнами ==
:split горизонтальное разбиение
:vsplit вертикальное разбиение
Ctr+W, затем
с закрыть окно
+- изменение высоты текущего окна
<> изменение ширины текущего окна
= установить равный размер окон
hjkl или стрелочки перемещение между окнами

== Проверка орфографии ==
mkdir -p

:set spell spelllang=ru,en включить проверку орфографии
:set nospell выключить проверку орфографии
]s следующее слово с ошибкой
[s предыдущее слово с ошибкой
z= замена слова на альтернативу из списка
zg good word
zw wrong word
zG ignore word

== Другое ==
:set [no]wildmenu При авто-дополнении в командной строке над
ней выводятся возможные варианты
:set list Отображать табуляцию и переводы строк
q: История команд
. Повторение последней команды

Более подробный материал об использовании текстового редактора Vim вы найдете в книге Изучаем редакторы vi и Vim, 7-е издание. Книга доступна как в бумажном, так и в электронном формате.

На этом пока все. Думаю, я буду время от времени редактировать эту шпаргалку, так что следите за PS в конце следующих постов.

Выбрать синтаксис редактируемого файла

Способы перейти в режим вставки

  • i - вставить текст слева от текущего
  • I - вставить текст в начало строки
  • a - вставить текст справа от текущего символа
  • A - вставить текст в конец текущей строки
  • o - создать новую строку под текущей
  • O - создать новую строку над текущей
  • C - заменить всё до конца строки
  • r - заменить 1 символ
  • 3 s - удалить 3 символа и перейти в режим вставки
  • c i W - заменить большое слово под курсором
  • c i " - заменить текст между кавычками
  • c i ( - заменить текст между круглыми скобками
  • g i - перейти к последнему месту, где производилось редактирование

Передвижение по тексту

  • 4 d d - удалить 4 строки
  • 3 x - удалить 3 символа
  • D - удалить от текущей позиции до конца строки

Способы сложного выделения текста

  • v % - когда курсор установлен на одной из скобок - выделит всё до её пары.
  • v i b - выделить всё между двумя ближайшими к курсору круглыми скобками
  • v i B - выделить всё между двумя ближайшими к курсору фигурными скобками
  • v i " - выделить всё между двумя ближайшими двойными кавычками
  • v i ' - выделить всё между двумя ближайшими одинарными кавычками
  • g g V G - выделить весь файл
  • Ctrl + v - выделять прямоугольником

Заменить все вхождения 'old' на 'new'

Заменить все вхождения 'old' на 'new' с запросом подтверждения

Удалить все строки, не содержащие 'string'

Удаление всех пустых строк в VIM

Сокращения для быстрого создания закомментированных участков кода

Заставить вим не раскрывать табы при редактировании makefile

Открыть файл, но предопределить синтаксис редактора

Редактировать последний изменённый файл

Убрать символ переноса строки ^M в файле из windows двумя способами. ^M вводится как Ctrl-V Ctrl-M.

Заменить "foo" на "bar" в строках 127-215

С текущей строки до конца файла объеденить все строки в одну

Оба вида записи указывают на весь файл целиком

Начиная с текущей, удалить в следующих 21-ой строках те, что содержат слово foo

Начиная с текущего места и до конца файла удалить все строки что НЕ содержат "bar"

Все строки, что содержат "foo" перенести в конец файла, в том же порядке, в каком они встречаются по документу

Все строки, что начинаются с пробела, объединить с предыдущими

Во всех строках содержащих "foo", заменить "bar" на "zzz"

Между метками 'a' и 'b', объединить строки, что содержат 'foo' с теми что идут после них.

Вставка содержимого из другого места

  • :r file.txt - прочитать и вставить содержимое файла 'file.txt' в место под курсором
  • :0r file.txt - вставить файл в начало документа
  • :$r file.txt - вставить файл в конец документа
  • :r !uptime - вставить вывод команды в место под курсором

Дописать содержимое буфера в конец другого файла

Отсортировать весь файл с помощью sort

увеличить/уменьшить число под курсором на 1


Ctrl + a
Ctrl + x

Изменить регистр символа под курсором на противоположный

Объединить текущую строку со следующей

В режиме вставки, комбинация Ctrl + R позволяет вставлять некоторые полезные вещи:

  • " - последний удалённый/скопированный текст
  • % - текущее имя файла
  • * - содержимое буфера обмена (X11: primary selection)
  • + - содержимое буфера обмена
  • / - последний запрос поиска
  • : - последняя команда
  • . - последний вставленный текст
  • - - последний маленький удалённый текст (меньше строки)
  • =5*5 - вставит 25. Мини калькулятор

Дополнить слово в режиме вставки


Ctrl + p
Ctrl + n

Путешествие по результатам поиска.
Переход будет осуществляться по местам, которые были указаны явно: - поиск с помощью / - переход g g , G , [\d] G Так же будут открываться другие файлы, где осуществлялись подобные действия.


Ctrl + o
Ctrl + i

Работа с сессиями

Работа со встроенным файловым менеджером. Вызвать его можно командой :Explore или попытавшись открыть на редактирование каталог :sp ./

  • - - перейти на каталог выше
  • m f - пометить файл
  • D - удалить помеченые файлы. Удалит файл под курсором, если помеченых нет
  • R - переименовать файл под курсором
  • d - создать новый каталог
  • % - создать новый файл

работа с несколькими окнами

  • Ctrl + w v - разбить окно по вертикали
  • Ctrl + w s - разбить окно по горизонтали
  • Ctrl + w w - переключиться между окнами
  • Ctrl + w - перейти к окну левее, ниже, выше, правее
  • Ctrl + w < ,+,->- изменить размеры текущего окна
  • Ctrl + w q - закрыть окно

Проставить отступы для всего документа

Для того чтобы это работало - надо добавить в .vimrc следующую строку:
filetype plugin indent on

Копируем содержимое строк выше/ниже курсора, не покидая режима вставки

  • Ctrl + y - вставить символ над курсором
  • Ctrl + e - вставить символ под курсором

Отбросить правки до последнего сохранённого состояния

  • Q - войти в ex-режим
  • :vi - выйти из ex-режима

Удалить все строки что не содержат слова "git"

Для всех строк, что содержат слово git добавить в начало '>>' и в конец ' :g/git/norm I>> ctrl + v esc A<<

Читайте также: