Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何定义在Emacs上运行多个shell的函数?_Emacs_Elisp - Fatal编程技术网

如何定义在Emacs上运行多个shell的函数?

如何定义在Emacs上运行多个shell的函数?,emacs,elisp,Emacs,Elisp,正如我所知,“C-u M-x shell”可以用来运行多个shell。 但是如何定义一个函数来完成与“C-u M-x shell”相同的事情呢 我使用descripe function和find function来检查shell的行为,特别是它的交互式声明,然后我只是复制了必要的代码,将其转换为对shell函数的非交互式调用的参数(但将其包装在get buffer中以提供缓冲区参数) 实际上,我遗漏了一些处理远程文件的代码,因为这些代码中的注释似乎有点混乱。如果您没有在缓冲区中使用C-u M-x

正如我所知,“C-u M-x shell”可以用来运行多个shell。 但是如何定义一个函数来完成与“C-u M-x shell”相同的事情呢

我使用
descripe function
find function
来检查
shell
的行为,特别是它的
交互式
声明,然后我只是复制了必要的代码,将其转换为对
shell
函数的非交互式调用的参数(但将其包装在
get buffer
中以提供缓冲区参数)

实际上,我遗漏了一些处理远程文件的代码,因为这些代码中的注释似乎有点混乱。如果您没有在缓冲区中使用
C-u M-x shell
通过Tramp访问远程文件的习惯,那么这种遗漏不会影响您

综上所述,更简单(更完整)的方法是:

(defun my-named-shell ()
  "Equivalent to C-u M-x shell RET"
  (interactive)
  (let ((current-prefix-arg '(4)))
    (call-interactively 'shell)))
有关更多信息,请参阅

在本例中,
当前前缀arg
可以是任何非nil值,但我认为使用
C-u
实际生成的值是一个好习惯。

您也可以查看。
(defun my-named-shell ()
  "Equivalent to C-u M-x shell RET"
  (interactive)
  (let ((current-prefix-arg '(4)))
    (call-interactively 'shell)))