Bash 如何最好地集成Emacs和Cygwin?

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

在Windows上集成Cygwin和Emacs的方法有很多。展示了一些想法。以下是我找到的选项:

  • 使用Cygwin附带的Emacs。(如果需要,请找到一种方法来访问cmd.exe。)
  • 使用NTEmacs和Cygwin作为“有时”shell。(发射Cygwin的特别命令)
  • 使用NTEmacs和Cygwin作为“始终”shell。(M-x壳牌推出cygwin)
  • 澄清“为什么”。这里有几个例子,我希望我有Cygwin和Emacs:

  • M-x whois在NTEMAC上不起作用
  • 像这样的包包含一个不支持Windows的Makefile
  • 有时候我只是需要一个bashshell来做点什么

  • 那么,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”的能力。我现在必须研究一下,看看为什么它不再工作了,我能做些什么来修复它。我刚刚找到了以下信息,我会检查一下,看看这是否有用。奇怪的是,现在我需要一个外部包来处理一些默认情况下总是存在的东西:

    然而,我更喜欢尽量减少额外软件包的使用。因此,我只是进一步检查了我的“新”Emacs+Cygwin的行为,似乎我可以通过简单地键入“/”来访问C:drive


    这很酷-只有一个字符(斜杠)而不是/cygdrive/c。但是,Emacs中的shell提示使用“/cygdrive/c”,这有点令人困惑。我研究了三个选项,都是带窗口(但不是X11)版本的Emacs。(这个终端对我来说太硬了。)下面是:

  • Cygwin附带的XEmacs
  • EmacsW32
  • Windows标准Emacs
  • Cygwin的人希望引导您使用他们的Emacs/Xemac。在中,他们写道“请注意,如果您使用Cygwin安装程序中Emacs或XEmacs的Cygwin端口,那么所有这些‘只起作用’”

    确保在xemacs之外安装xemacs sumo软件包;否则M-x外壳将无法工作。您可以在不使用X11的情况下启动XEMAC

    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/")