在emacs中运行powershell脚本

时间:2015-12-16 10:52:21

标签: windows powershell vim emacs cmd

我在emacs中安装了powershell包。我使用M-x powershell启动了powershell。在powershell窗口中,我能够像ls etc一样运行命令,但是我无法执行powershell脚本。我试图在emacs中使用cmd作为默认shell,并按照此处的描述从中执行powershell脚本;

How to run PowerShell in CMD

但它冻结了。同样,当我尝试在emacs中的powershell / cmd中运行vim时,它会冻结。我想指出脚本和vim在powershell和cmd中工作得很好,如果我在emacs之外运行它。

1 个答案:

答案 0 :(得分:1)

M-x powershellM-x shell中,终端是" dumb"并且只能理解打印的程序,而不了解全屏的程序。

因此,它适用于lscatcd,但会在vimmanless上失败。我打赌你的脚本试图打开vim,不是吗?

此限制存在的原因是:当程序全屏显示时,它会捕获所有键盘输入。因此,如果您打开vim并键入C-x,它是否运行C-x的Emacs命令或Vim命令?如果您始终运行Emacs命令,这意味着当您键入j时,它会将j插入Emacs缓冲区,而不是在Vim中向下滚动。 Vim将无法使用。如果你总是运行Vim命令,这意味着你不能再使用C-x C-c退出Emacs,因为命令将被Vim吸收。

一种解决方法是使用M-x term。在term中,所有击键都被发送到程序,因此您可以像平常一样打开并使用Vim。要运行Emacs命令,请从C-c开始。您可以阅读更多相关信息here。我不确定它是否存在于Windows中。

使用emacsclient的另一种解决方法:

;; in init.el
(server-start)

# in a shell
$ emacsclient file.txt

这将在您现有的Emacs窗口中打开该文件。完成编辑文件后,按C-x #返回shell。