Depuis Vi / Vim, je peux taper:
:shell
tomber dans une coquille.
Existe-t-il un moyen de détecter que je suis dans une sous-coque générée par Vi?
La variable d'environnement SHLVL est 2, mais cela ne me dit pas explicitement que je suis dans un sous-shell généré par Vi / Vim .
Sur OS X, les variables suivantes sont également définies: MYVIMRC
, VIMRUNTIME
, VIM
.
Comment sont-ils universels? Puis-je compter sur ces paramètres dans n'importe quel système, si et seulement si je suis dans un sous-shell Vi / Vim?
Sinon, y a-t-il un moyen portable, robuste et, espérons-le, efficace de dire que je suis dans un sous-shell Vi / Vim?
Merci.
let $UNDER_VIM='Yes, probably.'
votre fichier .vimrc et archivertest -n "${UNDER_VIM:-}"
votre shell. Ou, si votre shell en aPPID
, utilisez ps pour rechercher la commande et voir si elle ressemble à vim (par exemple, vim, vi, rvim, evim, view, rview, etc.).rvim
etrview
ne vous laissera pas faire:shell
.test -n "${UNDER_VIM}
.Je ne connais pas très bien OSX, mais s'il a un système de fichiers / proc, vous pouvez probablement vérifier le nom du processus parent, comme ceci:
la source
if [ $(ps -o command -p $(ps -o ppid -o command -p $$ | tail -1 | awk '{print $1}') | tail -1) == vi then ... fi
assez gênant cependant!$PPID
c'était exporté. Merci!