我必须编辑一些放置在我可以通过 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