Nota : Esta respuesta sólo parece trabajar con el tcshy fishconchas. Yo también trató bash, dash, mksh, y zsh, y no trabajo allí; No estoy seguro de por qué, porque si hago las mismas acciones de estas conchas sin Vim, que hace el trabajo como se esperaba ... ( :!comandos se ejecutan a pesar de la cáscara).
Yo uso tcsh, así que funciona para mí ...
Puede usar :set shell=/bin/tcshpara configurar su shell; Sin embargo, esto es global. Así que solo úsalo si crees que esta es una característica muy importante :-)
^Zenviar una SIGTSTPseñal, puede enviar esta señal con kill, y luego usar SIGCONTpara continuar (reanudar) el proceso. Esto separará el proceso de Vim.
Debido a que es difícil de mostrar con esto sleep(¿cómo sabe que tiene una ejecución continua?), Lo usaré gitkcomo ejemplo (pero cualquier programa GUI funcionará):
Por ejemplo en Vim:
:!gitk %
Y luego en otra terminal:
$ ps ax | grep gitk
30105 pts/10 S+ 0:00 -bin/tcsh -c gitk
30108 pts/10 Sl+ 0:00 wish /sbin/gitk --
$ kill -TSTP 30108
$ kill -CONT 30108
Por supuesto, también puede usar killall, o pkill; por ejemplo:
$ killall -TSTP wish
$ killall -CONST wish
Necesitas abrir otro terminal para esto, lo cual no es ideal, pero te permitirá continuar usando tanto tu Vim como tu proceso externo.
&cada vez::nnoremap :! :!&<Left>... Pero, por supuesto, a veces no querrá el&, y tendrá que presionar <Del> para eliminarlo.