3

Внутри Vi/Vim я могу набрать:

:shell

упасть в раковину.

Есть ли способ обнаружить, что я нахожусь в порожденной Vi-оболочке?

Переменная окружения SHLVL равна 2, но это явно не говорит мне, что я нахожусь в порожденной Vi/Vim подоболочке.

В OS X также установлены следующие переменные: MYVIMRC , VIMRUNTIME , VIM .

Насколько они универсальны? Могу ли я рассчитывать на то, что они будут установлены в любой системе, если и только если я нахожусь в подоболочке Vi/Vim?

Если нет, есть ли какой-нибудь портативный, надежный и, надеюсь, эффективный способ сказать, что я нахожусь в подоболочке Vi/Vim?

Благодарю.

2 ответа2

2

Я вижу те же переменные в Ubuntu 9.10 с Vim 7.2 и под Cygwin 1.7 с Vim 7.2 под Vista.

Вот документация.

Обратите внимание, что MYVIMRC может отсутствовать, если нет файла .vimrc .

1

Я не очень хорошо знаю OSX, но если у него есть файловая система /proc, вы, вероятно, можете проверить имя родительского процесса, например:

parent=$(</proc/$PPID/exename)
if expr match $parent $(which vim) > /dev/null
then
    ...
fi

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .