Como Detectar que o Shell Atual (Bash) é um Subshell (Vi / Vim)?

3

De dentro do Vi / Vim, eu posso digitar:

:shell

para cair em um shell.

Existe alguma maneira de detectar que estou em uma subcamada gerada por Vi?

A variável ambiental SHLVL é 2, mas isso não me diz explicitamente que estou em um subshell de Vi / Vim gerado.

No OS X, as seguintes variáveis também são definidas: MYVIMRC , VIMRUNTIME , VIM .

Como são universais estes? Posso contar com eles sendo configurados em qualquer sistema, se e somente se eu estiver em um subnível Vi / Vim?

Se não, existe alguma maneira portátil, robusta e esperançosamente eficiente de dizer que eu estou em um subshell Vi / Vim?

Obrigado.

    
por Jeet 26.03.2010 / 23:27

2 respostas

2

Eu vejo essas mesmas variáveis no Ubuntu 9.10 com o Vim 7.2 e sob o Cygwin 1.7 com o Vim 7.2 no Vista.

Aqui está a documentação.

Observe que MYVIMRC pode não estar presente se não houver arquivo .vimrc .

    
por 27.03.2010 / 00:03
1

Eu não conheço muito bem o OSX, mas se ele tiver um sistema de arquivos / proc, você provavelmente poderá verificar o nome do processo pai, assim:

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

Tags