gpt4 book ai didi

emacs - 如何让 Emacs 的 other-window 命令忽略终端窗口?

转载 作者:行者123 更新时间:2023-12-02 01:20:42 25 4
gpt4 key购买 nike

Emacs 作为窗口管理器做得很好。我已经像这样分割我的 Emacs 框架:

+---------------------------+
| | |
| | |
| | B |
| A | |
| | |
| | |
| |-------------|
| | C |
+---------------------------+

C 通常是一个带有某种长时间运行进程的终端,例如 Web 服务器或守护进程。有时我会将点移至此处以重新启动守护进程,但大多数时候我只想在 AB 之间交换。我怎样才能做到这一点方便?

最佳答案

没有内置的东西可以做你想做的事。您可以使用以下代码执行您想要的操作(只需自定义正则表达式以匹配您想要避免的缓冲区的名称)。

注意:my-other-window 并未实现 other-window 所实现的所有功能,这留给读者作为练习。

my-other-window 将尝试切换到缓冲区与 avoid-window-regexp 不匹配的窗口。如果没有这样的窗口可用,那么它只会切换到下一个窗口。

(require 'cl)
(defvar avoid-window-regexp "^[0-9]$")
(defun my-other-window ()
"Similar to 'other-window, only try to avoid windows whose buffers match avoid-window-regexp"
(interactive)
(let* ((window-list (delq (selected-window) (window-list)))
(filtered-window-list (remove-if
(lambda (w)
(string-match-p avoid-window-regexp (buffer-name (window-buffer w))))
window-list)))
(if filtered-window-list
(select-window (car filtered-window-list))
(and window-list
(select-window (car window-list))))))

并适本地绑定(bind)它:

(global-set-key (kbd "C-x o") 'my-other-window)

关于emacs - 如何让 Emacs 的 other-window 命令忽略终端窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4941960/

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