Python 试图让终端在Emacs中工作

Python 试图让终端在Emacs中工作,python,emacs,ssh,cygwin,Python,Emacs,Ssh,Cygwin,我在使用emacs时遇到了很多问题,并试图让终端使用: M-x term 我安装了cygwin,并修复了.emacs以包括以下路径: (setenv "PATH" (concat "c:/cygwin/bin;" (getenv "PATH"))) (setq exec-path (cons "c:/cygwin/bin" exec-path)) (require 'cygwin-mount) (cygwin-mount-activate) (a

我在使用emacs时遇到了很多问题,并试图让终端使用:

    M-x term
我安装了cygwin,并修复了.emacs以包括以下路径:

    (setenv "PATH" (concat "c:/cygwin/bin;" (getenv "PATH")))
    (setq exec-path (cons "c:/cygwin/bin" exec-path))
    (require 'cygwin-mount)
    (cygwin-mount-activate)
    (add-hook 'comint-output-filter-functions
    'shell-strip-ctrl-m nil t)
    (add-hook 'comint-output-filter-functions
    'comint-watch-for-password-prompt nil t)
    (setq explicit-shell-file-name "bash.exe")
    ;; For subprocesses invoked via the shell
    ;; (e.g., "shell -c command")
    (setq shell-file-name explicit-shell-file-name)
但现在当我启动终端时,它似乎只给出一个空白屏幕和“挂起”

当我启动时:

    M-x shell
它确实启动了bashshell,并且可以在文件目录中运行(使用cd、ls、cp、rm等)。然而,当我尝试打开Python shell时,它再次出现,我输入。。。炮弹坠毁了。我正在做的事情是否有任何重大错误,或者有人可以指导我在线解决方案?(我已经仔细看过了。)

SSH也给出了错误:


“不会分配伪终端,因为stdin不是终端。”

是否使用默认的“Cygwin Bash Shell”?这是一个在Windows cmd shell中启动的命令,您无法通过拖动来调整屏幕大小。由于底层的Windows组件,这个外壳被严重破坏。尝试使用类似于rxvt的工具或油灰叉

如果已全部设置,则问题可能是termcap问题。有些人将他们的Cygwin TERM变量设置为“xterm”,因为许多远程机器没有为诸如
rxvt Cygwin native
之类的东西安装termcaps。在本地重写它将导致尝试一系列终端操作的程序出现问题

在~/.bash_配置文件中,可以将终端设置为以下设置<代码>导出术语=rxvt cygwin native

有关rxvt的更多信息,请参阅my

SSH也给出了错误:

“不会分配伪终端,因为stdin不是 终点站。”

为了在NTEmacs(不是cygwin的emacs)中解决这个问题,我做了以下工作:

  • 安装cygwin的gcc
  • 使用它编译成fakecygpty.exe
  • 在emacs shell中运行
    fakecygpty ssh my_server
    ,而不是只运行
    ssh my_server
    (如果fakecygpty在您的路径上,则最简单) 我在运行cmd、cygwin bash和git bash的
    *shell*
    中测试了这一点,它们都工作得很好。我的理解是fakecygpty.c将NTEMAC表示为有效的cygwin tty,以便ssh愿意与之对话


    通过将以下内容添加到init.el,还可以使NTEMAC通过SSH正确编辑文件:

    (eval-after-load "tramp"
      '(progn
         (add-to-list 'tramp-methods
                      (mapcar
                       (lambda (x)
                         (cond
                          ((equal x "sshx") "cygssh")
                          ((eq (car x) 'tramp-login-program) (list 'tramp-login-program "fakecygpty ssh"))
                          (t x)))
                       (assoc "sshx" tramp-methods)))
         (setq tramp-default-method "cygssh")))
    
    我还需要将我的Tramp更新到2.2.7,以便能够通过ssh从NTEMAC编辑文件


    希望这能给别人省去一些麻烦。:)

    在通过.emacs设置rxvt时遇到问题…说“-i不是选项”,并列出可能的选项。术语变量的默认设置是什么?我在网上找到消息说它被设置为CYGWIN,但是,我不知道这是批处理文件还是其他隐藏文件?我想在emacs中很难找到外壳。非常感谢你的意见!