Title: Vim editor
Author:: Vitus Wagner
Введение
Когда-то давно меня спросили, чем мне не нравится текстовый редактор notepad. На что я ответил, что в нём нужно каждую буковку руками набирать.
Дело в том, что я к тому моменту уже много лет пользовался редактором vim. Поэтому идея, что программа большую часть буковок в редактируемом текстовом файле способна сделать за тебя, была для меня вполне естественной.
vim это редактор для программистов. То есть для людей, которые любую более-менее повторяющуюся работу с компьютером норовят на тот самый компьютер и переложить.
Ещё одним крайне ценным для меня свойством vim является то, что он не забыл своего происхождения из тех времён, когда компьютеры были большими, а каналы связи медленными.
Swap-файл
Vim это единственный редактор из доживших до наших дней, который
рассчитан на то, что питание компьютера может пропасть или прооцесс
редактора в может быть убит сигналом то ли от OOMKiller-а то ли при
разрыве соединения с удалённым компьютером. Поэтому при работе vim
постоянно записывает действия пользователя в так называемый swap-файл
(обычно имя своп-файла создаётся из имени редактируемого файла путём
добавления расширения .swp
и точки в начале).
Если вдруг процесс редактирования был насильственно прерван, то своп-файло остаётся в файловой системе и при последующей попытке редактирования того же файла (равно как и при попытке запуска редактирования того же файла из другого сеанса) будет выдано предупреждающее сообщение, предлагающее либо открыть файл только для чтения, либо восстановить.
Если вы уверены, что это не запущенный в другом окне процесс редактирования, а последствия падения, то надо запустить процесс восстановления. И скорее всего все изменения сделанные перед падением будут на месте.
Нормальный режим - это нормально
Пойди туда, знаю куда
Перемещения по структурным элементам текста
Перемещения по блокам языков программирования
Marks, jumplist и changelist
Регистры
Большая часть программ в современных графических средах умеет пользоваться системным буфером обмена, куда можно вырезать кусок текста, а потом вставить его в другое место (или даже совсем другой файл). Vim, собранный с графическим интерфейсом тоже так умеет. Но кроме системного буфера у него есть ещё четыре десятка своих, называемых регистрами.
Любая операция удаления в нормальном режиме помещает удалённый текст в
один из регистров. При этом, если регистр не был указан, то
операция yank помещает текст в регистр 0, а операция delete - в регистр 1.
При вставке автоматически используется тот из этих регистров, который
менялся последним. Так что если вы забрали в буфер ценный текст, а потом
что-то удалили, чтобы освободить место для вставки этого, то текст в
буфере не пропал. Вам всего лишь надо перед командой p указать из какого
именно регистра вы хотите вставить. "0p
. Остальные цифровые регистры
от 2 до 9 представляют собой стэк куда выталкиваются данные из регистра
1 при последующих удалениях.
Так что вам обычно доступны для вставки обратно результаты девяти предыдущих удалений.
В 26 регистров, обозначаемых латинскими буквами, текст попадает только если вы это явно попросите. При этом unnamed register начинает указывать на этот буквенный регистр.
Регистр .
содержит текст, введенный в ходе последней сессии режима
вставки. См команду .
в следующей главе. Регистр : - последняя
выполненная командная строка.
Регистры % и # содержат имена текущего и альтернативного редактируемого файла.
Регистр * соответствует буферу обмена GUI-системы, а + - primary selection в X window.
Ещё у vim есть возможность включить запись все выполняемых действий (нажимаемых клавиш) в регистр с помощью команды q<имя-регистра>. Остановить запись можно просто q. И, соответственно выполнить регистр с помощью @<имя регистра>.
Вставить содержимое регистра в командную строку можно посредством
Ctrl-R<имя регистра>
Когда программа пишет текст за вас
Autoindent
Completion
Аббревиатуры
Команда .
Поиск с заменой
Вставка в текст вывода внешней команды
Подстановки в командную строку
filename-modifiers
help filename-modifiers