gpt4 book ai didi

shell - 使用 emacs shell 时清除 shell 的命令

转载 作者:行者123 更新时间:2023-12-03 05:31:58 24 4
gpt4 key购买 nike

在 emacs 中使用 shell 时是否有内置命令可以清除 shell?

如果没有,是否有 elisp 函数可以实现相同的功能?

最佳答案

2015 年 2 月更新

刚刚注意到 Emacs 现在(版本 25+)有命令 comint-clear-buffer ,绑定(bind)到C-c M-o默认情况下,这就是我们所需要的,并且可能比我最初在下面发布的答案更好。

要考虑的选项:

  1. C-l将重新调整缓冲区。反复按下它会循环缓冲区,以便该点出现在缓冲区的顶部、中间或底部。当它停在顶部时,缓冲区看起来像是被清除了,尽管所有文本仍然在那里,在 View 之外。

  2. C-x h标记整个缓冲区,之后 C-w杀死它。这也会终止最后一个提示,但在输入下一个命令后,您会恢复提示。

  3. 您还可以使用erase-buffer ,默认情况下不绑定(bind)到 key ,但很容易完成(您也可以使用 M-x erase-buffer :

    (defun my-shell-hook ()
(local-set-key "\C-cl" 'erase-buffer))

(add-hook 'shell-mode-hook 'my-shell-hook)

将其绑定(bind)到 C-c l ;你可以选择你喜欢的。

  • 可以通过快速修复来在清除后重新创建提示:
  •     (defun my-clear ()
    (interactive)
    (erase-buffer)
    (comint-send-input))

    (defun my-shell-hook ()
    (local-set-key "\C-cl" 'my-clear))

    (add-hook 'shell-mode-hook 'my-shell-hook)

    在您使用 emacs 一段时间后,标记和删除区域变得很自然,因此您可能会发现第一个选项就足够了。如果没有,最后一个选项最接近您想要的。

    编辑:刚刚在 emacs wiki 上找到了这个,它比我的选项 4 更好:

    (defun my-clear ()
    (interactive)
    (let ((comint-buffer-maximum-size 0))
    (comint-truncate-buffer)))

    关于shell - 使用 emacs shell 时清除 shell 的命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7733668/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com