如何定义在Emacs上运行多个shell的函数?
正如我所知,“C-u M-x shell”可以用来运行多个shell。 但是如何定义一个函数来完成与“C-u M-x 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
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)))