emacs - 使用 C-d 杀死 *terminal* 缓冲区

标签 emacs keyboard

我找到了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/

相关文章:

java - 有没有办法在没有 JFrame 的情况下获取键盘事件?

emacs:用字符填充对齐的字符串

emacs - emacs 中的 RDFa 代码应该使用哪种模式?

emacs - 如何动态更新 Info-default-directory-list

emacs - 为什么我的 emacs comint 缓冲区有时似乎共享相同的历史记录?

ios - 如何在 iOS8 自定义键盘中使用自动更正和快捷键列表?

windows - 有没有办法以编程方式打开/关闭粘滞键?

android - 是否可以在不显示键盘的情况下扩展 SearchView

emacs evil-mode 键映射

javascript - 如何在 documents.ready 函数中通过 javascript 自动按下键(ctrl+shift+i)?