VIM(1)

НАЗНАЧЕНИЕ
Программа Vim — это Vi IMproved (Улучшенный Vi), текстовый редактор для программистов.

КРАТКИЙ ОБЗОР
vim [аргументы] [файл ...]
vim [аргументы] -
vim [аргументы] -t индекс
vim [аргументы] -q [файл результатов]

ex
view
gvim gview evim eview
rvim rview rgvim rgview

ОПИСАНИЕ
Программа Vim — это текстовый редактор, совместимый с редактором Vi. Она может быть использована для правки всех видов обычных текстовых документов. Особенно полезна она будет для редактирования исходных текстов программ.

По сравнению с редактором Vi, в редакторе Vim представлено много усовершенствований: многократная отмена операций, множественность окон и буферов, подсветка синтаксиса, правка командной строки, подстановка наименований файлов, встроенная документация, визуальное выделение и прочее. См. ":help vi_diff.txt" чтобы ознакомиться с полным перечнем различий между редактором Vim и редактором Vi.

Чтобы получить полезную информацию о работе с редактором Vim, можно воспользоваться встроенной в программу документацией, набрав в редакторе команду ":help". См. раздел "ВСТРОЕННАЯ ДОКУМЕНТАЦИЯ" далее в тексте.

Чаще всего редактор Vim запускают для правки одного файла при помощи команды

    vim файл

В общем виде команда запуска редактора Vim выглядит так:

    vim [аргументы] [файлы]

Если файлы не указаны, редактор будет запущен с доступным для редактирования пустым буфером. Наименования файлов могут быть указаны одним из следующих четырёх способов:

файл ...
    Перечень наименований файлов. Первый файл из перечня будет объявлен активным и загружен в буфер, а каретка установлена на первой строке этого буфера. Доступ к другим файлам из этого перечня может быть осуществлён при помощи команды ":next". Чтобы править файл, наименование которого начинается с символа "дефис" (-), перед перечнем файлов необходимо указать символы "--".

-   Текст для правки будет считан из потока стандартного ввода. Команды будут считываться из стандартного потока диагностики (stderr), который должен предоставляться терминалом.

-t {индекс}
    Файла для правки и начальная позиция каретки зависят от значения "индекса", являющийся своего рода меткой goto. Поиск самого {индекса} выполняется в файле индексов, а сопоставленный с ним файл будет открыт в редакторе и выполнена связанная с этим {индексом} команда. Чаще всего этот способ используется для программ на языке Си, где {индекс} может быть наименованием функции. Файл, содержащий такую функцию, становится активным, а каретка помещается в начало этой функции. См. ":help tag-commands".

-q [файл результатов]
    Начать работу редактора в цикле быстрого исправления текста программ. Будет считан [файл результатов] и отображена первая запись из этого файла. Если [файл результатов] не указан, то его наименование берётся из значения параметра 'errorfile' (по умолчанию для ОС Amiga это "AztecC.Err", а для других систем — "errors.err"). К следующей записи в файле результатов можно перейти по команде ":cn". См. ":help quickfix".

Программа Vim ведёт себя по-разному в зависимости от указанной в командной строке команды вызова редактора (исполняемый файл при этом может быть одним и тем же).

vim Это "нормальный" запуск редактора, всё по умолчанию.

ex  Запуск редактора в Ex-режиме. Для переключения в обычный режим, необходимо набрать команду ":vi". Ex-режим также может быть активирован через аргумент "-e".

view
    Запуск редактора в режиме "только для чтения". В этом режиме есть некоторая защита от случайной перезаписи файлов. То же самое можно сделать через указание аргумента "-R".

gvim gview
    Запуск редактора с графическим интерфейсом. Для этого будет открыто новое окно. То же самое можно сделать при запуске с аргументом "-g".

evim eview
    Упрощённый вариант редактора с графическим интерфейсом. Запускается в новом окне. То же самое можно сделать через аргумент "-y".

rvim rview rgvim rgview
    Как и предыдущие команды, но с некоторыми ограничениями в функциональности. Нельзя запускать команды оболочки или приостанавливать работу редактора Vim. Вместо приставки "r" можно использовать аргумент командной строки "-Z".

АРГУМЕНТЫ КОМАНДНОЙ СТРОКИ
Аргументы могут быть указаны в любом порядке, до или после наименований файлов. Аргументы, не требующие значений, могут быть объединены с указанием только одного дефиса.

+[номер]
    Установка каретки на [номер] строки. В первом открытом файле каретка будет установлена на строку с указанным номером. Если "номер" не задан, каретка устанавливается на последней строке файла.

+/{шаблон}
    Установка каретки на найденной строке. В открытом файле каретка будет установлена в строке первого совпадения с указанным шаблоном. См. ":help search-pattern" для ознакомления с допустимыми шаблонами.

+{команда}

-c {команда}
    Исполнение указанной {команды}. После загрузки первого файла будет исполнена указанная {команда} как Ex-команда. Если в тексте {команда} есть пробелы, то она должна быть заключена в двойные кавычки (в зависимости от используемой командной оболочки). Пример: vim "+set si" main.c
    Примечание. Можно указывать до десяти команд "+" или "-c".

-A  Запуск программы с поддержкой арабской письменности. Если программа Vim была собрана с поддержкой правки текста с написанием справа налево и с поддержкой клавиатуры для арабского языка, то будет выполнен запуск редактора Vim в режиме работы с арабской письменностью, т. е. установлен параметр 'arabic'. В противном случае редактор Vim завершит работу с сообщением об ошибке.

-b  Запуск программы в режиме работы с двоичными данными. Производится настройка некоторых параметров, делающих возможной правку двоичного или исполняемого файла.

-C  Работа в варианте совместимости с редактором Vi. Будет установлен параметр 'compatible', и редактор Vim будет работать почти как редактор Vi, даже если существует файл ".vimrc".

-d  Режим сравнения различий. Может быть указано от двух до восьми наименований файлов. В редакторе Vim будут открыты все файлы и показаны различия между ними (как vimdiff(1)).

-d {устройство}, -dev {устройство}
    Использовать {устройство} для операций ввода-вывода. Открыть {устройство} для использования в качестве терминала (только в ОС Amiga). Пример: "-d con:20/30/600/150".

-D  Запуск программы в режиме диагностики. Переключение в режим отладки при исполнении первой команды из командного файла.

-e  Запуск программы в Ex-режиме. Редактор Vim будет работоать в Ex-режиме, тоже, что в командной строке оболочки набрать команду "ex".

-E  Запуск программы в улучшенном Ex-режиме. Редактор Vim будет работать в улучшенном Ex-режиме, это аналогично набору в командной оболочке команды "exim".

-f  Режим активного приложения. Редактор Vim с графическим интерфейсом не будет наследоваться и отключаться от командной оболочки, в которой выполнена команда его запуска. На платформе Amiga редактор Vim не будет перезапускаться для создания нового окна. Этот аргумент командной строки нужно использовать, когда редактор Vim запускается программой, которая должна ждать завершения сеанса правки (например, программа для работы с электронной почтой). На платформе Amiga в этом случае команды ":sh" и ":!" не будут работать.

-F  Запуск программы с поддержкой персидской письменности. Если программа Vim была собрана с поддержкой правки текста с написанием справа налево и с поддержкой клавиатуры для персидского языка, то будет выполнен запуск редактора Vim в режиме работы с персидской письменностью, т. е. установлены параметры 'fkmap' и 'rightleft'. В противном случае редактор Vim завершит работу с сообщением об ошибке.
    Примечание. Поддержка персидской письменности была удалена в версии 8.1.0932.

-g  Запуск программы с графическим интерфейсом. Если программа Vim была собрана с поддержкой графического интерфейса, то будет выполнен запуск графического интерфейса пользователя. В противном случае редактор Vim завершит работу с сообщением об ошибке.

-H  Запуск программы с поддержкой еврейской письменности. Если программа Vim была собрана с поддержкой правки текста с написанием справа налево и с поддержкой клавиатуры для еврейского языка, то будет выполнен запуск редактора Vim в режиме работы с еврейской письменностью, т. е. установлены параметры 'hkmap' и 'rightleft'. В противном случае редактор Vim завершит работу с сообщением об ошибке.

-i {файл}
    Использовать в качестве файла подкачки указанный {файл}. Через этот аргумент задаётся наименование viminfo-файла (вместо принятого по умолчанию ".viminfo"). Здесь же можно отключить использование viminfo-файла через указание слова "NONE" (прописными буквами).

-l  Запуск программы в режиме Lisp. Выполняется установка параметров 'lisp' и 'showmatch'.

-L  То же, что и аргумент командной строки -r.

-m  Работа без возможности сохранения изменений. Выполняется сброс параметра 'write', поэтому становится невозможным записать в файл изменения, внесённые в буфер.

-M  Работа без возможности внесения изменений в текст. Параметры 'modifiable' и 'write' будут отключены, так что изменения будут запрещены, и файлы не смогут быть записаны. Обратите внимание, что после начала работы редактора, эти параметры можно включить, чтобы разрешить внесение изменений.

-n  Работа без создания файла подкачки. В этом случае восстановление при сбое в работе редактора будет невозможно. Удобно для правки файла на очень медленном носителе (например, гибком диске). То же самое можно сделать командой ":set uc=0". Включение файла подкачки — ":set uc=200".

-N  Работа в варианте неполной совместимости с редактором Vi. Будет сброшен параметр 'compatible'. Редактор Vim будет работать лучше, но не будет полностью совместим с редактором Vi, даже если отсутствует файл начальных настроек (".vimrc").

-nb Назначить программу Vim сервером редактора для ИСР NetBeans. Подробности смотрите в документации.

-o[N]
    Создать для N файлов отдельные окна, расположенные по горизонтали. Если N не указано, то создаётся по одному окну на каждый файл.

-O[N]
    Создать для N файлов отдельные окна, расположенные по вертикали. Если N не указано, то создаётся по одному окну на каждый файл.

-p[N]
    Создать для N файлов отдельные вкладки. Если N не указано, то создаётся по одной вкладке на каждый файл.

-P {заголовок окна}
    Открыть программу в многодокументном приложении. Только для ГИП в MS Windows. Задаёт заголовок окна родительского приложения. Если возможно, то программа Vim будет запущена внутри окна многодокументного приложения. Многодокументное приложение должно иметь указанный {заголовок окна}. Убедитесь, что этот {заголовок окна} уникален для приложения. Обращаем внимание, что реализация данного функционала всё ещё не до конца отработана. Внедрение программы возможно не во все приложения и не поддерживается меню окна.

-r  Вывод перечня файлов подкачки и завершение работы. Будут показаны доступные файлы подкачки и информация об их использовании для восстановления в случае сбоя.

-r {файл}
    Восстановление аварийно завершённого сеанса. Для восстановления после сбоя в работе будет использован указанный файл подкачки. Файл подкачки имеет то же наименование, что и редактируемый текстовый файл, но с добавлением расширения ".swp". См. ":help recovery".

-R  Работа в варианте только для чтения. Будет установлен параметр 'readonly'. Файл в буфере доступен для редактирования, но его копию на диске нельзя случайно перезаписать. Для сохранения файла необходимо добавить восклицательный знак к соответствующей Ex-команде (например, ":w!"). При задании аргумента "-R" также подразумевается, что используется и аргумент "-n" (см. выше). Параметр 'readonly' может быть сброшен по команде ":set noro". См. ":help 'readonly'".

-s  Тихий режим. Только при запуске в командной оболочке как программы "ex" или если перед аргументом "-s" указан аргумент "-e".

-s {командный файл}
    Считывание команд режима команд из {командного файла}. Содержимое файла воспринимается в виде команд, как если бы они были набраны непосредственно в редакторе. То же самое достигается командой ":source! {командный файл}". Если после исполнения всех команд из {командного файла} работа редактора продолжается, то дальнейший ввод команд и текста ожидается с клавиатуры.

-S {файл}
    Исполнение указанного {файла}. После загрузки в буфер первого файла, будет исполнен указанный командный {файл}. Это аналогично команде в командной строке -c "source {файл}". Наименование {файла} не может начинаться с символа '-'. Если не указан {файл}, то будет исполнен файл "Session.vim" (это будет работать только если аргумент -S является последним в командной строке).

-T {терминал}
    Назначить указанный тип {терминала}. Редактору Vim будет передан тип используемого терминала. Необходимо только в тех ситуациях, когда автоматическое определение терминала не работает. Наименование терминала должно быть известно редактору Vim (предопределено в редакторе) либо указано в базе termcap или terminfo.

-u {файл}
    Использовать для начальной настройки указанный командный {файл}. Все остальные файлы настроек игнорируются. Удобно для редактирования специальных типов файлов. Через этот аргумент можно также отключить обработку всех файлов начальной настройки, используйте для этого слово "NONE" (прописными буквами). См. ":help initialization".

-U {файл}
    Использовать для начальной настройки графического интерфейса указанный командный {файл}. Все остальные файлы настроек для графического интерфейса игнорируются. Через этот аргумент можно также отключить обработку всех файлов настройки графического интерфейса, используйте для этого слово "NONE" (прописными буквами). См. ":help gui-init".

-v  Запуск программы в режиме Vi. Редактор Vim будет работать в режиме редактора Vi, как будто исполняемый файл называется "vi". Имеет смысл только если исполняемый файл называется "ex".

-V[N]
    Режим подробного вывода. Будут выводиться сообщения о том, какие командные файлы исполняются, и какая информация считывается и записывается в viminfo-файле. Необязательное число N задаёт уровень детализации информации. По умолчанию это значение установлено равным 10.

-V[N]{файл}
    Аналогично аргументу -V, а также выполняется установка параметру 'verbosefile' значение {файл}. Как результат, сообщения будут записываться в {файл}, а не отображаться на экране. Наименование {файла} не может начинаться с какой-либо цифры.

-w{число}
    Для параметра 'window' будет установлено значение, равное указанному {числу}.

-w {файл}
    Добавление всех введённых команд в {файл}. Все символы, введённые с клавиатуры вплоть до момента завершения работы редактора, записываются в {файл}. Удобно в том случае, когда вы хотите создать командный файл для последующего его использования в командной строке "vim -s" или в команде ":source!". Если {файл} уже существует, то набранный текст будет добавляются в конец файла.

-W {файл}
    Запись всех введённых команд в {файл}. Как аргумент "-w", но существующий {файл} будет перезаписан.

-x  Редактирование шифрованных файлов. Если редактор Vim был собран с поддержкой шифрования, то выполнять шифрование при записи файлов. Будет выдано приглашение ввести пароль.

-X  Запуск программы без подключения к X-серверу. Ускоряет загрузку в консоли, но делает невозможным использование заголовка окна и буфера обмена.

-Y  Запуск программы без подключения к Wayland Compositor.

-y  Работа в упрощённом варианте. Редактор Vim будет работать в упрощённом варианте, как будто исполняемый файл имеет название "evim" или "eview". Поведение редактора Vim будет походить на редакторы, созданные по безрежимному принципу работы.

-Z  Работа с ограничением функциональности. Работает так же, как и запуск исполняемого файла, наименование которого начинается с буквы "r".

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

--clean
    При работе редактора не использовать пользовательскую конфигурацию (файлы vimrc, подключаемые модули и т. п.). Полезно для проверки, что проблема в работе редактора не возникнет с предустановленными настройками программы Vim.

--cmd {команда}
    Как аргумент "-c", но команда исполняется перед обработкой любого файла настроек (vimrc). Можно указывать до десяти таких команд, независимо от количества команд "-c".

--echo-wid
    Только для графического интерфейса GTK. Отобразить идентификатор окна (Window ID) в поток стандартного вывода (stdout).

--gui-dialog-file {файл}
    При работе редактора в графическом интерфейсе пользователя, заголовок и сообщение диалогового окна будут записаны в {файл} без отображения на экране. Если указанный {файл} не существует, то он будет создан, а при его наличии сообщения будут дописываться в этот {файл}. Данный аргумент полезен только для тестирования работы редактора, чтобы избежать остановки программы, так как отображаемое диалоговое окно может быть скрыто. Если не поддерживается графический интерфейс пользователя, то этот аргумент игнорируется программой.

--help, -h, -?
    Будет показана краткая информация об аргументах и параметрах командной строки. После этого редактор Vim завершит работу.

--literal
    Данный аргумент указывает, что требуется воспринимать наименования файлов буквально, и не выполнять разбор подстановочных символов. Этот аргумент командной строки неприменим в Unix-подобных системах, где разбор подстановочных символов выполняется командной оболочкой.

--log {файл}
    Будет выполнена запись протокола работы с этапа инициализации программы. Если при сборке программы Vim были включены компоненты "eval" и "channel", будет выполняться протоколирование работы с самой ранней стадии запуска программы, а журнал записываться в {файл}. Это работает аналогично вызову функции ch_logfile({filename}, 'ao')

--nofork
    Режим активного приложения. Редактор Vim с графическим интерфейсом не будет наследоваться и отключаться от командной оболочки, в которой выполнена команда его запуска.

--noplugin
    Будет выполнен запуск программы без загрузки внешних подключаемых модулей. Это же подразумевается при указании аргумента -u NONE.

--not-a-term
    Не сообщать об отсутствии терминала для ввода-вывода. Через этот аргумент указывается, что операции ввода-вывода осуществляются не на терминал. Это позволяет избежать предупреждающего сообщения и двухсекундной задержки, которые могли бы возникнуть.

--remote
    Будет выполнено подключение к Vim-серверу и передача для правки файлов, указанных в последующих аргументах. Если сервер не найден, выводится предупреждение, а правка файлов выполняется в текущей копии редактора Vim.

--remote-expr {выражение}
    Будет выполнено подключение к Vim-серверу и передача указанного {выражение} для вычисления. Результат вычисления будет выведен в поток стандартного вывода (stdout).

--remote-send {код клавиши}
    Будет выполнено подключение к Vim-серверу и передача указанных {кодов клавиш}.

--remote-silent
    Как "--remote", но без вывода предупреждения, если сервер не найден.

--remote-wait
    Как "--remote", но редактор Vim не будет завершать работу до тех пор, пока не будет выполнена правка всех файлов.

--remote-wait-silent
    Как "--remote-wait", но без вывода предупреждения, если сервер не найден.

--serverlist
    Будет выведен перечень всех доступных Vim-серверов.

--servername {название}
    Использовать указанное {название} в качестве наименования сервера. Если аргумент "--remote" не указан, то {название} присваивается данной копии редактора Vim, в противном случае указывает на сервер, к которому следует подключиться. Если используется сервер сокетов, и если {название} начинается с символа "/", "./" или "../", она рассматривается как абсолютный или относительный маршрут к сокету

--clientserver {движок}
    Использовать соответствующий {движок} в качестве серверной части для функционала клиент-сервер. Допустимыми значениями является "soket" или "x11". Доступно только при компиляции с активированными компонентами soketserver и X11.

--socketid {id}
    Только для графического интерфейса GTK. Будет использован механизм GtkPlug для запуска редактора gVim в отдельном окне.

--startuptime {файл}
    Будет выполнена запись хронометража запуска программы в {файл}.

--ttyfail
    Будт сразу же завершена работа, если ввод-вывод получен не с терминала (tty).

--version
    Будет выведена информация о версии программы и завершена работа.

--windowid {ИД}
    Только для графического интерфейса в MS Windows. Редактор gVim будет использовать окно с указанным {ИД} в качестве родительского, чтобы попытаться выполнить запуск внутри этого окна.

ВСТРОЕННАЯ ДОКУМЕНТАЦИЯ
Для начала работы с документацией, наберите в редакторе Vim команду ":help". Введите ":help тема", чтобы получить справку по интересующей теме. Например, по команде ":help ZZ" будет выведена информация о команде "ZZ". Используйте клавиши <TAB> и CTRL+D для подстановки нужного названия темы (см. ":help cmdline-completion"). Для быстрого перемещения по документации используются индексы (что-то вроде гипертекстовых ссылок, см. ":help"). Таким образом можно переходить от одного файла документации к другому, например, ":help syntax.txt".

ФАЙЛЫ

/opt/local/share/vim/vim92/doc/*.txt
    Файлы документации редактора Vim. См. ":help doc-file-list" для получения полного перечня файлов.
    Здесь и далее vim?? означает сокращённую запись номера версии, например, vim91 для версии редактора Vim 9.1

/opt/local/share/vim/vim92/doc/tags
    Файл индексов, используемый для поиска информации в файлах документации.

/opt/local/share/vim/vim92/syntax/syntax.vim
    Общесистемные настройки распознавания и подсветки синтаксиса.

/opt/local/share/vim/vim92/syntax/*.vim
    Файлы распознавания и подсветки синтаксиса для различных языков программирования.

/opt/local/share/vim/vimrc
    Общесистемный файл начальной настройки для консольного редактора Vim.

~/.vimrc, ~/.vim/vimrc, $XDG_CONFIG_HOME/vim/vimrc
    Пользовательские файлы начальной настройки для консольного редактора Vim (будет использован первый найденный файл из указанных).

/opt/local/share/vim/gvimrc
    Общесистемный файл начальной настройки для редактора с графическим интерфейсом gVim.

~/.gvimrc, ~/.vim/gvimrc, $XDG_CONFIG_HOME/vim/gvimrc
    Пользовательские файлы начальной настройки для редактора с графическим интерфейсом gVim (будет использован первый найденный файл из указанных).

/opt/local/share/vim/vim92/optwin.vim
    Командный файл, используемый при выполнении команды ":options". По этой команде предоставляется удобный способ просмотра и изменения настроек.

/opt/local/share/vim/vim92/menu.vim
    Системные настройки меню для графического интерфейса редактора gVim.

/opt/local/share/vim/vim92/bugreport.vim
    Командный файл для создания отчёта об обнаруженных ошибках. См. ":help bugs".

/opt/local/share/vim/vim92/filetype.vim
    Командный файл для распознавания типов файлов по наименованию. См. ":help 'filetype'".

/opt/local/share/vim/vim92/scripts.vim
    Командный файл для распознавания типов файлов по содержимому. См. ":help 'filetype'".

/opt/local/share/vim/vim92/print/*.ps
    Файлы, используемые для печати через интерфейс PostScript.

Всю последнюю информацию о редакторе можно получить на веб-странице VIM:
<URL:http://www.vim.org/>

СМОТРИТЕ ТАКЖЕ
vimtutor(1)

АВТОРЫ
Большая часть редактора Vim была создана Брамом Моленаром (Bram Moolenaar), которому помогало огромное количество людей. См. ":help credits" в редакторе Vim.
Редактор Vim базируется на коде редактора Stevie, написанного Тимом Томпсоном (Tim Thompson), Тони Эндрюсом (Tony Andrews) и Г. Р. (Фредом) Уолтером (G.R. (Fred) Walter). Однако, в настоящее время в программе Vim почти ничего не осталось от исторического кода его предшественника.
Русская локализация редактора Vim выполняется в рамках проекта "РуВим", см. <URL:https://github.com/restorerz/ruvim/>.

ОШИБКИ
Скорее всего есть. См. ":help todo" — перечень известных ошибок в работе.

Заметим, что многие вещи, которые считаются ошибками, на самом деле являются результатом слишком полного воспроизведения поведения редактора Vi. Если вы думаете, что что-то является ошибкой только потому, что "Vi делает это по-другому", внимательно прочитайте файл vi_diff.txt (или наберите ":help vi_diff.txt" в редакторе Vim) и посмотрите параметры
 'compatible' и 'cpoptions'.