Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
远程shell_Shell_Emacs - Fatal编程技术网

远程shell

远程shell,shell,emacs,Shell,Emacs,我倾向于在emacs中运行shell,但当我使用它以ssh方式连接到另一台计算机时,这会破坏选项卡完成。有办法解决这个问题吗?试试: M-x cd /hostname:/current/path/in/the/shell 这应该设置ange ftp(或tramp),然后路径的制表符完成应该可以在该shell中正常工作,直到您登录到另一台计算机 您可以设置comint进程筛选器,以便在键入ssh时自动识别,但这很难正确,因为当您退出ssh会话时,它应该会恢复,但不会被exit的其他用法所欺骗 对

我倾向于在emacs中运行shell,但当我使用它以ssh方式连接到另一台计算机时,这会破坏选项卡完成。有办法解决这个问题吗?

试试:

M-x cd /hostname:/current/path/in/the/shell
这应该设置ange ftp(或tramp),然后路径的制表符完成应该可以在该shell中正常工作,直到您登录到另一台计算机

您可以设置comint进程筛选器,以便在键入
ssh
时自动识别,但这很难正确,因为当您退出
ssh
会话时,它应该会恢复,但不会被
exit
的其他用法所欺骗


对于一个自动化的解决方案,我建议进行扩充,使Emacs与shell缓冲区的当前工作目录保持同步。只需在主机名中添加一个额外的信息,并使用该信息设置主机名和路径,如上图所示。

如果您在密钥映射中遇到意外行为,您可以尝试使用M-x ansi term来托管shell。话虽如此,但我无法重新生成您在设置中描述的问题。

我想我也遇到了类似的问题,通过在删除计算机上编辑我的~/.bash_登录名并附加解决了这个问题

export TERM=xterm

我使用OS X,在另一个线程中连接Linux时遇到问题(Debian Lenny)

,有人提到了我从未使用过的eshell,但我尝试了SSH,各种良好的集成正在发生。学习eshell的时间到了。

我刚刚编写了一个在远程主机上打开shell的小函数。在
shell
之前的
cd
调用使选项卡完成工作

这可能与您想要的不同,因为它打开了一个新的shell,而不是本地shell中的ssh'ing。除此之外,您还可以研究黑客攻击emacs(或者看看还有谁这样做过)


在缓冲区A中调用的M-x shell将切换到shell缓冲区B;通常是贝壳。如果有必要,它会创建B,这并不奇怪。前缀arg将导致它询问B的名称。如果A正在远程主机上查看某些内容,则shell将在远程主机上运行。但只有当它找不到现有的B时,文件名完成才会起作用

在EmacsWiki中有一些关于如何修补的注释。例如,请参见函数my shell in,它将扩展B的默认名称,以便远程文件获得远程shell。我也是这样做的


文件名自动完成将正常工作。命令自动完成?少一点。对我来说,它会阻塞emacs,然后实际上就不工作了。

我使用dired访问远程机器并在那里打开一个shell

以下是我使用的函数,取自并修改自:

例如:

(anr-shell "/vagrant@localhost#2222:/vagrant/")

你能详细说明一下吗?您是否希望在特定于计算机的路径(如本地磁盘)上完成文件名?一般的命令?
(defun anr-shell (buffer)
  "Opens a new shell buffer where the given buffer is located."
  (interactive "sBuffer: ")
  (pop-to-buffer (concat "*" buffer "*"))
  (unless (eq major-mode 'shell-mode)
    (dired buffer)
    (shell buffer)
    (sleep-for 0 200)
    (delete-region (point-min) (point-max))
    (comint-simple-send (get-buffer-process (current-buffer)) 
                        (concat "export PS1=\"\033[33m" buffer "\033[0m:\033[35m\\W\033[0m>\""))))
(anr-shell "/vagrant@localhost#2222:/vagrant/")