使用emacs控制命令行进程


3

我有大量的命令行实用程序,我在日常开发中使用(例如Maven,ant,Grizzly,mplayer,CASE工具等)。我用的是Windows。每次我想启动一个新进程时,我最终都要创建一个新的cmd.exe进程并输入我想要运行的内容。有时,我一次打开五个cmd.exe!它变得越来越难以管理。

有没有办法在emacs中直接执行此操作?这就是我想要的:

  • 有几个cmd.exe的输出存储在emacs中(可能是每个的新缓冲区)
  • 能够将stdin和ctrl-c发送到进程
  • 轻松地重新启动命令而无需重新输入整个命令(例如按下cmd.exe中的向上箭头)
  • 能够将某些参数粘贴到要运行的命令(例如-file = C:\ my \ directory \ my.file)
  • 能够将输出复制到剪贴板。理想情况下,不像cmd.exe那样在40列左右打破。

这听起来像emacs中的一个可行的任务,但我不知道如何做到这一点。我希望能够在远程Linux机器上使用ssh并做类似的事情。

也许还有另一个比emacs更明显的解决方案。如果是的话,请赐教。

编辑:我注意到emacs有一个eshell命令。如果我能够同时在多个缓冲区上工作,我认为我的需求会得到满足。

Answers:


3

我是一个linux / emacs有偏见的人,所以这就是我要尝试的:

  • 安装cygwin及其emacs版本
  • 在emacs中运行多个shell。M-x shell在emacs中启动shell。如果给出前缀arg(C-u M-x shell),emacs将提示您输入shell缓冲区的名称。这样您就可以拥有多个shell缓冲区。
  • 为要运行的各种任务创建bash别名,例如创建一个名为“mp”的别名,用于“ mplayer -option1 -option2 23

许多不是linux / cygwin的人都喜欢PowerShell。这也提供了别名。有些人写过关于在emacs中运行powershell的文章


你能扩展“在emacs中运行多个shell”吗?这是我不太可能发生的部分。一个M-!给出Shell命令输出缓冲区。我能获得几个这样的缓冲区吗?
User1

我已经更新了第二个要点以扩展您的问题。

非常好!奖金问题:更改默认路径的最佳方法是什么?
User1

cmd.exe运行正常。Cygwin脾气暴躁。我会打开一个新问题。
User1

一个相关的问题:superuser.com/questions/61605 / ...
User1
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.