如何通过 ssh 远程编辑文件?

如何通过 ssh 远程编辑文件?

我必须编辑一些放置在我可以通过 ssh 访问的服务器上的文件。

我更愿意以自定义方式编辑这些文件vim在我的工作站上(我无权更改vim远程服务器上的设置)。有时我想编辑一个文件sublime text或其他 GUI 编辑器。

当然,我可以下载这些文件,在本地编辑它们并将它们上传回服务器。有更优雅的解决方案吗?

答案1

你可以通过这样的方式做到这scp一点:

vim scp://user@myserver[:port]//path/to/file.txt

请注意服务器和路径之间的两个斜杠//,这是正确解析绝对路径所必需的。 (第一个斜杠是语法上的,而第二个斜杠像往常一样指定远程用户的根目录。要从主目录开始,您需要执行[:port]/~/path/to/file.txt。)[:port]是可选的。

这是由 vim 处理的netrw.vim标准插件。支持其他几种协议。

答案2

您可以通过使用 sshfs 将远程文件夹安装为文件系统来完成此操作。为此,首先需要满足一些先决条件:

#issue all these cmds on local machine
sudo apt-get install sshfs
sudo adduser <username> fuse #Not required for new Linux versions (including Ubuntu > 18.04)

现在,进行安装过程:

mkdir ~/remoteserv    
sshfs -o idmap=user <username>@<ipaddress>:/remotepath ~/remoteserv

之后,只需进入安装的文件夹并使用您自己的本地自定义 vim。

答案3

可以使用多个选项,不仅仅是“scp”;看:https://www.vim.org/scripts/script.php?script_id=1075

我更喜欢使用“rsync”,因为对我来说“diff”不能与 scp 一起正常工作。

示例 - 在不同远程服务器(hostname01.domain.my 和 hostname02.domain.my 等)上使用“/tmp/test”文件启动 vim,使用 bash 扩展,垂直分割:

vimdiff -O rsync://hostname{01,02,03}.domain.my:/tmp/test

答案4

根据您期望编辑的文件数量和文件类型,这可能不完全是您想要执行的操作,但我认为值得一提。如果您必须在远程服务器中编辑文件,但想要使用自己工作站中的所有内容,那么您可能需要开始考虑使用某种版本控制您机器中的系统。这样,您可以使用您选择的软件修改自己计算机中的本地副本,提交更改,然后仅更新目标计算机中的本地副本。除了使用您喜欢的任何软件编辑文件之外,您还有一个附加价值:历史变迁与每个文件相关,这总是好的。

这是一个列表版本控制软件, 万一。

相关内容