In vi kann ich ein Shell-Terminal mit :sh
Befehl erhalten. Und später kann ich per exit
Shell zu vi zurückkehren .
Aber wenn ich das Shell-Terminal für eine lange Zeit benutzt habe und vergessen habe, ob exit
irgendetwas geschlossen oder mir das vi zurückgegeben wird.
Gibt es eine Möglichkeit zu überprüfen, ob ich zu vi zurückkehren werde? jobs
oder fg
funktioniert nicht.
external-command
hailinzeng
quelle
quelle
Antworten:
In einer regulären Hülle:
Nach dem Gebrauch
:shell
So sieht es aus wie Vim setzt die
VIMRUNTIME
,VIM
undMYVIMRC
Umgebungsvariablen. Von diesenVIM
scheint mir die zuverlässigste zu sein (Sie haben möglicherweise keine vimrc- oder sogar vim-Laufzeit).Sie können auch Ihre eigenen Umgebungsvariablen festlegen:
Dies ist besonders nützlich, um Informationen über den Puffer zu übermitteln, den Sie bearbeiten. zum Beispiel:
Wird sich als etwas zeigen wie:
quelle
Ich habe meine Eingabeaufforderung so eingerichtet, dass ein rotes "+" - Symbol hinzugefügt wird, das angibt, ob ich mich in einem vim ": sh" befinde, im Gegensatz zu einer normalen Shell-Sitzung. Der Eckpfeiler davon ist, dass "$$" die PID des aktuellen Prozesses ist, also:
Sobald Sie dies haben, können Sie einfach etwas inline und konstruieren, wie ich es beschrieben habe, um es in Ihrem ".bashrc" oder ähnlichem zu verwenden.
Hinweis : Die an anderer Stelle beschriebene Methode für Umgebungsvariablen ($ VIM) scheint besser zu sein, aber ich lasse dies, da sie funktioniert, um festzustellen, ob Sie ein untergeordneter Prozess von irgendetwas sind (nicht nur von vim).
quelle
:sh
: MYVIMRC, VIM und VIMRUNTIME. Alles, was Sie tun müssen, um zu wissen, dass Sie in einer Sub-Shell von Vim ausgeführt werden, ist zu testen, ob diese vorhanden sind.Ausführen
ps
oder besserps -fH
. Ex:Der Vorteil der Verwendung von
ps -fH
over justps
besteht darin, dass Sie sehen können, ob Sie sich in einer Sub-Shell von befindenvim
oder ob Sie sievim
in den Hintergrund stellen. In diesem Fallps -fH
würde das so aussehen:quelle