Emacs和ansi术语:Elisp遍历缓冲区列表

Emacs和ansi术语:Elisp遍历缓冲区列表,emacs,elisp,Emacs,Elisp,我使用以下代码,打开ansi术语。我找到了这个 (全局设置键(kbd)“)访问ansi术语) 现在我想修改它,这样在重命名一个缓冲区后,它会记住它的名称,当我使用键盘快捷键在重命名的缓冲区列表中进行迭代时 所以,如果我按下[F2],它发现ansi术语正在运行,它会问我是否要重命名它。我把它改名为BUILD。我想要一个函数并绑定为[F3],以遍历打开的ansi术语列表 我是个文盲。如果有人能提供一些参考资料,我会很高兴的 谢谢。以下代码/绑定循环通过主要模式为术语模式的所有缓冲区: (global

我使用以下代码,打开ansi术语。我找到了这个

(全局设置键(kbd)“)访问ansi术语)

现在我想修改它,这样在重命名一个缓冲区后,它会记住它的名称,当我使用键盘快捷键在重命名的缓冲区列表中进行迭代时

所以,如果我按下[F2],它发现ansi术语正在运行,它会问我是否要重命名它。我把它改名为BUILD。我想要一个函数并绑定为[F3],以遍历打开的ansi术语列表

我是个文盲。如果有人能提供一些参考资料,我会很高兴的


谢谢。

以下代码/绑定循环通过主要模式为
术语模式的所有缓冲区:

(global-set-key (kbd "<f3>") 'cycle-ansi-term)
(defun cycle-ansi-term ()
  "cycle through buffers whose major mode is term-mode"
  (interactive)
  (when (string= "term-mode" major-mode)
    (bury-buffer))
  (let ((buffers (cdr (buffer-list))))
    (while buffers
      (when (with-current-buffer (car buffers) (string= "term-mode" major-mode))
        (switch-to-buffer (car buffers))
        (setq buffers nil))
      (setq buffers (cdr buffers)))))
(全局设置键(kbd“”)循环ansi术语)
(定义ansi术语()
“循环通过主要模式为术语模式的缓冲区”
(互动)
(当(string=“术语模式”主模式)
(掩埋缓冲区)
(let((缓冲区(cdr(缓冲区列表)))
(而
(当(使用当前缓冲区(汽车缓冲区)(string=“术语模式”主模式))
(切换到缓冲器(汽车缓冲器))
(setq缓冲区为零)
(setq缓冲器(cdr缓冲器(()())))

以下代码/绑定在主要模式为
术语模式的所有缓冲区中循环:

(global-set-key (kbd "<f3>") 'cycle-ansi-term)
(defun cycle-ansi-term ()
  "cycle through buffers whose major mode is term-mode"
  (interactive)
  (when (string= "term-mode" major-mode)
    (bury-buffer))
  (let ((buffers (cdr (buffer-list))))
    (while buffers
      (when (with-current-buffer (car buffers) (string= "term-mode" major-mode))
        (switch-to-buffer (car buffers))
        (setq buffers nil))
      (setq buffers (cdr buffers)))))
(全局设置键(kbd“”)循环ansi术语)
(定义ansi术语()
“循环通过主要模式为术语模式的缓冲区”
(互动)
(当(string=“术语模式”主模式)
(掩埋缓冲区)
(let((缓冲区(cdr(缓冲区列表)))
(而
(当(使用当前缓冲区(汽车缓冲区)(string=“术语模式”主模式))
(切换到缓冲器(汽车缓冲器))
(setq缓冲区为零)
(setq缓冲器(cdr缓冲器(()())))

@Tery Jackson:谢谢,这正是我想要的。@Tery Jackson:嗨,当我第一次尝试这个时,我只尝试了两个术语,效果很好。。。但是有多个这样的术语:*另一个20个术语:char run*另一个20个术语:char run*大约19个术语:char run这个循环只通过最近打开的缓冲区中的2个。。。如何取消此限制?谢谢。@Tery Jackson:非常感谢。。。现在它遍历所有打开的ansi术语缓冲区。再次感谢。@Tery Jackson:谢谢,这正是我想要的。@Tery Jackson:嗨,当我第一次尝试这个时,我只尝试了两个术语,效果很好。。。但是有多个这样的术语:*另一个20个术语:char run*另一个20个术语:char run*大约19个术语:char run这个循环只通过最近打开的缓冲区中的2个。。。如何取消此限制?谢谢。@Tery Jackson:非常感谢。。。现在它遍历所有打开的ansi术语缓冲区。再次感谢。