Emacsの内部プロセスを強制終了する方法は?たとえば、M-x Shell
を実行します。
M-x list-processes
で実行中のプロセスを確認できますが、このリストからプロセスを強制終了するにはどうすればよいですか?
これにはデフォルトのキーバインディングはありません。ただし、pjammerの回答を参照してください-list-processes+
には、(特に)killバインディングが含まれています C-k -また、Joao Tavoraの回答同じキーに対して)キルバインディングのみを提供します。
event_jrは、使用できるコメントで指摘しています M-:(kill-process)
RET ---(currentバッファのプロセスを強制終了します。
より一般的には: M-:(kill-process PROCESS)
RETここで、PROCESS
は「プロセス、バッファ、またはプロセスまたはバッファの名前である可能性があります」。これらの名前はlist-processes
の出力に表示されるとおりです。競合が発生した場合は、プロセス名がバッファ名よりも優先されます。したがって、プロセス名を指定する習慣をつけるのがおそらく最善です。
または、Emacs 23+には、top
を実行するのに似た一般的なシステムプロセスマネージャー(M-x proced
)があり、(任意の)信号を送信するためのデフォルトのバインディングがあります(k)。もちろん、どのプロセスに興味があるかは、そのリストではそれほど明白ではありません。
編集:遅くなるより遅くなる:)次のことが可能になります M-xkill-process
RET 使用する(Emacs 26.1でテスト済み):
;; Enable M-x kill-process (to kill the current buffer's process).
(put 'kill-process 'interactive-form
'(interactive
(let ((proc (get-buffer-process (current-buffer))))
(if (process-live-p proc)
(unless (yes-or-no-p (format "Kill %S? " proc))
(error "Process not killed"))
(error (format "Buffer %s has no process" (buffer-name))))
nil)))
このスレッドは古くからありますが、これは私にとって完璧に機能する非常に迅速なハックです
(define-key process-menu-mode-map (kbd "C-k") 'joaot/delete-process-at-point)
(defun joaot/delete-process-at-point ()
(interactive)
(let ((process (get-text-property (point) 'tabulated-list-id)))
(cond ((and process
(processp process))
(delete-process process)
(revert-buffer))
(t
(error "no process at point!")))))
別の方法:
使用できます M-xeval-expression
RET
次に次のように入力します:(delete-process "<name-of-the-process>")
RET
("name-of-the-process"
は以前に M-xlist-processes
RET)。
繰り返してプロセスが強制終了されたことを確認します M-xlist-processes
RET)。
以上です。
新しいモードがあるか、アドオンの代わりに使用できます list process +