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

Этот документ отражает общие особенности версий Vim для MS-DOS и Win32. См. также MS-Windows 95/98/NT и MS-DOS (обычный DOS и DOS под Windows).

  1. Местонахождение файлов
  2. Использование обратной косой черты
  3. Стандартные привязки кнопок
  4. Вывод на экран и цвета
  5. Формат файлов
  6. Команда :cd
  7. Прекращение выполнения команд
  8. Временные файлы
  9. Значение опции 'shell' по умолчанию

1. Местонахождение файлов

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

Файлы vimrc ("_vimrc" и "_gvimrc") обычно расположены в каталоге, который находится на один уровень выше. Если вы хотите поместить их в другое место, то укажите их местоположение при помощи переменной окружения $VIM. Пример:

set VIM=C:\user\piet

будет искать файл "c:\user\piet\_vimrc".

Замечание: Это требуется только в тех случаях, когда компьютером пользуется несколько человек. В обычных случая достаточно просто хранить файл _vimrc в том месте, где он должен храниться по умолчанию.

Если вы перенесёте исполняемый файл в другое место, то вам также потребуется установить переменную окружения $VIM. Поиск файлов будет происходить по пути "$VIM/vim{версия}". Например:

set VIM=E:\vim

будет искать файлы Vim версии 5.4 в "e:\vim\vim54".

Замечание: делать это не рекомендуется. Предпочтительнее всего хранить исполняемый файл в каталоге с другими файлами среды Vim.

Если вы перенесли исполняемый файл И хотите перенести также куда-либо файлы "_vimrc" и "_gvimrc", то переменная $VIM должна указывать на каталог с файлами vimrc, а переменная $VIMRUNTIME на каталог с файлами Vim. Например:

set VIM=C:\usr\piet
set VIMRUNTIME=E:\vim\vim54

Будет находить "c:\user\piet\_vimrc" и остальные файлы в "e:\vim\vim54".

Подробнее смотрите |$VIM| и |$VIMRUNTIME|.

Под Windows 95, переменную $VIM можно установить в файле C:\autoexec.bat.

Например:

set VIM=D:\vim

Под Windows NT можно настраивать переменные окружения отдельно для каждого пользователя, в "Пуск/Настройки/Панель управления->Система", или в настройках в меню "Мой компьютер", в разделе "Окружение".

2. Использование обратной косой черты

Использование обратной косой черты в именах файлах может создать проблему. Vi уменьшает для некоторых команд количество использованных обратных косых вдвое. Vim относится более терпимо и не убирает обратные косые из имени файла, так что ":e c:\foo\bar" будет работать, как полагается. Однако, если обратная косая встречается перед специальным символом (пробел, запятая, сама обратная косая), то Vim убирает обратную косую. Чтобы избежать проблем, лучше всего использовать прямые косые: ":e c:/foo/bar" отлично работает. Во избежание проблем с некоторыми программами MS-DOS и Win32, Vim сам автоматически заменяет прямую косую на обратную.

Если вы предпочитаете использовать прямую косую черту в путях к файлам, то настройте опцию 'shellslash'. В этом случае, Vim будет заменять обратные косые на прямые, когда будет искать файлы по маске. Это особенно полезно при использовании Unix-подобного 'shell'.

3. Стандартные привязки кнопок

CTRL-PageUp курсор в первую строку экрана
CTRL-PageDown курсор в конец последней строки экрана

Это достигается следующими привязками:

Кнопка Код кнопки Обычный/Визуальный Вставка
CTRL-PageUp <M-N><M-C-D> H <C-O>H
CTRL-PageDown <M-N>v L$ <C-O>L<C-O>$

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

Shift-Insert вклейка текста (из буфера обмена)
CTRL-Insert копирование Визуального текста (в буфер обмена)
CTRL-Del вырезание Визуального текста (в буфер обмена)
Shift-Del вырезание Визуального текста (в буфер обмена)

Это достигается следующими привязками (в версиях для Win32 и DJGPP):

Кнопка Код кнопки Обычный Визуальный Вставка
Shift-Insert <M-N><M-T> "*P "-d"*P <C-R><C-O>*
CTRL-Insert <M-N><M-U>   "*y  
Shift-Del <M-N><M-W>   "*d  
CTRL-Del <M-N><M-X>   "*d  

Либо следующими (в не-Win32 версиях):

Кнопка Код кнопки Обычный Визуальный Вставка
Shift-Insert <M-N><M-T> P "-dP <C-R><C-O>"
CTRL-Insert <M-N><M-U>   y  
Shift-Del <M-N><M-W>   d  
CTRL-Del <M-N><M-X>   d  

Если поддерживается системный буфер обмена, то используется регистр "*.

4. Вывод на экран и цвета

По умолчанию, вывод на экран использует вызовы bios. Это работает на большинстве рассматриваемых систем. Вам не требуется использовать драйвер ansi.sys. Для установки необходимого режима экрана можно пользоваться командой ":mode", подробнее см. в |:mode|.

Для изменения цветов экрана, используемых Vim, можно применять команду |:highlight|. Группа подсветки Normal указывает на цвета, которые используются Vim для обычного текста. Например, чтобы получить серый текст на синем фоне:

:hi Normal ctermbg=Blue ctermfg=grey

О других группах подсветки читайте в |подсветка-группы|.

Консольное окно DOS не поддерживает такие свойства, как жирный шрифт и подчёркивание. Обратите внимание, что это не обязательно, поскольку вы можете настроить цвет непосредственно с помощью команды ":highlight"; эти опции существуют для обратной совместимости со старыми версиями Vim. Опция |'highlight'| определяет один из пяти режимов, используемых для каждого действия.

:set t_mr=^V^[\|xxm       начало инверсного режима
:set t_md=^V^[\|xxm       начало жирного режима
:set t_me=^V^[\|xxm       возврат к обычному тексту

:set t_so=^V^[\|xxm       начало режима выделения
:set t_se=^V^[\|xxm       возврат к обычному тексту

:set t_us=^V^[\|xxm       начало режима подчёркивания
:set t_ue=^V^[\|xxm       возврат к обычному тексту

:set t_ZH=^V^[\|xxm       начало курсивного текста
:set t_ZR=^V^[\|xxm       возврат к обычному тексту

^V это CTRL-V
^[ это <Esc>

Вам потребуется заменить xx десятичным кодом, являющимся суммой номера цвета текста и номера цвета фона:

ЦВЕТ ЦВЕТ (РУССКИЙ) ДЛЯ ТЕКСТА ДЛЯ ФОНА
Black Чёрный 0 0
DarkBlue Тёмно-синий 1 16
DarkGreen Тёмно-зелёный 2 32
DarkCyan Тёмно-циановый 3 48
DarkRed Тёмно-красный 4 64
DarkMagenta Тёмно-малиновый 5 80
Brown, DarkYellow Коричневый, тёмно-жёлтый 6 96
LightGray Светло-серый 7 112
DarkGray Тёмно-серый 8 128*
Blue, LightBlue Синий, светло-синий 9 144*
Green, LightGreen Зелёный, светло-зелёный 10 160*
Cyan, LightCyan Циановый, светло-циановый 11 176*
Red, LightRed Красный, светло-красный 12 192*
Magenta, LightMagenta Малиновый, светло-малиновый 13 208*
Yellow, LightYellow Жёлтый, светло-жёлтый 14 224*
White Белый 15 240*
* В зависимости от режима, коды цветов выше 128 могут быть не доступны, а код 128 может приводить к мерцанию текста.

При использовании 0, цвет восстанавливается к использованному при запуске Vim (обычно 7, светло-серый на чёрном, но вы можете это изменить. Если вы изменили цвета по умолчанию в командной строке, то вам, возможно, придётся изменить настройки подсветки в файле vimrc -- см. ниже). Это значение по умолчанию для t_me.

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

t_mr 112 инверсный режим: чёрный текст (0) на светло-сером (112)
t_md 15 жирный: белый текст (15) на чёрном (0)
t_me 0 обычный режим (возврат к значению по умолчанию)
     
t_so 31 режим выделения: белый (15) текст на тёмно-синем (16)
t_se 0 конец режима выделения (возврат к значению по умолчанию)
     
t_czh 225 курсив: тёмно-синий (1) текст на жёлтом (224)
t_czr 0 конец курсива (возврат к значению по умолчанию)
     
t_us 67 подчёркивание: тёмно-циановый (3) текст на тёмно-красном (64)
t_ue 0 конец подчёркивания (возврат к значению по умолчанию)

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

Пример:

:set t_mr=^V^[\|97m " начало инверсного режима: тёмно-синий (1) на  коричневом (96)
:set t_md=^V^[\|67m " начало жирного: тёмно-циановый (3) на " тёмно-красном (64)
:set t_me=^V^[\|112m " возврат к нормальному режиму: чёрный (0) на " светло-сером (112)
   
:set t_so=^V^[\|37m " начало режима выделения: тёмно-малиновый (5) на " тёмно-зелёном (32)
:set t_se=^V^[\|112m " возврат к нормальному режиму: чёрный (0) на " светло-сером (112)

5. Формат файлов

Если опция 'fileformat' установлена в значение "dos" (по умолчанию), то Vim воспринимает в качестве символов конца строки (<EOL>) либо одиночный <NL>, либо пару символов <CR><NL>. При записи файла Vim использует <CR><NL>. Поэтому, если вы редактируете файл с переносами строк в виде одиночного <NL>, то при записи Vim заменит их на <CR><NL>.

Если опция 'fileformat' установлена в значение "unix", то Vim использует для <EOL> одиночный символ <NL> и показывает <CR> как ^M.

Вы можете пользоваться Vim для замены <NL> на <CR><NL>, считывая файл в редактор в любом режиме и записывая обратно в режиме Dos (":se ff=dos"). Вы можете также пользоваться Vim для замены <CR><NL> на <NL>, считывая файл в редактор в режиме Dos и записывая обратно в режиме Unix (":se ff=unix").

Vim устанавливает опцию 'fileformat' автоматически, если значение опции 'fileformats' не пустое, как это принято по умолчанию, так что вам не стоит вообще обращать на это внимание. |'fileformat'| |'fileformats'|

Если вы хотите редактировать файл сценария или двоичный файл, то вам следует установить опцию 'binary' перед загрузкой файла. Файлы сценариев и двоичные файлы могут содержать одиночный символ <NL>, которые в противном случае будут заменяться Vim на <CR><NL>. Опция 'binary' может быть установлена автоматически, если редактор запускается с ключом "-b" (binary).

6. Команда :cd

Команда ":cd" понимает указатель на диск и позволяет менять текущий диск. Для смены текущего диска на диск C, введите команду ":cd c:" Для перехода в каталог "foo" от корневого каталога диска D, введите ":cd d:\foo". Vim также распознаёт имена UNC, если они поддерживаются системой, например: ":cd \\server\share\dir". |:cd|

7. Прекращение выполнения команд

Используйте CTRL-Break вместо CTRL-C для прекращения поиска. Vim не распознаёт CTRL-C в таких ситуациях.

8. Временные файлы

Только для 16-ти и 32-битной версий для DOS:

Vim помещает временные файлы (для команд-фильтров) в первом из приведённых ниже каталогов, которые удалось найти и в которых Vim может создать файл:

  • $TMP
  • $TEMP
  • C:\TMP
  • C:\TEMP
  • текущий каталог

Для версии Win32 (консольной и с графическим интерфейсом):

Vim использует стандартные функции Windows для определения имени временного файла при работе с командами-фильтрами. Используется первый из найденных в списке каталогов, который существует и в котором Vim может создать временный файл:

  • $TMP
  • $TEMP
  • текущий каталог

9. Значение опции 'shell' по умолчанию

Значение опции 'sh' ('shell') на Windows 95 по умолчанию "command.com", на Windows NT -- "cmd.exe". Если определена переменная SHELL, то Vim использует значение переменной SHELL, а если SHELL не определена, но определена переменная COMSPEC, то Vim использует значение переменной COMSPEC. Запуск внешних программ происходит с помощью команды "<shell> /c <имя_команды>". Нажатие CTRL-Z открывает новую командную оболочку. Возврат в Vim осуществляется по команде "exit". |'shell'| |CTRL-Z|

Если вы используете оболочку от третьего производителя, то вам возможно потребуется настроить опции |'shellcmdflag'| ('shcf') и |'shellquote'| ('shq') или |'shellxquote'| ('sxq'). К сожалению, это зависит от используемой версии Vim, Например, при использовании оболочки MKS Korn или bash, значения этих
опций должны быть следующие:

  DOS 16 бит DOS 32 бит Win32
'shellcmdflag' -c -c -c
'shellquote' "    
'shellxquote'     "

При этом, запуск оболочки в 16-битной версии DOS осуществляется командой:

<shell> -c "имя_команды" >файл

в Win32:

<shell> -c "имя_команды >файл"

В 32-битной версии DOS это происходит внутри DJGPP.

При запуске, Vim проверяет присутствие "sh" в строке опции 'shell'. Если совпадение обнаружено, то Vim устанавливает опции 'shellcmdflag' и 'shellquote' или 'shellxquote' как указано выше.