En vi, puedo obtener una terminal de shell con :sh
comando. Y luego, puedo volver a vi por exit
shell.
Pero, si estuve usando el terminal de shell durante mucho tiempo, y olvidé si exit
cerrará algo o me devolverá el vi.
¿Hay alguna forma de verificar si volveré a vi? jobs
o fg
no está funcionando
external-command
hailinzeng
fuente
fuente
Respuestas:
En una cáscara regular:
Después de usar
:shell
Así que parece que Vim establece las
VIMRUNTIME
,VIM
yMYVIMRC
las variables de entorno. De ellos, meVIM
parece el más confiable (es posible que no tenga un vimrc o incluso vim runtime).También puede establecer sus propias variables de entorno:
Esto es especialmente útil para comunicar información sobre el búfer que está editando; por ejemplo:
Aparecerá como algo así como:
fuente
Tengo mi símbolo del sistema configurado para agregar un símbolo rojo "+" que indica si estoy en un vim ": sh" en lugar de una sesión de shell normal. La piedra angular es que "$$" es el pid del proceso actual, entonces:
Una vez que tenga esto, puede alinearlo fácilmente y construir algo como lo que describí para usar en su ".bashrc" o similar.
Nota : El método de variable de entorno ($ VIM) descrito en otra parte parece mejor que esto, pero lo dejaré, ya que funciona para identificar si usted es un proceso hijo de algo (no solo vim).
fuente
:sh
inicia: MYVIMRC, VIM y VIMRUNTIME. Todo lo que tiene que hacer para saber que se está ejecutando en un sub-shell de Vim es probar la presencia de cualquiera de ellos.Ejecutar
ps
, o mejor,ps -fH
. Ex:La ventaja de usar
ps -fH
over overps
es que te permite ver si estás en un sub-shellvim
o si lo ponesvim
en segundo plano. En ese caso,ps -fH
se vería así:fuente