Catatan : Jawaban ini sepertinya hanya berfungsi dengan tcsh
dan fish
shells. Saya juga mencoba bash
, dash
, mksh
, dan zsh
, dan itu tidak bekerja di sana; Saya tidak yakin mengapa, karena jika saya melakukan tindakan yang sama dari kerang ini tanpa Vim, itu tidak bekerja seperti yang diharapkan ... ( :!
perintah dijalankan meskipun shell).
Saya kebetulan menggunakan tcsh
, jadi itu berfungsi untuk saya ...
Anda dapat menggunakan :set shell=/bin/tcsh
untuk mengatur shell Anda; ini bersifat global. Jadi gunakan saja jika menurut Anda ini fitur yang sangat penting :-)
^Z
mengirim SIGTSTP
sinyal, Anda dapat mengirim sinyal ini kill
, dan kemudian gunakan SIGCONT
untuk melanjutkan (melanjutkan) proses. Ini akan melepaskan proses dari Vim.
Karena sulit untuk ditunjukkan dengan ini sleep
(bagaimana Anda tahu bahwa ia telah melanjutkan eksekusi?), Saya akan gunakan gitk
sebagai contoh (tetapi program GUI akan melakukannya):
Misalnya di Vim:
:!gitk %
Dan kemudian di terminal lain:
$ 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
Anda tentu saja dapat juga menggunakan killall
, atau pkill
; sebagai contoh:
$ killall -TSTP wish
$ killall -CONST wish
Anda perlu membuka terminal lain untuk ini, yang tidak ideal, tetapi itu akan memungkinkan Anda untuk terus menggunakan Vim dan proses eksternal Anda.
&
setiap waktu::nnoremap :! :!&<Left>
... Tapi tentu saja, kadang-kadang Anda tidak menginginkannya&
, dan harus menekan <Del> untuk menghapusnya.