Dans vi, je peux obtenir un terminal shell avec :sh
commande. Et plus tard, je peux retourner à vi par exit
shell.
Mais, si j'utilisais le terminal shell depuis longtemps, et j'ai oublié si exit
je fermerai quoi que ce soit ou me renverra le vi.
Existe-t-il un moyen de vérifier si je reviendrai à vi? jobs
ou fg
ne fonctionne pas.
external-command
hailinzeng
la source
la source
Réponses:
Dans une coque régulière:
Après avoir utilisé
:shell
Il semble donc que Vim fixe les
VIMRUNTIME
,VIM
et lesMYVIMRC
variables d'environnement. Parmi ceux-ci, ilVIM
me semble le plus fiable (vous n'avez peut-être pas de runtime vimrc ou même vim).Vous pouvez également définir vos propres variables d'environnement:
Ceci est particulièrement utile pour communiquer des informations sur le tampon que vous modifiez; par exemple:
S'affichera comme quelque chose comme:
la source
J'ai mon invite de commande configurée pour ajouter un symbole "+" rouge qui indique si je suis dans un vim ": sh" par opposition à une session shell normale. La pierre angulaire de celui-ci est que "$$" est le pid du processus actuel, donc:
Une fois que vous avez cela, vous pouvez facilement intégrer et construire quelque chose comme je l'ai décrit pour l'utiliser dans votre ".bashrc" ou similaire.
Remarque : La méthode de la variable d'environnement ($ VIM) décrite ailleurs semble meilleure que cela, mais je vais laisser cela car elle fonctionne pour identifier si vous êtes un processus enfant de quelque chose (pas seulement vim).
la source
:sh
lequel il se lance: MYVIMRC, VIM et VIMRUNTIME. Tout ce que vous avez à faire pour savoir que vous utilisez un sous-shell de Vim est de tester la présence de l'un d'entre eux.Exécuter
ps
, ou mieux,ps -fH
. Ex:L'avantage d'utiliser
ps -fH
over justps
est qu'il vous permet de voir si vous êtes dans un sous-shellvim
ou si vous le mettezvim
en arrière-plan. Dans ce cas,ps -fH
ressemblerait à ceci:la source