【问题标题】:function similar to other-buffer but with filtering功能类似于 other-buffer 但带有过滤功能
【发布时间】:2013-07-26 01:43:05
【问题描述】:

我正在寻找一种在 emacs 的 other-buffer 方法中包含一些过滤的方法。 当前调用 other-buffer 会提取最后一个最近的缓冲区,但这样做的问题是,被外部进程修改的缓冲区不断作为 other-buffer 出现。我想在其他缓冲区中实现某种过滤。

目前我在 C-^ 绑定到其他缓冲区的情况下使用 evil,并且我有一些 tail.el 缓冲区处于活动状态,当我尝试切换缓冲区时,尾部缓冲区会不断弹出。

是否有其他缓冲区的替代方案,或者有人可以编写一些代码来实现这一点,谢谢。

【问题讨论】:

  • 你确定你说的是other-window吗?你的问题的其余部分(谈到最近的缓冲区)让我想起了next-buffer...other-window 没有任何关于最近的窗口/缓冲区的概念:它总是以相同的顺序在窗口之间循环,具体取决于分裂几何。
  • 我使用 evil 并且 C-^ 绑定到 evil-buffer 命令,查看代码,它看起来像是在调用 other-buffer... 哦抱歉,应该是 other-缓冲区不是其他窗口..
  • 好的,这里的困难部分是知道何时不想切换到尾部缓冲区。有人可以写一些东西来跳过尾部缓冲区,但是当你确实想要时,你必须找到另一种方式来切换到它们。
  • 我也使用 ibuffer,所以我可以用它来切换尾部缓冲区。只有当我使用这种 C-^ 组合时,我才不想切换到尾缓冲区,此外我还编写了一个简单的函数来切换到或创建尾缓冲区。在编辑文件和切换时,我不希望尾部缓冲区在两者之间跳跃,并且我被困在尾部缓冲区中,因为它使用了不同的键盘映射。
  • 基本逻辑是这样的 (defun other-buffer-ex () (switch-buffer (if (eq other-buffer-mode "itail-mode") (next-buffer) (其他缓冲区))))

标签: emacs elisp evil-mode


【解决方案1】:

对我有用的是winner-mode - 这就像一个撤消,但用于窗口配置。

这是我的设置:

(winner-mode)
(global-set-key (kbd "<f7>") 'winner-undo)
(global-set-key (kbd "C-<f7>") 'winner-redo)

另外我推荐other-window 使用一些非常便宜的捷径,因为它是 经常使用的命令

我把它放在 C-p 上,因为我不理解这种不一致 一个方向键离其他键太远了。 我在 C-h 上有previous-line,所以现在 我的方向键是 n h f b - 他们几乎在一起了!

我并没有真正错过 C-h 的默认设置,因为 f1 具有相同的功能。

【讨论】:

    【解决方案2】:

    好的,所以我得到了一些可行的解决方案,但使用此答案中的位并不完美: emacs lisp, how to get buffer major mode?

    (defun buffer-mode (buffer-or-string)
    “返回与缓冲区关联的主要模式。”
    (with-current-buffer buffer-or-string (format "%s" major-mode)))

    (defun other-buffer-ex ()
    (互动)
    (切换到缓冲区
    (if (string-equal (buffer-mode (other-buffer)) "comint-mode") (下一个缓冲区) (其他缓冲区))))

    【讨论】:

    • 为什么不完美?你有什么困扰?
    • 我需要将 if 替换为一段时间,这样如果下一个缓冲区也是尾缓冲区,那么它也应该被跳过。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-15
    • 2012-03-26
    • 2014-10-04
    • 2012-10-04
    • 2016-03-24
    • 1970-01-01
    相关资源
    最近更新 更多