我找到了nice post一些
几天前详细介绍了如何使用 C-d
键终止 shell 缓冲区。基本上,
使用 C-d
终止进程后,您现在可以再次点击 C-d
来终止
缓冲区。
我试图为 term-mode 实现类似的东西,但是我遇到了
问题。在您终止术语进程(使用通常的 C-d
)后,似乎
缓冲区使用的键映射发生了变化,但我找不到它是什么!
例如,启动 term
命令 (M-x term RET RET
),然后只需
立即按下C-d
。一旦进程死亡,缓冲区仍然报告正在运行
在 term-mode 中,但它们使用的键映射既不是 term-mode-map
也不是
term-raw-map
。
所以
我要么需要找出它正在使用的 map ,以便我可以将 C-d
绑定(bind)到 kill-buffer
。
或者我需要另一种方法来在术语模式下使用 C-d
终止缓冲区。
最佳答案
试试这个:
(defun delete-char-or-kill-terminal-buffer (N &optional killflag)
(interactive "p\nP")
(if (string= (buffer-name) "*terminal*")
(kill-buffer (current-buffer))
(delete-char N killflag)))
(global-set-key (kbd "C-d") 'delete-char-or-kill-terminal-buffer)
当*terminal*
进程退出时,缓冲区的模式切换到基本模式,这就是为什么C-d不做你想要的事情。
关于emacs - 使用 C-d 杀死 *terminal* 缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14444265/