СПРАВОЧНИК ПО VIM - Брам Мооленаар

  1. Разные команды
  2. Справка
  3. Печать на принтере
  4. Использование Vim в качестве программы less или more

1. Разные команды

CTRL-L Очистить и затем обновить содержимое экрана.
:redr[aw][!] Обновить экран прямо сейчас. Если добавлен !, то экран сначала будет очищен. Эта команда полезна для обновления экрана в середине сценария или функции, а также в середине привязки, если включена опция 'lazyredraw'.
:redraws[tatus][!] Обновить строку состояния текущего окна. Если добавлен !, то происходит обновление строк состояния всех окон. Эта команда может выручить в том случае, если в определении строки состояния, заданном с помощью опции 'statusline' имеется элемент, обновление которого не происходит автоматически.

<Del>

При вводе числа: удалить последнюю цифру.

Замечание: если вам больше нравится использовать <BS>, то добавьте в свой загрузочный сценарий .vimrc такую привязку:

:map CTRL-V <BS>   CTRL-V <Del>

Если кнопка <Del> на вашей системе делает не то, что требуется, ознакомьтесь с пояснением к команде |:fixdel|.

:as[cii] или
ga

Напечатать значение кода ASCII для символа, расположенного в позиции курсора в десятичном, шестнадцатеричном и восьмеричном представлении.

Например, если курсор находится в позиции символа 'R':

<R>  82,  Hex 52,  Octal 122

Если символ не входит в кодовую таблицу ASCII, но тем не менее является печатным, согласно значению опции 'isprint', то будет также показана и непечатная форма этого символа. Если код символа больше 127, то также приводится запись символа в форме <M-x>. Например:

<~A>  <M-^A>  129,  Hex 81,  Octal 201
<Ч>  <|~>  <M-~>  254,  Hex fe,  Octal 376

Несмотря на то, что в файле символ <Nul> сохраняется как <NL>, он будет показан в виде:

<^@>;;  0,  Hex 00,  Octal 000

Мнемоника команды, связанная с английским названием: "Get ASCII value", получить значение ASCII.  
Vi не имеет такой возможности.

g8

Напечатать шестнадцатеричные значения байтов в коде символа, расположенного в позиции курсора, подразумевая, что символ представлен в кодировке |UTF-8|. Команда также показывает составные символы.

Например, символ, состоящий из трёх составных символов:

e0 b8 81 + e0 b8 b9 + e0 b9 89

Vi не имеет такой возможности.

:[диапазон]p[rint]

Напечатать заданный [диапазон] строк ( по умолчанию: текущую строку).

Замечание: если вам необходимо распечатать текстовый файл, то вам потребуется внешняя программа. В Vim с графическим интерфейсом этой цели служит меню Файл.Печать. Подробнее о печати документов на бумаге см. |:hardcopy|.

:[диапазон]p[rint] {число} Напечатать заданное {число} строк, начиная с указанного [диапазона] (по умолчанию: с текущей строки, см. |командная_строка-диапазоны|).
:[диапазон]P[rint] [число] То же, что и ":print".  По-видимому, было добавлено в Vi для тех, кому нравится часто нажимать на <Shift>...
:[диапазон]l[ist] [число] То же, что и ":print", но непечатные символы будут показаны с помощью '^'.
:[диапазон]nu[mber] [число] То же, что и ":print", но добавить номер строки в начале каждой строки. См. также справку по опции 'highlight'.
:[диапазон]# [число] То же, что и ":number".
:{диапазон}z[+-^.=]{число}

Показать несколько строк текста, окружающих строку, указанную с помощью {диапазона} (по умолчанию: вокруг текущей строки). При этом будет напечатано указанное {число} строк, или, если {число} не указано, то будет использоваться значение высоты текущего окна.

При этом, :z можно использовать либо так, как описано выше, либо вместе со специальными символами, которые имеют следующее значение:

символ первая строка посл. строка другая позиция
+ текущая стр. 1 экран вперёд 1 экран вперёд
- 1 экран назад текущая строка текущая строка
^ 2 экрана назад 1 экран назад 1 экран назад
. полэкрана назад полэкрана вперёд полэкрана вперёд
= полэкрана назад полэкрана вперёд текущая строка

Если специальный символ не указан, то по умолчанию считается, что был указан символ "+". Если указан символ "=", то текущая строка выделяется горизонтальными линиями.

:{диапазон}z#[+-^.=]{число} То же, что и ":z", но с указанием номеров строк.
Доступно не во всех версиях Vi и не со всеми параметрами, которые здесь описаны.
:= Напечатать номер последней строки.

:{range}=

Напечатать номер последней строки в указанном {диапазоне}. Например, для вывода номера текущей строки:

:.=

:norm[al][!] {команды}

Выполнить указанные {команды} Обычного режима. Эта команда позволяет выполнять команды Обычного режима из командной строки. Указанные {команды} выполняются так, как они набраны. При отмене все введённые команды отменяются. Если указан [!], то привязки не используются. Указанные {команды} должны быть набраны полностью. Если {команды} не являются завершённой последовательностью, то последняя команда будет прервана, как если бы был введён символ <Esc> или <C-C>. Во время выполнения команды ":normal" экран не обновляется. Это, в частности, значит, что команда Вставки должна быть полностью закончена (о том, как перейти в режим вставки с помощью команды Ex, см. |:startinsert|). Команда, начинающаяся с ":", также должна быть закончена.

Указанная последовательность {команд} не может начинаться с пробела. Однако, вы можете поместить число 1 в самом начале последовательности перед пробелом.

При выполнении указанных {команд} значение опции 'insertmode' игнорируется. После команды ":normal" не могут использоваться другие команды Ex, поскольку '|' воспринимается как часть ввода последовательности команд Обычного режима. Команда может быть использована рекурсивно, однако глубина рекурсии ограничена значением 'maxmapdepth'.
Если команда ":normal" вызывается из непереопределяемой привязки |:noremap|, то её аргумент, тем не менее, может использовать привязки. Альтернативным решением может быть использование команды |:execute|, которая в качестве параметра использует выражение. Это позволяет использовать печатные символы. Например:

:exe "normal \<c-w>\<c-w>"

Vi не имеет такой возможности, конечно же доступно только в том случае, если Vim скомпилирован с особенностью |+ex_extra|.

:{диапазон}norm[al][!] {команды} Выполнить указанные {команды} Обычного режима для все строк, которые находятся в указанном {диапазоне}. Перед выполнением указанных {команд} курсор помещается в первой колонке диапазона, последовательно на каждой затронутой строке. Во всём остальном команда соответствует команде ":normal" без указания диапазона.
Vi не имеет такой возможности.
Доступно только в том случае, если Vim скомпилирован с особенностью |+ex_extra|.
:sh[ell]

Эта команда позволяет запустить оболочку из редактора. Когда оболочка прекращает работу (по команде "exit"), то происходит возврат в редактор. Имя оболочки содержится в значении опции 'shell'.

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

:!{команда}

Выполнить указанную {команду} в оболочке.  См. также справку по опциям 'shell' и 'shelltype'. Любой символ '!' в {команде} заменяется на предыдущую внешнюю команду (см. также справку по опции 'cpoptions'). Однако, если перед символом '!' указана обратная косая черта, то символ обратной косой черты игнорируется, а '!' передаётся как есть. Например: если после команды ":!ls" выполняется команда  ":!echo        ! \! \\!", то это приводит к выполнению команды "echo ls ! \!"/

После выполнения команды проверяется время записи текущего файла, см. |отметка_времени_изменения|. Внутри команды не может встречаться символ '|',  см. |:bar|.

{команда} заканчивается символом новой строки. Всё, что следует за этим символом воспринимается как следующая команда ":". Однако, если перед символом новой строки указана обратная косая черта, то символ обратной косой игнорируется, а {команда} продолжается. Независимо от количества символов обратной косой перед символом новой строки игнорируется только одна обратная косая.

На Unix команда обычно выполняется в неинтерактивной оболочке. Если вы хотите получить доступ к интерактивной оболочке, например для использования синонимов команд, то установите значение опции 'shellcmdflag' равным "-ic".

Для Win32 также см. |:!start|.

После выполнения команды выполняется обновление экрана, поскольку команда может выводить какой-либо текст. При этом выводится сообщение: приглашение нажать <Enter> для продолжения. Если вы не хотите видеть это сообщение, то используйте команду

:silent !{команда}

Экран в этом случае не обновляется, поэтому вам может потребоваться использовать CTRL-L или ":redraw!" в том случае, если команда что-то вывела на экран.

См. также |окно_оболочки|.

:!! Повторить предыдущую команду ":!{команда}".

:ve[rsion]

Напечатать информацию о текущей версии редактора. Если компилятор распознаёт "__DATE__", то будет также выведена дата сборки. В противном случае отображается дата релиза.

Далее выводится информация о различных особенностях, которые были включены во время сборки Vim. Если перед именем особенности стоит символ '+', то эта особенность была включена во время сборки, если '-' - наоборот, отключена. Чтобы изменить список особенностей, включённых при сборке редактора, необходимо отредактировать файл feature.h и собрать редактор заново. Чтобы проверить, включена та или иная особенность в данном экземпляре редактора, внутри выражения, используйте |has()|. Ниже приводится список особенностей. В первой колонке показана наименьшая версия, в которой включается данная особенность:

T Кроха (tiny)
S Малая версия (small)
N Обычная версия (normal)
B Большая версия (big)
H Огромная версия (huge)
m возможность включается вручную, либо зависит от других особенностей
(нет) Особенность зависит от операционной системы

Таким образом, если особенность помечена как "N", то она будет включена в обычной, большой и огромной версиях Vim.

  +ARP Только в версии Amiga: с поддержкой ARP
B +arabic С поддержкой |арабского| языка
N +autocmd Автокоманды, |:autocmd|
m +balloon_eval Поддержка |вычислений_в_пузыре|
N +browse Команда |:browse|
N +builtin_terms С некоторыми встроенными терминалами |встроенные_терминалы|
B ++builtin_terms С максимумом встроенных терминалов |встроенные_терминалы|
N +byte_offset Поддержка флага 'o' в опции 'statusline' и команд "go" и ":goto".
N +cindent Форматирование отступов в стиле языка C |'cindent'|
N +clientserver Unix и Win32: Удалённый запуск |клиент-сервер|
  +clipboard Поддержка системного буфера обмена |буфер_обмена|
N +cmdline_compl Автодополнение командной строки |дополнение_командной_строки|
N +cmdline_hist История командной строки |история_командной_строки|
N +cmdline_info Поддержка опций |'showcmd'| и |'ruler'|
N +comments Поддержка опции |'comments'|
N +cryptv Поддержка шифрования, см. |шифрование|
B +cscope Поддержка для |cscope|
N +dialog_gui Поддержка команды |:confirm| в графическом интерфейсе
N +dialog_con Поддержка команды |:confirm| в консоли
N +dialog_con_gui Поддержка команды |:confirm| в графическом интерфейсе и в консоли
N +diff |vimdiff| и поддержка опции 'diff'
N +digraphs |диграфы|
  +dnd Поддержка перемещения фрагментов текста в регистр "~ с помощью мыши (Drag'n'Drop) |кавычка_~|
B +emacs_tags Поддержка файлов |emacs-метки|
N +eval Поддержка вычисления выражений |eval.txt|
N +ex_extra Дополнительные команды Ex Vim: |:center|, |:left|, |:normal|, |:retab| и |:right|
N +extra_search Опции |'hlsearch'| и |'incsearch'|
B +farsi Поддержка языка |фарси|
N +file_in_path Поддержка |gf|, |CTRL-W_f| и |<cfile>|
N +find_in_path Поиск по включённым файлам: |[I|, |:isearch|, |CTRL-W_CTRL-I|, |:checkpath| и т.д.
N +folding Поддержка |складок|
  +footer Строка сообщений в окне в графическом интерфейсе |графический_интерфейс-строка_сообщений|
  +fork Только в Unix: использовать |fork| для команд оболочки
N +gettext Перевод сообщений редактора, см. |языки|
  +GUI_Athena Только в Unix: Графический интерфейс Athena, см. |GUI|
  +GUI_neXtaw Только в Unix: Графический интерфейс neXtaw, см. |GUI|
  +GUI_BeOS Только в BeOS: Графический интерфейс BeOS, см. |GUI|
  +GUI_GTK Только в Unix: Графический интерфейс GTK+, см. |GUI|
  +GUI_Motif Только в Unix: Графический интерфейс Motif, см. |GUI|
  +GUI_Photon Только в QNX: Графический интерфейс Photon, см. |GUI|
m +hangul_input Поддержка ввода на корейском языке, см. |хангыл|
  +iconv Собрано с поддержкой функции |iconv()|, возможна также динамическая загрузка |/dyn|
N +insert_expand Дополнение в режиме Вставки |вставка_расширенная|
N +jumplist Список прыжков, см. |список_прыжков|
B +keymap Поддержка опции |'keymap'|
B +langmap Поддержка опции |'langmap'|
N +libcall Поддержка |libcall()|
N +linebreak Поддержка опций |'linebreak'|, |'breakat'| и |'showbreak'|
N +lispindent Поддержка опции |'lisp'|
N +listcmds Поддержка команд Vim для получения списка буферов (см. |буферы-скрытые| и списка аргументов (см. |:argdelete|)
N +localmap Поддержка местных по отношению к буферу привязок,  см. |:map-местная|
N +menu Поддержка команды |:menu|
N +mksession Поддержка команды |:mksession|
N +modify_fname Поддержка модификаторов в именах файлов, см. |имя_файла-модификаторы|
N +mouse Поддержка мыши, см. |использование_мыши|
N +mouseshape Поддержка опции |'mouseshape'|
B +mouse_dec Только на Unix: поддержка мыши в терминале Dec, см. |dec-мышь|
N +mouse_gpm Только на Unix: поддержка мыши в консоли Linux, см. |мышь-gpm|
B +mouse_netterm Только на Unix: поддержка мыши в netterm, см. |netterm-мышь|
N +mouse_pterm Только на QNX: поддержка мыши в pterm, см. |терминал-qnx|
N +mouse_xterm Только на Unix: поддержка мыши в xterm, см. |xterm-мышь|
B +multi_byte Корейский и другие языки, |мультибайт|
  +multi_byte_ime Метод ввода Win32 для мультибайтных кодировок, см. |ime_для_мультибайтного_ввода|
N +multi_lang Поддержка других языков, кроме английского, см. |языки|
m +netbeans_intg Поддержка |netbeans|
m +ole Только для версии Win32 с графическим интерфейсом: |интерфейс_для_ole|
  +osfiletype Поддержка опции 'osfiletype' и проверки типа файла в автокомандах.  См. |автокоманды-тип_файла_в_разных_системах|
N +path_extra Поддержка поиска в 'path' и 'tags'
m +perl Интерфейс для языка |perl|, может быть загружен динамически (см. |/dyn|)
  +postscript Использование |:hardcopy| для записи файла PostScript
N +printer Команда |:hardcopy|
m +python Интерфейс для языка |python|, может быть загружен динамически |/dyn|
N +quickfix Команды |:make| и |быстрое_исправление|
B +rightleft Поддержка ввода текста справа налево, см |'rightleft'|
m +ruby Интерфейс для языка |ruby|, может быть загружен динамически |/dyn|
N +scrollbind Поддержка опции |'scrollbind'|
B +signs Поддержка команды |:sign|
N +smartindent Поддержка опции |'smartindent'|
m +sniff Интерфейс для SniFF, см. |sniff|
N +statusline Поддержка опций 'statusline', 'rulerformat' и специального формата опций 'titlestring' и 'iconstring'
m +sun_workshop Поддержка Sun Workshop, см. |workshop|
N +syntax Подсветка синтаксиса, см. |синтаксис|
  +system() Только для Unix: противоположность особенности |+fork|
N +tag_binary Бинарный поиск по файлу меток, см. |двоичный_поиск_меток|
N +tag_old_static Старый метод поиска статических меток, см. |старый_метод_поиска_статических_меток|
m +tag_any_white Позволяет использовать любые пробелы в метках, см. |метки-любые_пробелы|
m +tcl Интерфейс для |tcl|, может быть загружен динамически |/dyn|
  +terminfo Использование |terminfo| вместо termcap
N +termresponse Поддержка кода терминала |t_RV| и переменной |v:termresponse|
N +textobjects Выделение текстовых объектов, см. |текстовые_объекты|
  +tgetent Кроме Unix: использование внешней базы особенностей терминалов termcap
N +title Устанавливает заголовок окна |'title'|
N +toolbar Поддержка панели инструментов в графическом интерфейсе, подробнее см. раздел |графический_интерфейс-инструментальная_панель|
N +user_commands Поддержка пользовательских команд, см. |команды_пользователя|
N +viminfo Поддержка опции |'viminfo'|
N +vertsplit Вертикальный раскрой окон, см. |:vsplit|
N +virtualedit Поддержка опции |'virtualedit'|
S +visual Поддержка Визуального режима, см. |визуальный_режим|
N +visualextra Дополнительные команды для Визуального режима, см. |блоковые_операторы|
N +vreplace Поддержка виртуальной замены, см. |gR| и |gr|
N +wildignore Поддержка опции |'wildignore'|
N +wildmenu Поддержка опции |'wildmenu'|
S +windows Поддержка нескольких окон
m +writebackup Установка опции |'writebackup'| в значение "включено" по умолчанию
m +xim Метод ввода X |xim|
  +xfontset Поддержка шрифтовых наборов в X |xfontset|
  +xsmp Поддержка управления сеансов в X (XSMP)
  +xsmp_interact Поддержка интерактивного управления сеансов в X (XSMP)
N +xterm_clipboard Только в Unix: поддержка буфера обмена xterm
m +xterm_save Сохранение и восстановление экранов в xterm |xterm-экраны|
N +X11 Только в Unix: восстановление заголовка окна |X11|

Если та или иная особенность включена с динамической загрузкой, то она будет работать только в том случае, если удалось загрузить соответствующую библиотеку. В этом случае, в списке включённых особенностей к названию особенности добавляется окончание "/dyn".

 :ve[rsion] {номер} Команда игнорируется. В предыдущих версиях эта команда использовалась для проверки версии редактора из файла .vimrc. Сейчас в ней нет необходимости, поскольку подобного эффекта можно достичь с помощью команды ":if".
Vi не имеет такой возможности. 
:redi[r][!] > {файл} Позволяет перенаправлять сообщения в указанный {файл}. Сообщения команд будут не только отображаться на экране, но также будут записаны в указанный вами файл до тех пор, пока режим перенаправления не отменён. Если к команде добавлен [!], то существующий файл будет переписан заново. Если [!] отсутствует, а указанный {файл} уже существует, то команда не будет выполнена.
Одновременно может быть установлен только один режим перенаправления. Последующие вызовы ":redir" приводят к закрытию предыдущего перенаправления перед перенаправлением в новый файл.
Чтобы те или иные сообщения не отображались на экране, соответствующие команды следует поместить в функцию и вызывать её с помощью ":silent call Function()".
Vi не имеет такой возможности.
:redi[r] >> {файл} Перенаправление сообщений в указанный {файл}. Если {файл} существует, то новые сообщения будут добавляться к прежнему содержимому файла.
Vi не имеет такой возможности.
:redi[r] @{a-zA-Z} Перенаправление сообщений в указанный регистр {a-z}. Если имя регистра указано в верхнем регистре символов {A-Z}, то новые сообщения будут добавлены к прежнему содержимому регистра.
Vi не имеет такой возможности.
:redi[r] @* Перенаправление сообщений в системный буфер обмена.
Vi не имеет такой возможности.
:redi[r] @" Перенаправление сообщений в безымянный регистр.
Vi не имеет такой возможности.
:redi[r] END Выключение перенаправления сообщений.
Vi не имеет такой возможности.

:sil[ent][!] {команда}

Выполнить указанную {команду} молча. При выполнении команды обычные сообщения не будут выводиться на экран и добавляться в историю сообщений. Если в команде указан [!], то не будут выводится и сообщения об ошибках - в этом случае выполнение команд и привязок не будет прерываться в случае возникновения ошибок. Однако, переменная |v:errmsg| будет изменять своё значение. Если [!] не указан, то после появления сообщения об ошибке будут показываться все сообщения, в том числе и обычные.

При использовании команды |:redir| перенаправление будет продолжаться в обычном режиме, за исключением ряда возможных незначительных тонкостей. Это позволяет организовать перенаправление сообщений, отключив при этом их отображение на экране. Например:

:redir >/tmp/foobar
:silent g/Aap/p
:redir END

Чтобы выполнить молча команду Обычного режима, используйте команду |:normal|. Например, для отключения сообщений при поиске строки:

:silent exe "normal /path\<CR>"

Команда ":silent!" полезна при выполнении команд, которые могут завершиться неудачей, однако эту неудачу следует игнорировать. Например:

:let v:errmsg = ""
:silent! /^begin
:if v:errmsg != ""
: ... шаблон не обнаружен

Команда ":silent" также позволяет избежать приглашения ввести <Enter>. При использовании с внешней командой это может привести к мусору на экране. Для очистки экрана в таких случаях следует использовать команду |CTRL-L|.

Команда ":silent menu ..." определяет такое меню, которое не будет отображаться в командной строке. Тем не менее, сообщения от исполняемой команды будут при этом поступать на экран. Чтобы заставить замолчать саму команду, используйте дополнительную команду :silent: ":silent menu ... :silent command".

:[число]verb[ose] {команда}

На время выполнения {команды} значение опции 'verbose' устанавливается равным заданному [числу], по умолчанию: 1.

Если при этом используется также команда ":silent", то необходимые сообщения будут создаваться, но не будут выводиться на экран.

Совместное использование ":silent" и ":verbose" может быть использовано для создания сообщений, которые можно затем проверять с помощью переменных вроде |v:statusmsg|. Например:

:let v:statusmsg = ""
:silent verbose runtime foobar.vim
:if v:statusmsg != ""
:  " foobar.vim could not be found
:endif

Если после этого следует какая-нибудь другая команда, то ":verbose" применяется только к первой. Например:

:4verbose set verbose | set verbose
verbose=4 ~
verbose=0 ~

K

Запускает программу просмотра ключевого слова, расположенного в позиции курсора. Имя программы задаётся значением опции 'keywordprg' ('kp'), по умолчанию: "man". В состав ключевого слова могут входить буквы, цифры и символы, содержащиеся в значении опции 'iskeyword'. Аналогичного эффекта можно достичь по команде

:!{программа} {ключевое слово}

Пример программы, которую можно использовать с этой команды поставляется вместе с Vim в каталоге tools. Она называется 'ref' и выполняет простую проверку  орфографии.

Особые случаи вызова этой команды:

  • Если значение опции 'keywordprg' является пустой строкой, то используется команда ":help". В этом случае имеет смысл для расширения поиска включить больше символов в значение опции 'iskeyword'.
  • Если значением опции 'keywordprg' является строка "man", то число, указанное перед командой "K" используется в качестве первого параметра команды "man" перед ключевым словом. Например, если курсор находится на слове "mkdir", то команда "2K" приводит к выполнению команды
!man 2 mkdir
  • Если в качестве значения 'keywordprg' используется строка "man -s", то число, указанное перед "K" вставляется после "-s". Если число не указано, то ключ "-s" не передаётся.

Vi не имеет такой возможности.

{Визуально}K То же, что и "K", но в качестве ключевого слова является выделенный в Визуальном режиме текст. Работает только в том случае, если выделенный текст находится в пределах одной строки.
Vi не имеет такой возможности.

[N]gs
:[N]sl[eep] [N] [m]

Ничего не делать в течение [N] секунд. Если указан параметр [m], то сон Vim будет длиться [N] миллисекунд. Число, указанное перед командой "gs" всегда указывает на секунды. По умолчанию: 1 секунда.

:sleep             "уснуть на секунду
:5sleep             "уснуть на пять секунд
:sleep 100m     "уснуть на 100 миллисекунд
10gs             "уснуть на 10 секунд

Действие команды может быть прервано по команде CTRL-C (CTRL-Break в MS-DOS). Мнемоника команды "gs" основана на английском языке: "goto sleep", "пойти поспать". Во время сна курсор, если он отображается, расположен в текстовом буфере.

Vi не имеет такой возможности.

g CTRL-A Команда доступна только в том случае, если Vim был собран с установленной во время компиляции переменной MEM_PROFILING (что бывает весьма редко). Команда полезна только для отладки программного кода самого редактора, она выводит статистику по использованию редактором памяти.

2. Справка

<Help> или
:h[elp]
Открыть окно и показать в нём файл справки в режиме только для чтения. Если окно справки уже открыто, то файл справки будет показан в этом окне. В противном случае, если текущее окно занимает полную ширину экрана или не менее 80 символов в ширину, то окно справки будет помещено непосредственно над текущим окном, иначе окно помещается в самом верху экрана. Опция 'helplang' применяется для выбора языка в том случае, если основной файл справки доступен на нескольких языках.
Vi не имеет такой возможности.

:h[elp] {тема}

Работает как команда ":help", но при этом происходит автоматическое перемещение к метке с указанной {темой}. При этом в {теме} можно использовать символы подстановки, такие как "*" и "?":

:help z?        показать справку для любой команды "z"
:help z.        показать справку для "z."

Если полного соответствия указанному шаблону не существует или если имеется несколько соответствий, то будет использовано "лучшее" с точки зрения Vim соответствие. Для выбора лучшего соответствия используется довольно сложный алгоритм, учитывающий следующие факторы:

  • Соответствие в том же регистре символов будет лучше, чем соответствие с другим регистром символов.
  • Соответствие, которое начинается после символа, не являющегося буквой или цифрой, всегда лучше, чем соответствие в середине слова.
  • Соответствие в начале или около начала метки лучше соответствия, расположенного ближе к концу метки.
  • Чем больше соответствий алфавитно-цифровым символом, тем лучше.
  • Чем короче длина соответствующей метки, тем лучше.

Для выбора языка справки используется опция 'helplang', которая работает в том случае, если заданная {тема} доступна на нескольких языках. Для поиска метки на определённом языке, добавьте к концу темы "@ab", где "ab" это двухбуквенный код языка. Например, для русского языка используется код "ru". См. также |справка-перевод_на_другие_языки|.

Обращаем ваше внимание, что чем длиннее заданная {тема}, тем меньше будет найдено соответствий. Чтобы представить, как это работает, попробуйте воспользоваться дополнением командной строки (после ввода команды нажмите CTRL-D). Если имеется несколько соответствий, то их список можно увидеть, нажимая CTRL-D. Например:

:help cont<Ctrl-D>

Для того, чтобы использовать |шаблон| регулярных выражений, надо сначала выполнить команду ":help", а затем команду ":tag {шаблон}" в окне справки. После этого можно пользоваться командами ":tnext" для прыжка к следующей метке и ":tselect" для выбора необходимого соответствия из списка.

:help index| :tse z.

Эта команда может использоваться с другой командой, подклеенной с помощью '|', при этом внутри команды ":help" не нужно экранировать '|'. Таким образом, работают обе команды:

:help |
:help k| only

Обратите внимание, что пробел перед '|' воспринимается как часть параметра команды ":help".

Чтобы отделить команду получения справки от следующей команды также можно использовать символы <LF> или <CR>. Для ввода этих символов необходимо сначала ввести команду CTRL-V. Например:

:help so<C-V><CR>only

Vi не имеет такой возможности.

:h[elp]! [тема] То же, что и ":help", но предпочитать поиск метки в файле с тем же языком, что и текущий файл для неанглийских файлов справки. См. также |справка-перевод_на_другие_языки|.

:helpg[rep] {шаблон}

Команда выполняет поиск соответствий указанному {шаблону} во всех файлах справки и составляет список найденных соответствий. После этого происходит переход к первому соответствию. Перемещаться по списку соответствий можно при помощи команд быстрого исправления (см. |быстрое_исправление|), например |:cnext| для перехода к следующему соответствию. Чтобы открыть список в окне можно воспользоваться командой |:cwindow| (используется окно списка ошибок). В качестве {шаблона} используется обычный |шаблон| регулярных выражений Vim.

Опция 'ignnorecase' не используется, но вы можете добавить "\c" для того, чтобы игнорировать регистр символов.

Пример регистрозависимого поиска:

:helpgrep Уганда

Пример регистронезависимого поиска:

:helpgrep уганда\c

Эта команда не может быть склеена с другой командой, поскольку всё, что следует за командой воспринимается как шаблон. Однако, вы можете воспользоваться возможностями, которые предоставляет команда |:execute|, если это необходимо. Поиск в сжатых файлах справочника не выполняется. (Файлы справки сжимаются на Debian).

Vi не имеет такой возможности.

Если команда |:help| используется без параметров, то будет открыт файл, указанный в значении опции 'helpfile'. В противном случае поиск указанной в параметре метки будет вестись во всех файлах "doc/tags", в каталогах, указанных с помощью опции 'runtimepath'.

Высота окна справки может быть установлена с помощью опции 'helpheight' (по умолчанию: 20).

Для перемещения между темами используйте метки:

  • По команде CTRL-] совершается прыжок к имени, на котором находится курсор. В качестве имени может выступать ключевое слово, название опции или команды. Имя должно состоять из символов, которые могут быть в составе ключевого слова. "<C-Leftmouse>" (нажатие левой кнопки мыши с кнопкой <Ctrl>) и "g<LeftMouse>" выполняют те же самые действия.
  • можно также использовать команду ":ta {тема}". Такая команда позволяет использовать также символы, которые не входят в состав ключевых слов.

Для возврата к предыдущей позиции используйте CTRL-T или CTRL-O.

Закрыть окно справки можно по команде ":q".

Если имеется несколько соответствий для заданной вами темы, то можно использовать следующий метод для перехода к каждому из них по очереди:

  1. Откройте окно справки.
  2. Используйте команду ":tag" с символом косой черты перед именем метки.

    Например:

    :tag /min
  3. Для перехода к следующей метке используйте команду ":tnext".

Вы можете добавлять файлы справки для модулей и других элементов. При этом вам не потребуется изменять стандартные файлы справки. Подробнее см. |добавление_файла_справки|.

О том, как написать собственный файл справки, читайте в разделе |создание_справки|.

Обратите внимание, что заголовки местных справочных файлов автоматически добавляются в раздел "МЕСТНЫЕ ДОПОЛНЕНИЯ" в файле "help.txt". См. |местные_дополнения|. Это добавление происходит во время просмотра этого файла в редакторе, сам файл при этом не изменяется. Редактор сам просматривает все местные дополнения к справочнику и вставляет необходимые строки "на лету", за исключением файлов в каталоге $VIMRUNTIME/doc.

Если вам хочется держать справочник в отдельном окне xterm, то вы можете использовать такую команду:

:!xterm -e vim +help &
:helpf[ind] То же, что и |:help|, но позволяет использовать диалог для ввода параметра. Существует для обратной совместимости с прежними версиями. Вместо встроенного диалога в современных версиях эта команда выполняет пункт меню Toolbar.FindHelp.
Доступно только в том случае, если Vim скомпилирован с особенностью |+GUI_GTK|.
Vi не имеет такой возможности.

:helpt[ags] {каталог}

Создаёт файл меток для указанного {каталога}. При этом будет проводиться поиск определений меток, заключённых между звёздочками, во всех файлах "*.txt" и "*.??x". Файлы "*.??x" используются для переводов документации на другие языки, для них создаётся отдельный файл меток "tags-??", см. |справка-перевод_на_другие_языки|. Созданный по этой команде файл сортируется. При обнаружении двойных определений выдаётся сообщение об ошибке. Существующий файл меток переписывается без выдачи предупреждений.

Чтобы перестроить метки справочника в каталоге рабочей среды Vim, выполните команду:

:helptags $VIMRUNTIME/doc

(требуются права на запись в этом каталоге)

Vi не имеет такой возможности.

ПЕРЕВОД СПРАВКИ НА ДРУГИЕ ЯЗЫКИ

Вы можете добавить переведённые на другой язык файлы справки к исходным файлам на английском языке. Vim будет выполнять поиск справки во всех файлах справочника в каталогах, заданных значением опции 'runtimepath'. Эта возможность доступна только при включённой особенности |+multi_lang|.

Набор переведённой документации состоит из следующих файлов:

help.abx
howto.abx
...
tags-ab

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

help.rux
howto.rux
...
tags-ru

Опция 'helplang' используется для задания предпочтительных языков для документации. По умолчанию её значение устанавливается в соответствии со средой, в которой работает Vim. Vim прежде всего пытается найти соответствующие метки в файлах справки на предпочтительном языке. Если это сделать не удалось, то используется английский язык справки.

Для поиска метки в файлах справочника на определённом языке добавьте "@ab" к метке, где "ab" это двухбуквенный код языка. Например:

:he user-manual@ru<br< a="">>        :he user-manual@en>

Первая команда выполняет поиск русского руководства пользователя, даже в том случае, когда значением опции 'helplang' является пустая строка. Вторая команда выполняет поиск английского руководства пользователя, даже если значением опции 'helplang' является "ru".

При использовании автодополнения при вводе команды ":help", расширение "@en" добавляется только в том случае, когда метка используется в файлах справки на нескольких языках. Если метка существует только в английском файле справки, то расширение "@en" опускается.

При использовании |CTRL-]| или команды ":help!" в неанглийском файле справки Vim пытается найти нужную метку на том же самом языке. Если это не получается, то для выбора языка используется значение опции 'helplang'.

Файлы справки должны быть в кодировке latin1 или utf-8. Vim считает, что кодировка файла справки utf-8, если в первой строке файла обнаружены не-ASCII символы. Таким образом, вы должны перевести строку "For Vim version".

Для всех файлов справки в одном каталоге для одного языка должна использоваться одна и та же кодировка. Вы можете использовать разные кодировки для разных языков. Вы также можете использовать разные кодировки для файлов справки одного языка, если они помещаются в разных каталогах.

Советы переводчикам:

  • Не переводите метки, иначе будет невозможно использовать опцию 'helplang' для выбора предпочтительного языка. Вы можете добавлять метки на другом языке, если у вас есть такое желание.
  • Если файл не переведён полностью, то добавляйте метки к английской версии с помощью записи "метка@en".
  • Сделайте языковой пакет доступным для загрузки другими пользователями. В этом случае другие пользователи смогут распаковать его у себя в каталоге "doc" и начать им пользоваться. Не забудьте сообщить о своём переводе Браму, чтобы он мог поместить ссылку на сайте www.vim.org. (*)
  • Используйте команду |:helptags| для создания файлов меток. Эта команда автоматически найдёт все языки в указанном каталоге.

Именно этим и занимается проект РуВим; поскольку в этом пакете включены не только переводы справочника на русский язык, но и другие связанные с русским языком файлы, то его следует распаковывать в один из каталогов, указанных в значении опции 'runtimepath'. Подробнее о проекте РуВим см. |русский-пакет_языковой_поддержки|.

3. Печать на принтере

В MS-Windows Vim может печатать текст на любом установленном в системе принтере. На других системах подготавливается файл в формате PostScript, который может быть отправлен на принтер PostScript. Чтобы использовать не-PostScript принтер на системах, отличных от MS-Windows, вам потребуется вспомогательная программа, например ghostscript.

3.1 Печать PostScript
3.2 8-битные кодировки для печати
3.3 Устранение проблем при печати PostScript
3.4 Утилиты PostScript
3.5 Символы протяжки бумаги

Vi не имеет такой возможности.
Доступно только в том случае, если Vim скомпилирован с особенностью |+printer|.

:[диапазон]ha[rdcopy][!] [параметры]

Отправить строки в указанном [диапазоне] (по умолчанию: весь файл) на принтер.

На MS-Windows вы сможете воспользоваться системным диалогом для выбора принтера, размера бумаги и прочих параметров печати. Чтобы не показывать диалог, к команде следует добавить [!]. В этом случае используется принтер, указанный в значении опции 'printdevice', или, если значением опции 'printdevice' является пустая строка, принтер, установленный в системе как основной.

Для систем, отличных от MS-Windows, файл PostScript записывается во временный файл, а для печати этого файла используется выражение, указанное в значении опции 'printexpr'. Дополнительные [параметры] команды печати доступны в выражении через переменную |v:cmdarg|. В противном случае [параметры] игнорируются. Для задания размера бумаги, дуплекса и других опций печати используется опция 'printoptions'.

:[диапазон]ha[rdcopy][!] >{файл}

То же, что и предыдущая команда, но PostScript будет записан в указанный {файл}. Символы вроде "%" будут работать, как ожидается.  См. |командная_строка-спецсимволы|

Внимание: существующий файл будет перезаписан без предупреждения.

Доступно только в том случае, если Vim скомпилирован с особенностью |+postscript|.

В MS-Windows для достижения тех же результатов следует пользоваться особенностью "Печать в файл" драйвера принтера.

 Во время печати будет отображаться состояние процесса печати в виде номера страницы и процентного отношения. Для остановки печати используйте кнопку прерывания (CTRL-C или, на системах MS, CTRL-Break).

Параметры печати управляются опциями 'printfont' и 'printoptions'. Опция 'printheader' позволяет задать формат заголовка страницы.

При печати используются установленные поля страницы, независимо от текущего значения опций 'wrap' и 'linebreak'. Для того, чтобы отключить перенос строк при печати, можно использовать элемент опции 'printoptions' "wrap". При печати используются текущие цвета подсветки синтаксиса с некоторыми изменениями:

  1. Обычный фон всегда считается белым (т.е. цвет бумаги).
  2. Белый текст (обычный цвет текста) считается чёрным, чтобы его было видно на бумаге!
  3. Если значением опции 'background' является "dark", то все цвета затемняются, поскольку на белой бумаге они, скорее всего, выглядели бы слишком светлыми.

3.1 Печать PostScript

У вас не должно возникать проблем при создании файла PostScript, если на диске имеется достаточно свободного места. Файлы рабочей среды должны быть установлены правильно (что скорее всего так, если вы способны читать справку).

При печати PostScript в текущих версиях имеется ряд ограничений:

  • 'printfont' - Имя шрифта игнорируется (всегда используется семейство Courier, шрифты этого семейства должны быть доступны на всех принтерах PostScript), хотя размер шрифта используется при печати.
  • 'printoptions' - Установки дуплекса используются при формировании файла PostScript, но последнее слово остаётся за принтером. Если принтер не поддерживает дуплексную печать, то наиболее вероятно, что эти настройки будут просто молча игнорироваться. В то же время, некоторые принтеры могут отказаться печатать такой PostScript.
  • Поддержка 8-битных символов - Несмотря на то, что поддерживается ряд 8-битных кодировок, некоторые символы могут быть непечатными. Это зависит от шрифта, установленного в принтере. Пропущенные символы могут заменяться на печати перевёрнутым вопросительным знаком или пробелом. При этом, часто можно избавиться от этих проблем путём установки новой версии принтерного шрифта семейства Courier.
  • Поддержка мультибайтных кодировок - В текущих версиях Vim будет пытаться преобразовать мультибайтные символы в 8-битную кодировку, указанную в значении опции 'printencoding' (по умолчанию, если опция 'printencoding' пустая -- latin1). Символы, которые не могут быть преобразованы, будут напечатаны как неизвестные символы. Если Vim не в состоянии преобразовать данную мультибайтную кодировку в 8-битную кодировку, то печать будет невозможна.
3.2 8-битные кодировки для печати

Для того, чтобы использовать ту или иную кодировку при печати 8-битных символов вам может потребоваться определить собственный вектор кодирования шрифта PostScript. Подробное описание этого процесса выходит за рамки данного справочника, их можно почерпнуть из Справочника по языка PostScript: PostScript Language Reference Manual, 3rd Edition, который издан издательством Addison-Wesley и доступен в электронном виде (PDF) на сайте https://www.adobe.com/. Здесь мы лишь кратко опишем шаги, которые необходимо предпринять, чтобы Vim мог найти и использовать определённую вами кодировку для печати.

  1. Выберите уникальное имя для вашего вектора кодирования, который не пересекается со стандартными названиями кодировок, используемых в Vim (список известных кодировок можно посмотреть здесь: |кодировки-имена|) и который вряд ли будет использован кем-то ещё.
  2. Скопируйте в ваш личный подкаталог print, находящийся по пути, указанному в значении опции 'runtimepath' файл $VIMRUNTIME/print/latin1.ps, изменив его имя на имя вашей уникальной кодировки.
  3. Отредактируйте переименованную копию latin1.ps, заменив все строки "latin1" на уникальное имя вашей кодировки, в том числе в строке, начинающейся с %%Title:, а также измените массив имён глифов с целью определения нового вектора кодирования. Массив должен состоять из 256 элементов -- не более и не менее, иначе вы не сможете печатать.
  4. В VIM установите значение 'printencoding' равным имени вашей уникальной кодировки и попробуйте напечатать файл. При этом Vim будет использовать определённую вами кодировку печати.

Vim выдаст сообщение об ошибке в файле ресурса, если вы случайно измените порядок или содержание первых трёх строк, за исключением строки с именем кодировки, которая начинается с %%Title: и строки, в которой указана версия файла, начинающейся с %%Version:.

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

3.3 Устранение проблем при печати PostScript

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

Существует несколько возможных причин, по которым печать может завершиться неудачно:

  • Неправильная версия ресурсного файла пролога. ресурсный фал пролога содержит код на языке PostScript, который необходим Vim для печати. Каждая версия Vim требует свою версии этого файла. Убедитесь, что вы правильно установили файлы, необходимые Vim для работы, и что у вас не имеется старых версий файла prolog в каталоге print где-либо по пути, указанному в значении опции 'runtimepath'.
  • Размер бумаги. Некоторые принтеры PostScript отказываются печатать файл, если они не поддерживают заданный в установках размер бумаги. По умолчанию Vim использует бумагу формата A4. Вам следует выяснить размер бумаги, который обычно используется вашим принтером, и установить требуемый размер бумаги с помощью опции 'printoptions'. Если вы не можете выяснить, как называется формат бумаги, который следует использовать, измерьте лист бумаги и сравните его размеры с указанными в таблице поддерживаемых форматов бумаги, которую можно посмотреть в справке по опции 'printoptions'. Используйте формат, который наиболее близок как по ширине, так и по длине листа. Замечание: размеры настоящего листа бумаги могут незначительно отличаться от указанных в таблице. Если в таблице нет ничего близкого к вашему формату, можно попытаться использовать программу psresize из пакета PSUtils, который обсуждается ниже.
  • Двухсторонняя печать (дуплекс). Обычно, принтер PostScript, который не поддерживает двухстороннюю печать, игнорирует любые настройки с ней связанные. Однако, некоторые принтеры при этом отказываются выполнять печать. Постарайтесь напечатать с отключенным дуплексом. Замечание: двухсторонней печати можно добиться вручную при помощи PSUtils -- см. ниже.
  • Печать с подбором. Как и при дуплексной печати, большинство принтеров PostScript, которые не поддерживают печать с подбором, просто игнорируют соответствующие настройки. Если ваш принтер отказывается печатать задание, попытайтесь отключить подбор страниц при печати.
  • Подсветка синтаксиса. Некоторые драйверы печати могут воспрепятствовать печати созданного файла PostScript на черно-белом принтере при включённой подсветке синтаксиса, даже в тех случаях, когда используется исключительно чёрный цвет. Попытайтесь отключить подсветку синтаксиса.

Безопасные настройки печати могут выглядеть так:

:set printoptions=paper:A4,duplex:off,collate:n,syntax:n

Вы можете заменить "A4" на формат бумаге, наиболее близкий к используемому в принтере.

3.4 Утилиты PostScript
3.4.1 Ghostscript

Ghostscript это интерпретатор PostScript и PDF, который можно использовать для просмотра и печати на не-PostScript принтерах файлов в формате PostScript и PDF. Кроме того, он позволяет создавать из файлjd PostScript файлы в формате PDF.

Ghostscript работает на широком спектре платформ.

Доступны три версии этой программы:

  • AFPL Ghostscript (бывший Aladdin Ghostscript) распространяется бесплатно для некоммерческого использования. Его можно получить на сайте: https://www.cs.wisc.edu/~ghost/
  • GNU Ghostscript, доступный на условиях Стандартной Общественной Лицензии GNU. Получить можно здесь: ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/gnu/
  • Коммерческая версия для включения в состав коммерческих продуктов.

Дополнительная информация о Ghostscript может быть получена на сайте: https://www.ghostscript.com/

В стандартную поставку включена поддержка нескольких не-PostScript принтеров, но если ваш принтер не входит в стандартный список, то советуем заглянуть на сайт Ghostscript -- возможно поддержка для вашего принтера всё таки существует, хотя и не включена в стандартную поставку.

3.4.2 Просмотрщики Ghostscript

Интерфейс к Ghostscript сделан очень простым, поэтому сразу несколько разработчиков создали программы для просмотра PostScript, которые используют Ghostscript. Такие программы позволяют выбирать нужный файл для просмотра, показывать его с разным увеличением, печатать на принтер. В документации к этим продуктам содержатся дополнительные детали.

X11

Копии программы, возможно не самые последние, также хранятся по адресу: https://www.cs.wisc.edu/~ghost/gv/

OpenVMS

Windows и OS/2

DOS

Linux

3.4.3 PSUtils

PSUtils это набор утилит для работы с документами на языке PostScript. Доступны как исходные тексты, так и скомпилированные исполняемые файлы, причём для широкого спектра платформ. Загрузить PSUtils можно по адресу: https://knackered.org/angus/psutils

В частности, PSUtils включают:

  • psnup - Конвертирует файлы PS для печати двойным, четверным и т.д. блоком
  • psselect - Позволяет выбрать диапазон и порядок страниц при печати
  • psresize - Изменяет размер бумаги
  • psbook - Изменяет порядок страниц и их раскрой для печати книги

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

ПЕЧАТЬ ДВОЙНИКОМ, ЧЕТВЕРИКОМ И Т.Д.

Утилита psnup получает на входе файл PostScript, созданный в Vim и преобразует его для печати двойником, четвериком и т.д. Самый простой способ создания двойного блока состоит в создании оригинального файла PostScript по команде:

:hardcopy > test.ps

и выполнения следующей команды из оболочки:

psnup -n 2 test.ps final.ps

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

Наконец, файл final.ps можно отправить на принтер PostScript при помощи системной команды печати. После печати вы можете удалить оба файла PostScript, если в них больше нет необходимости. Для выполнения этих задач автоматически можно настроить опцию 'printexpr'.

АЛЬТЕРНАТИВНАЯ ДУПЛЕКСНАЯ ПЕЧАТЬ

При помощи утилиты psselect можно эмулировать режим дуплексной печати. Эта утилита имеет возможность указывать ключи -e и -o для печати только чётных или нечётных страниц файла PS.

Прежде всего необходимо создать PS с помощью команды 'hardcopy', затем можно сгенерировать файлы, содержащие только чётные и только нечётные страницы:

psselect -o test.ps odd.ps
psselect -e test.ps even.ps

Далее, следует напечатать файл с нечётными страницами, odd.ps, обычной командой печати. Затем напечатанные страницы переворачиваются и помещаются назад в лоток бумаги принтера, после чего печатается файл even.ps. Чётные страницы будут напечатаны на обратной стороне нечётных страниц.

При этом следует помнить о следующих моментах:

  1. Положение первой страницы. Если первая страницы находится наверху после печати нечётных страниц, то вам необходимо изменить порядок, в котором печатаются чётные страницы. Программа psselect позволяет это сделать с помощью ключа -r. Благодаря этому страница 2 будет напечатана на обороте страницы 1.

    Замечание: лучше менять порядок нечётных страниц, чем чётных, если в первоначальном файле PS нечётное количество страниц.

  2. Переворачивание бумаги. При переворачивании бумаги с напечатанными нечётными страницами вам потребуется перевернуть их либо по горизонтали (вдоль длинной стороны), либо по вертикали (вдоль короткой стороны), а также, возможно, на 180 градусов. Это зависит от модели принтера, который вы используете - смысл операции более понятен на струйном принтере, чем на лазерном, где бумажный тракт не виден извне.
3.5 Символы протяжки бумаги

По умолчанию, Vim никак не обрабатывает символы протяжки бумаги |formfeed|. Чтобы Vim распознавал эти символы и продолжил печать строки, в которой имеется такой символ, с новой страницы, необходимо включить элемент "formfeed" в значение опции 'printoptions'. Символы протяжки бумаги позволяют управлять разбивкой на страницы, но при этом следует помнить о нескольких вещах.

Vim всегда будет начинать печать строку (включая номер строки, если нумерация строк включена), содержащую символ протяжки бумаги, на новой странице. Это значит, что если символ протяжки бумаги находится в первой строке на странице, то Vim напечатает пустую страницу.

Поскольку номер строки печатается в начале строки, содержащей символ протяжки бумаги, то оставшаяся часть строки, которая будет напечатана на новой странице, не будет иметь номера строки (то же касается и длинных строк, перенесённых с помощью флага "wrap" в значении опции 'printoptions'.

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

По перечисленным выше причинам рекомендуется отключить печать нумерации строк при включённом распознавании символов протяжки бумаги, а также не помещать символы протяжки в конце строки. Даже в этом случае вам может потребоваться изменить количество строк в файле, чтобы избежать печати пустых страниц.

4. Использование Vim в качестве программы less или more

Если вы пользуетесь для просмотра файла программой less или more, то вы не сможете использовать подсветку синтаксиса. Вместо этого, вам может понравиться использовать Vim. Для этого существует сценарий оболочки "$VIMRUNTIME/macros/less.sh".

Этот сценарий использует сценарий Vim "$VIMRUNTIME/macros/less.vim". В нём устанавливаются привязки кнопок, которые имитируют команды less. Кроме того, вам также доступны команды Vim.

Данный сценарий далёк от совершенства. Например, при просмотре короткого файла Vim всё равно будет использовать полный экран. Тем не менее, он довольно удобен для работы в большинстве случаев и предоставляет возможность подсветки синтаксиса.

Кнопка "h" выдаёт краткую справку по доступным командам.