【发布时间】:2016-05-25 16:51:51
【问题描述】:
每次我在 Emacs "M-x term" 中打开一个新终端时,我都会得到当前打开的终端,为了解决这个问题,我需要重命名终端运行所在的缓冲区,然后通过 M-x term 启动一个新终端。
我想写一个函数来保存一个全局计数器,并用它来启动一个新的终端,用它来生成缓冲区名称;完成后,我可以将此函数映射到我偏好的键绑定。
我在新创建的缓冲区中运行终端时遇到问题,我不是经验丰富的 ELisp 程序员,这段代码对某些人来说可能看起来很幼稚,尽管如此,我目前所处的位置是:
(defvar counter 0)
(defun mine/open-terminal ()
"Open a new terminal and rename the buffer"
(setq counter (+ counter 1))
(setq title (concat "Terminal-" (number-to-string counter)))
(setq terminal (get-buffer-create title))
该函数创建一个具有正确名称的新缓冲区 - 尽管它没有像我希望的那样立即显示它,但问题是如果我在函数末尾添加以下行:
(term "/bin/bash")
创建了一个名为终端的新缓冲区,我觉得我在这里遗漏了一点,有没有办法启动一个新的终端给它一个缓冲区名称?
非常感谢。
【问题讨论】:
-
这是我用来创建连续编号的自定义暂存缓冲区,您可以对其进行修改以打开一个新术语:emacs.stackexchange.com/a/16493/2287
-
我看到函数
term只是几行长 -- 所以继续找到函数,打开它,将它复制到您的.emacs,然后创建一个新函数一个不同的名称,包含类似于第一条评论中的链接的概念:M-x find-function RET term RET。当您以编程方式循环或搜索具有特定名称的现有缓冲区时,无需将缓冲区对象/名称信息存储在全局变量中。后者是可能的,但似乎是必要的,除非该变量稍后将用于问题中未指定的其他事物。 -
@lawist: 我找不到函数源.. 我得到一个 -> 调试器进入--Lisp 错误:(错误“找不到库术语”)
-
(require 'term)在.emacs或M-x eval-expression RET (require 'term) RET中。 -
find-library-name: 找不到库 /usr/share/emacs/24.3/lisp/term.el :-( 感谢您的链接,尽管在我看来我们是尝试做不同的事情,在您的情况下,您创建一个新缓冲区并为它设置模式,在我的情况下,我需要在其上运行一个进程,再说一次,我远非专家。