Советы пользователям

Documentation
Login

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

Пишем грамотно

Встроенный spellcheck

LanguageTool

Как не видеть лишнего

Режим quickfix

Фолдинг

vimdiff

Шифрование

Редактор как оконная среда

Окна, вкладки и буфера

Терминальные буфера

Полезные плагины

matchit

localvimrc

fugitive

voom

xmledit

dbext

tabular

calendar

CoVim

https://github.com/FredKSchott/CoVim