我必须编辑通过ssh可以到达的某些服务器上的文件。
我希望在vim
工作站上以自定义的方式编辑这些文件(我无权更改vim
远程服务器上的设置)。有时我想使用sublime text
或其他GUI编辑器来编辑文件。
当然,我可以下载这些文件,在本地对其进行编辑,然后将其上传回服务器。有更优雅的解决方案吗?
我必须编辑通过ssh可以到达的某些服务器上的文件。
我希望在vim
工作站上以自定义的方式编辑这些文件(我无权更改vim
远程服务器上的设置)。有时我想使用sublime text
或其他GUI编辑器来编辑文件。
当然,我可以下载这些文件,在本地对其进行编辑,然后将其上传回服务器。有更优雅的解决方案吗?
Answers:
您可以通过使用sshfs将远程文件夹挂载为文件系统来实现。为此,首先要满足一些先决条件:
# issue all these cmds on local machine
sudo apt-get install sshfs
sudo adduser <username> fuse
现在,执行安装过程:
mkdir ~/remoteserv
sshfs -o idmap=user <username>@<ipaddress>:/remotepath ~/remoteserv
之后,只需进入已挂载的文件夹并使用您自己的本地自定义vim。
osxfuse
和安装sshfs
。可以使用自制软件(brew install sshfs
和brew cask install osxfuse
,或从osxfuse.github.io
您可以这样操作scp
:
vim scp://user@myserver[:port]//path/to/file.txt
请注意//
服务器和路径之间的两个斜杠,这是正确解析绝对路径所必需的。(第一个斜杠是句法,而第二个斜杠照常指定远程用户的根目录。要从主目录开始,您可以这样做[:port]/~/path/to/file.txt
。)[:port]
是可选的。
这是由vim的netrw.vim标准插件处理的。支持其他几种协议。
E382: Cannot write, 'buftype' option is set
:set buftype=""
在vim中尝试。
~/.ssh/config
并解析远程主机vim scp://[host]/path
。
:e scp://...
根据您希望编辑的文件数量和类型,这可能不完全是您想要在此处执行的操作,但是我认为值得一提。如果您必须在远程服务器上编辑文件,但想使用自己工作站上的所有内容,则可能要开始考虑在计算机上使用某种版本控制系统。这样,您可以使用所选软件在自己的计算机上修改本地副本,提交更改,然后仅在目标计算机上更新本地副本。除了使用您喜欢的任何软件编辑文件之外,您还拥有与每个文件相关的更改历史的附加值,这总是很好的。
这是修订控制软件的列表,以防万一。
git
,将其推送到并将其从中github
拉出github
到本地计算机以在此处进行更改的用法?
如果您已经在运行vim会话,请使用
:silent e scp://user@myserver[:port]//path/to/file.txt
在:silent
前面将打压Press Enter to Continue
消息
和
e scp://user@myserver[:port]//path/to/file.txt
是Ex
用于编辑remnote文件的模式命令。
已BitVise SSHD
在Windows 10上运行并在Ubuntu 16.04上运行VIM进行了测试
Press Enter to Continue
初始加载,但不会抑制后续加载:w
deb
基于发行版的发行版上失败,因此没有发行版apt-get
。(在这种情况下,yum
或者zypper
可能存在。)它们也需要在本地计算机上具有root用户,无论是否可用。(这并不是说这是一个不好的解决方案,但这有很大的先决条件。)