在Linux上编辑远程文件的快速方法是什么?

时间:2014-08-07 13:19:57

标签: vim ssh edit nano

我有一个我定期编辑的远程文件。我想用一个快速,简单的命令编辑它,可能通过SSH工作。目前,我的工作流程是通过SSH连接到远程计算机,使用编辑器(比如vim或nano)打开文件,编辑,保存然后关闭连接。

我知道我可以使用SSHFS或Nautilus功能挂载远程计算机文件系统,但我真的在终端中寻找一个命令来运行,该命令将在编辑器中打开文件,允许我保存然后退出,关闭与远程计算机的所有连接。

目前,我试图通过SSH将命令传递给远程计算机,但我遇到了困难。对于VIM,命令类似于以下内容:

ssh user1@computer1 "vim /path/laboratory_notebook_1.md"

使用此过程,VIM无法正常运行并出现以下错误:

Vim: Warning: Output is not to a terminal
Vim: Warning: Input is not from a terminal

对于nano,命令类似于以下内容:

ssh user1@computer1 "nano /path/laboratory_notebook_1.md"

使用此程序,nano不会运行,并显示以下错误:

Error opening terminal: unknown.

我不确定如何继续这一思路。我将非常感谢您对此方法的帮助以及有关以最少量互动方式快速编辑远程文件的其他方法的建议。

2 个答案:

答案 0 :(得分:8)

如果你正在使用vim。 Vim附带了一个名为netrw的插件,可以让你这样做。

vim scp://hostname/path/to/file

将文件复制到本地计算机并保存重新上传。

查看netrw的文档:h netrw

答案 1 :(得分:8)

强制伪TTY分配

您可以使用一个或多个-t标志强制伪tty分配。 SSH(1)手册页说:

 -t      Force pseudo-tty allocation.  This can be used to execute arbi-
         trary screen-based programs on a remote machine, which can be
         very useful, e.g. when implementing menu services.  Multiple -t
         options force tty allocation, even if ssh has no local tty.

实施例

使用您自己的示例稍加修改,如果您有本地TTY或PTY,则以下内容将起作用:

ssh -t user1@computer1 'vim /path/laboratory_notebook_1.md'

OpenSSH_6.2p2对我来说很好用。您的里程(和操作环境)可能会有所不同。