emacs中的非数字参数

ego*_*or7 3 emacs

有没有办法将非数字参数传递给函数?

例如:C-u 5 M-x eshell使用名称制作(切换到)eshell *eshell*<5>.但是我想给eshell缓冲区命名而不是数字.

Tik*_*vis 6

我不认为有任何通用的方法将非数字参数以相同的方式传递给任何命令C-u.

但是,使用迷你缓冲区可以输入不同的模式.例如,C-u M-x shell(而不是eshell)允许您命名新的shell缓冲区.

您可以轻松编写自己的eshell命令,也可以命名缓冲区:

(defun eshell-new-buffer (name) 
  (interactive "sBuffer name:")
  (eshell t)
  (rename-buffer name))
Run Code Online (Sandbox Code Playgroud)

然后将其绑定到某个键:

(global-set-key (kbd "C-c e") 'eshell-new-buffer)
Run Code Online (Sandbox Code Playgroud)

现在,当您键入时C-c e,系统将提示您输入缓冲区名称,并eshell为您创建一个具有该名称的新缓冲区.

编辑:简化了@sanityinc有用地指出的代码.

  • 你可以简化代码:使`name`成为`eshell-new-buffer`的参数,使用`(interactive"sBuffer name:")`,然后跳过`read-from-minibuffer`步骤. (3认同)