Nota : Esta respuesta sólo parece trabajar con el tcsh
y fish
conchas. 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/tcsh
para configurar su shell; Sin embargo, esto es global. Así que solo úsalo si crees que esta es una característica muy importante :-)
^Z
enviar una SIGTSTP
señal, puede enviar esta señal con kill
, y luego usar SIGCONT
para 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é gitk
como 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.