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

OS/2

СПРАВОЧНИК ПО VIM — Пол Слутман

В этом файле документированы некоторые особенности версии Vim для OS/2.

В настоящий момент не существует родной PM версии Vim с графическим интерфейсом. Версия Vim для OS/2 существует только в виде консольного приложения. Однако, существуют Win32s-совместимые версии с графическим интерфейсом, которыми скорее всего можно пользоваться под Warp 4 (которая поддерживает Win32s) в сеансе Win-OS/2. Этот файл посвящён родной консольной версии для OS/2.

ЗАМЕЧАНИЕ

Этот порт под OS/2 работает у меня и у пары других пользователей полуоси без проблем. Поскольку сообщений об ошибках мне не поступало, это значит, что либо в данной версии нет каких-либо специфических для OS/2 глюков (кроме тех, которые описаны ниже), либо никто пока не попадал в ситуацию, при которой такие глюки вылезли бы наружу. Судя по всему, операции I/O файлов в режимах Dos и Unix, бинарный режим, работа с FAT выполняются вполне корректно, а именно в этих подпрограммах наиболее вероятны глюки.

Известная проблема заключается в том, что файлы открытые в Vim наследуются другими программами, которые запускаются через оболочку из Vim. Это приводит к тому, что Vim не может удалить своп-файл(ы), связанные с открытыми в данный момент буферами, до тех пор, пока программа, запущенная из Vim не прекратит свою работу. После завершения работы программы, запущенной из Vim, своп-файл может быть удалён, однако, в том случае, если Vim не сможет сделать это с первого раза, то дальнейшие попытки удаления своп-файла предприниматься не будут. В этом случае, при повторном запуске Vim с этим же файлом, вы получите предупреждение, что файл может редактироваться в другой программе. Этот глюк можно воспроизвести следующим образом: в Vim выполните команду «:!start epm». После этого выйдите из редактора и запустите его снова с файлом, который находился в буфере в момент запуска epm. Я пытаюсь исправить этот глюк!

Другая проблема заключается в том, что Vim не распознаёт ситуацию, когда запускается при использовании OS/2 по сети, например из telnet с машины Unix. Проблема заключается в том, что OS/2 =иногда= распознаёт функциональные клавиши и кнопки управления курсором и пытается преобразовать их в соответствующие коды OS/2, которые производятся обычной клавиатурой PC. Я пытался тестировать одно решение этой проблемы (привязка кодов OS/2 к правильным функциям), но пока не могу сказать что-либо определённого (это, кстати, на Warp 3). Я буду признателен за любую помощь в этом вопросе.

ТРЕБОВАНИЯ

Для запуска Vim вам понадобится среда emx, по крайней мере версии rev. 0.9b. Обычно её можно достать в интернете в виде файла с именем

emxrt.zipemx runtime package

Я включаю копию emx.dll в поставку программы. Этот файл нужно скопировать в один из каталогов, указанных в LIBPATH. Emx распространяется по лицензии GPL, но библиотека emx.dll не попадает под действие этой лицензии (читайте COPYING.EMX, чтобы выяснить, какие это может иметь для вас последствия).

emx.dll взята из пакета emxfix04.zip, в котором, к сожалению, имеется глюк, ммм…, то есть, особенность POSIX, в функции select(). Версии Vim до 3.27 могут зависать при запуске (во время разбора vimrc). Если это происходит, попробуйте нажать <Enter> пару раз, до тех пор, пока Vim не придёт в себя. И постарайтесь установить версию Vim посвежее!

СПРАВКА И ФАЙЛ VIMRC

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

Если вы поместите файлы, которые требуются Vim для работы, отдельно от исполняемого файла, то необходимо настроить переменную окружения VIM так, чтобы она указывала на каталог, в котором находится системный файл .vimrc и каталог с файлами справки. Для этого поместите в CONFIG.SYS что-нибудь наподобие

SET VIM=c:/local/lib/vim

Поместите в указанный каталог .vimrc. Скопируйте туда же каталог с файлами Vim. У каждой версии Vim свой собственный каталог со служебными файлами, который называется примерно так: «c:/local/lib/vim/vim54». Таким образом, дерево файлов Vim должно выглядеть как

c:/local/lib/vim/.vimrc
c:/local/lib/vim/vim54/filetype.vim
c:/local/lib/vim/vim54/doc/help.txt
и т.д.

Замечание: .vimrc также может называться _vimrc, если OS/2 установлена на файловой системе FAT. Vim пытается прежде всего найти файл .vimrc, и если это ни к чему не приводит, то ищет в том же месте файл _vimrc. Наличие или отсутствие файла .vimrc или _vimrc влияют на значение опции ‘compatible’, которая, будучи включённой, может привести к нежелательным последствиям. См. |’compatible’|.

При использовании в OS/2 сетевых дисков, вы можете установить Vim на сетевой диск, в том числе включая файл .vimrc, который в этом случае будет выполнять роль «системного» файла vimrc, и затем использовать личную копию .vimrc (пользовательский файл vimrc), который должен быть расположен в каталоге, указанном в переменной окружения HOME.

ИСПОЛЬЗОВАНИЕ ПЕРЕМЕННЫХ ОКРУЖЕНИЯ В ИМЕНАХ ФАЙЛОВ

Переменная окружения HOME также используется при подстановке ~ в именах файлов, иными словами «:e ~/textfile» будет редактировать «textfile» в каталоге, на который ссылается HOME. Вы также можете использовать и другие переменные окружения в именах файлов, например: «:n $SRC/*.c».

Переменная окружения HOME также используется для поиска файла .viminfo (см. |файл_viminfo|). Извините, но на файловой системе FAT поддержка файла .viminfo пока не работает. Однако, вы можете попробовать запускать Vim с ключом -i (например, «vim -i $HOME/_viminfo»).

Если переменная окружения HOME не установлена, то по умолчанию используется значение «C:/».

ОБРАТНАЯ КОСАЯ ЧЕРТА

Использованием косой черты (‘/’) и обратной косой черты (‘\’) (подробнее см. |dos-обратная_косая_черта|) может вызвать некоторые затруднения, но почти во всех случаях Vim всё понимает правильно. Vim использует в именах файлов обратную косую черту, но понимает также ввод прямой косой черты в путях к файлу (в некоторых случаях даже лучше использовать прямую косую черту!).

ВРЕМЕННЫЕ ФАЙЛЫ

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

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

НАСТРОЙКИ ТЕРМИНАЛА

Используйте для переменной окружения TERM значение «os2ansi» (либо вовсе не устанавливайте эту переменную, поскольку по умолчанию принимается правильное значение). Вы также можете установить значение опции term равным os2ansi в .vimrc, если другие приложения требуют иного значения переменной TERM. Проблема заключается в том, что эмуляция ANSI в OS/2 довольно ограниченная по возможностям (например, в ней нет вставки и удаления строки).

Если вы хотите использовать иное значение для TERM (например, из-за других программ), то убедитесь, что соответствующие привязки кнопок прописаны в разделе termcap для этого значения TERM. Файл termcap.dat, который поставляется с emx, не всегда их имеет. Вот несколько полезных значений для добавления в ваш раздел termcap. Эти строки позволяют кнопкам курсора и функциональным клавишам с собственными именами (таким, как pagedown) работать корректно.

:ku=\316H:kd=\316P:kl=\316K:kr=\316M:%i=\316t:#4=\316s:\
:kD=\316S:kI=\316R:kN=\316Q:kP=\316I:kh=\316G:@7=\316O:\
:k1=\316;:k2=\316<:k3=\316=:k4=\316>:k5=\316?:k6=\316@:\
:k7=\316A:k8=\316B:k9=\316C:k;=\316D:

Пол Слутман

43-СТРОЧНОЕ ОКНО

Предложение от Стевена Трайона (Steven Tryon) по запуску Vim в большом окне:

При запуске Vim из WPS приложения OS/2, например из под PMMail, оно по умолчанию запускается в 25-строчном окне. Чтобы получить более полезный размер окна, я исполняю файл «vimbig.cmd», который в свою очередь вызывает «vimbig2.cmd». Возможно, не совсем изящное решение, с применением грубой силы, но главное, что оно работает.

vimbig.cmd:

@echo off
start "Vi Improved" /f vimbig2.cmd %1 %2 %3 %4

vimbig2.cmd:

@echo off
mode 80,43
vim.exe %1 %2 %3 %4
exit

ДОСТУП К СИСТЕМНОМУ БУФЕРУ ОБМЕНА (Александр Вагнер)

В Vim для OS/2 не реализована возможность прямого доступа к системному буферу обмена. Для получения доступа вам потребуется дополнительное средство, которое позволяет предоставлять доступ к системному буферу обмена из приложения vio. Для этой цели можно использовать бесплатный пакет clipbrd.zip Стефана Грюнделя. Этот пакет, вместе с исходным кодом и скомпилированным исполняемым файлом, можно загрузить по адресу: http://www.stellarcom.org/vim/index.html.

Инсталляция пакета предельно простая: достаточно просто поместить два прилагаемых исполняемых файла в каталог, который находится в PATH, чтобы Vim мог запускать эти программы из любого места.

Чтобы скопировать текст из буфера обмена в Vim, используйте команду :r. Просто вызывайте clipbrd.exe из Vim обычным для таких случаев способом:

:r !clipbrd -r

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

:!clipbrd -w

Это позволяет записать выделенный текст непосредственно в буфер OS/2.

Чтобы было проще пользоваться этими командами, добавьте соответствующие привязки. Например, пользуйтесь F11 для вклейки содержимого буфера обмена в Vim, и F12 для копирования выбранного текста в системный буфер. Вот сценарий, который можно использовать для организации этих привязок:

if has("os2")
imap <F11> <ESC>:r !clipbrd -r<CR>i
vmap <F12> :!clipbrd -w<cr>
else
imap <F11> <ESC>"*p<CR>i
vmap <F12> "*y
endif

Использование сценария в таком виде позволяет убедиться, что программа clipbrd вызывается только на OS/2, в то время как на других платформах будет использоваться обычный механизм общения с системным буфером обмена. Чтобы этот сценарий загружался каждый раз при запуске Vim, скопируйте приведённые строки в ваш файл .vimrc.

 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *