2012-03-27 8 views
5

En vim, tipo : sh cambiará a la cáscara, y salida puede salir del intérprete y volver a vim. ¿Hay algún comando para verificar si está en el modo vim shell? De modo que no voy a accidentalmente volver a abrir el mismo archivo. Quiero evitar a continuación escenario:Cómo comprobar si todavía está en el modo de cáscara de Vim

vim myfile > :sh > exit > vim myfile // Obtener aviso de otro ejemplo vim está editando el mismo archivo

Estos son los escenario normal:
vim myfile > :sh > exit // mantener la edición
vim myfile > :wq > vim myfile // mantener la edición

Respuesta

3

Además de @ a3nm respuesta, lo que puede hacer es

  1. uso pstree -h: Será árbol de procesos de salida con la rama actual highligted y todo lo que necesita hacer es comprobar si existe vim en el punto culminante.
  2. Otra posibilidad es ps t: mostrará todos los procesos que utilizan la terminal actual y debe mostrar vim en una lista cuando se encuentre dentro de :sh. ps -oargs t puede ser más útil en caso de que desee conocer los argumentos con los que ejecutó vim.

Estos métodos son más fiables porque las variables VIMRUNTIME, VIM y MYVIMRC ambiente puede ser overrided por usted con el fin de hacer algunas personalizaciones (por cierto, que se definen por vim para su uso en vimscripts, no por :sh). También funcionan para otros procesos que le permiten ejecutar una subshell, pero no definen ninguna variable de entorno.

Me gustaría también sugieren considerar el uso de <C-z> en modo normal o :suspend/:stop en Ex porque estos vim uso cáscara se puso en marcha de en vez de crear nuevos. Este comportamiento le da acceso al historial de comandos que escribió antes de ejecutar vim y también le permite escribir configuraciones de shell más complejas y que consumen más tiempo sin tener que esperar todo el tiempo.

En caso de que utilice <C-z> ambos métodos todavía funcionan, pero primer método no destacará vim, ya que será en el mismo nivel (tiene el mismo padre) como pstree sí, probablemente justo por debajo o por encima de pstree en el gráfico. Esto también permite el tercer método: jobs shell incorporado.

Con el fin de restaurar a partir de <C-z> se debe utilizar fg (una sola % en zsh y bash también funciona), que es menor que escribir a continuación exit (pero más <C-d>).

3

El comando :sh en vim parece definir las variables de entorno VIMRUNTIME, VIM y MYVIMRC, lo que sólo puede comprobar si se han definido. Para hacerlo, puede ejecutar echo $VIM, por ejemplo, que debe devolver una línea vacía en un shell normal y algo así como /usr/share/vim en un shell ejecutado desde vim.

Cuestiones relacionadas