Справочник по VIM

Особенности версий Vim для MS-DOS и Win32

СПРАВОЧНИК ПО 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>vL$<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Чёрный00
DarkBlueТёмно-синий116
DarkGreenТёмно-зелёный232
DarkCyanТёмно-циановый348
DarkRedТёмно-красный464
DarkMagentaТёмно-малиновый580
Brown, DarkYellowКоричневый, тёмно-жёлтый696
LightGrayСветло-серый7112
DarkGrayТёмно-серый8128*
Blue, LightBlueСиний, светло-синий9144*
Green, LightGreenЗелёный, светло-зелёный10160*
Cyan, LightCyanЦиановый, светло-циановый11176*
Red, LightRedКрасный, светло-красный12192*
Magenta, LightMagentaМалиновый, светло-малиновый13208*
Yellow, LightYellowЖёлтый, светло-жёлтый14224*
WhiteБелый15240*
* В зависимости от режима, коды цветов выше 128 могут быть не доступны, а код 128 может приводить к мерцанию текста.

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

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

t_mr112инверсный режим: чёрный текст (0) на светло-сером (112)
t_md15жирный: белый текст (15) на чёрном (0)
t_me0обычный режим (возврат к значению по умолчанию)
   
t_so31режим выделения: белый (15) текст на тёмно-синем (16)
t_se0конец режима выделения (возврат к значению по умолчанию)
   
t_czh225курсив: тёмно-синий (1) текст на жёлтом (224)
t_czr0конец курсива (возврат к значению по умолчанию)
   
t_us67подчёркивание: тёмно-циановый (3) текст на тёмно-красном (64)
t_ue0конец подчёркивания (возврат к значению по умолчанию)

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

Пример:

: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’ как указано выше.