3 votes

Comment détecter que le Shell actuel (Bash) est un sous-shell (Vi/Vim) ?

Depuis l'intérieur de Vi/Vim, je peux taper :

:shell

à déposer dans un Shell.

Y a-t-il un moyen de détecter que je suis dans un sous-shell Vi-spawned ?

La variable d'environnement SHLVL est 2, mais cela ne me dit pas explicitement que je suis dans une Vi/Vim -spawned subshell.

Sous OS X, les variables suivantes sont également définies : MYVIMRC , VIMRUNTIME , VIM .

A quel point sont-elles universelles ? Puis-je compter sur le fait qu'elles soient définies dans n'importe quel système, si et seulement si je suis dans un sous-shell Vi/Vim ?

Si ce n'est pas le cas, existe-t-il un moyen portable, robuste et, je l'espère, efficace de dire que je suis dans un sous-shell Vi/Vim ?

Merci.

2voto

Damian Powell Points 315

Je vois ces mêmes variables sous Ubuntu 9.10 avec Vim 7.2 et sous Cygwin 1.7 avec Vim 7.2 sous Vista.

Voici la documentation.

Notez que MYVIMRC peut ne pas être présent s'il n'y a pas de .vimrc fichier.

1voto

njd Points 10568

Je ne connais pas très bien OSX, mais s'il possède un système de fichiers /proc, vous pouvez probablement vérifier le nom du processus parent, comme ceci :

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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X