Bash 如何最好地集成Emacs和Cygwin?
在Windows上集成Cygwin和Emacs的方法有很多。展示了一些想法。以下是我找到的选项:Bash 如何最好地集成Emacs和Cygwin?,bash,emacs,cygwin,Bash,Emacs,Cygwin,在Windows上集成Cygwin和Emacs的方法有很多。展示了一些想法。以下是我找到的选项: 使用Cygwin附带的Emacs。(如果需要,请找到一种方法来访问cmd.exe。) 使用NTEmacs和Cygwin作为“有时”shell。(发射Cygwin的特别命令) 使用NTEmacs和Cygwin作为“始终”shell。(M-x壳牌推出cygwin) 澄清“为什么”。这里有几个例子,我希望我有Cygwin和Emacs: M-x whois在NTEMAC上不起作用 像这样的包包含一个不支持W
那么,Emacs/Cygwin的哪个选项对其他人适用?还有,有人成功尝试过MSYS集成吗?我喜欢从Cygwin安装程序获得的
xemacs
版本。开箱即用,Alt键可以很好地映射到Meta,只要需要,bash shell缓冲区就在那里。第三个选项。我使用的是NTEmacs+EmacsW32+Cygwin。这样,我就有了一个带有Unix实用程序和bashshell的本机Windows应用程序。makefile可以工作,但我从未使用过M-x whois
。我想不出这种设置有什么直接的缺点
以下是我的设置中有趣的部分,基本上非常类似于:
第四种选择是在Cygwin的替代终端之一中运行emacs:(u)rxvt、mintty、xterm。所有这些都比控制台提供了更好的终端仿真,这意味着emacs体验得到了极大改善。我倾向于将的本机版本与的(也是本机)端口结合使用,这些端口比Cygwin端口快得多,但不太完整
然后我只使用cygwin窗口来显示bash shell和缺少的东西。我在根目录上安装了cygwin。它明确警告你不要这样做,但我没有看到任何不良影响。(我从史蒂夫·耶格那里找到了这条建议) 我还安装了,这对很多人都有帮助。另外,我不得不从ispell切换到aspell。最后,稍微调整一下.emacs,我很高兴:
;;;;;;;;;;;;;;;;;;;;;;
;;CygForTheWin
;;*cygwin
(when (equal system-type 'windows-nt)
(message "Setting up Cygwin...")
(let* ((cygwin-root "c:")
(cygwin-bin (concat cygwin-root "/bin"))
(gambit-bin "/usr/local/Gambit-C/4.0b22/bin/")
(snow-bin "/usr/local/snow/current/bin")
(mysql-bin "/wamp/bin/mysql/mysql5.0.51a/bin/"))
(setenv "PATH" (concat cygwin-bin ";" ;
snow-bin ";"
gambit-bin ";"
mysql-bin ";"
"c:/usr/local/jdk1.60_03/bin/"
".;")
(getenv "PATH"))
(setq exec-path (cons cygwin-bin exec-path)))
(require 'cygwin-mount)
(cygwin-mount-activate)
(setq shell-file-name "bash")
(setq explicit-shell-file-name "bash")
(defun jonnay-cygwin-shell ()
"Wrapper around cygwin-shell so that it doesn't throw an error"
(interactive)
(condition-case e
(cygwin-shell)
(message "There was an error trying to launch the shell: %s" e)))
(message "Setting up Cygwin...Done")
;; found from the manual, check, use and make go?
(defun my-shell-setup ()
"For Cygwin bash under Emacs 20"
(setq comint-scroll-show-maximum-output 'this)
(setq comint-completion-addsuffix t)
(setq comint-eol-on-send t)
(setq w32-quote-process-args ?\")
(make-variable-buffer-local 'comint-completion-addsuffix))
(setq shell-mode-hook 'my-shell-setup)
(add-hook 'emacs-startup-hook 'jonnay-cygwin-shell)
)
就像@justinhj一样,我在windows上使用emacs的本机版本以及gnu UTIL的(也是本机的)端口(例如,用于“字符串”的binutils等) 我总是在Emacs内部或独立于Emacs使用cygwin作为shell。这样,当我在Windows和Linux/AIX/Solaris之间来回切换时,我保留了工作环境的外观和感觉 然而,不幸的是,当我将Emacs从21.2升级到23.2时,Emacs在默认情况下失去了识别“/cygwin/c”的能力。我现在必须研究一下,看看为什么它不再工作了,我能做些什么来修复它。我刚刚找到了以下信息,我会检查一下,看看这是否有用。奇怪的是,现在我需要一个外部包来处理一些默认情况下总是存在的东西:
这很酷-只有一个字符(斜杠)而不是/cygdrive/c。但是,Emacs中的shell提示使用“/cygdrive/c”,这有点令人困惑。我研究了三个选项,都是带窗口(但不是X11)版本的Emacs。(这个终端对我来说太硬了。)下面是:
DISPLAY= xemacs &
缺点:1)男孩,这是一个旧的Emacs。当其他人都在使用Emacs 23时,我真的不想继续这样做。2) 我发现,即使您没有运行X11,安装也需要一大堆X11 lib,这有点恼人。3) 没有现成的cua模式
EmacsW32(http://ourcomments.org/Emacs/EmacsW32.html)有一个一键式安装程序、一个M-x cygwin shell命令和CUA模式。但是Cygwin shell中的制表符完成使用Windows路径,这让我抓狂。自2008年以来,W32端口似乎没有得到积极改进,但它们为安装人员提供了更新的Emacs版本
Windows的标准Emacs似乎是最好的选择。从Cygwin内部下载、解压缩和启动。然后,它将主目录等粘贴到~/.emacs中。重新启动Emacs并运行M-x shell。一切正常 在Cygwin中使用Emacs。不是XEmacs,而是Emacs。我只需安装Cygwin中的所有内容,然后键入以下命令即可运行Emacs: XWin -multiwindow export DISPLAY=:0.0 emacs& 多窗口 导出显示=:0.0 emacs& 它还可以帮助创建指向C驱动器(或任何其他驱动器)的链接,如下所示:
ln-s/cygdrive/c/c
我已经用了几个月了,它总是很好用。我经常使用诸如TRAMP和subversion之类的高级功能,没有任何问题。所有像cedet这样的高级软件包都能正常工作
如果你没有注意到的话,我就是原来的海报。经过我所有的研究和尝试,这一次成功了,我非常高兴。干得好,Cygwin
另外,我建议不要在Emacs中使用shell。像
top
这样的实用程序似乎不起作用。相反,使用MinTTY和screen。Cygwin直接在MinTTY中为您提供ssh(您不需要putty)。最棒的是,我的很多Linux知识都能在Windows中无缝工作。FWIW,我使用普通的GNU Emacs Windows版本,我使用Cygwin。我从来没有遇到过任何问题,但在Emacs之外,我和Cygwin的关系不大。哦,我使用的是一个旧版本的Cygwin(带有
XWin -multiwindow
export DISPLAY=:0.0
emacs&
$ ./autogen.sh
$ ./configure --with-w32
$ make
$ make install
(let* ((cygwin-root "//wsl$/Ubuntu/")