我希望在工作站上自定义的
vim
中编辑这些文件(我无权更改远程服务器上的vim
设置) 。有时我想使用sublime text
或其他GUI编辑器来编辑文件。有更优雅的解决方案吗?#1 楼
您可以通过使用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。
评论
毫不奇怪,安装步骤将在不基于deb的发行版上失败,因此没有apt-get。 (在这种情况下,可能会出现yum或zypper。)它们还需要在本地计算机上具有root用户,无论是否可用。 (这并不是说这是一个不好的解决方案,但它具有很大的先决条件。)
–乌尔里希·施瓦茨(Ulrich Schwarz)
15年5月12日在11:26
好的。弄清楚了。所有这些都在本地计算机上完成。对于OS X,必须安装osxfuse和sshfs。这些可以通过homebrew(brew install sshfs和brew cask install osxfuse或从osxfuse.github.io获得的软件包安装)
– inspirednz
17年6月26日在3:22
#2 楼
您可以通过scp
来做到这一点,例如:vim scp://user@myserver[:port]//path/to/file.txt
注意服务器和路径之间的两个斜线
//
,这是正确解析绝对路径所必需的。 (第一个斜杠是句法,而第二个斜杠照常指定远程用户的根目录。要从主目录开始,请执行[:port]/~/path/to/file.txt
。)[:port]
是可选的。这已处理由vim的netrw.vim标准插件提供。支持其他几种协议。
评论
是的,该文件被检索到一个临时文件,该文件在保存时上传到服务器。
– FloHimself
15年5月12日在9:17
您可以在vim中尝试:set buftype =“”
– FloHimself
15年5月12日在9:20
此外,vim将读取〜/ .ssh / config并使用vim scp:// [host] / path解析远程主机。
–扬加里
18年4月3日在4:05
在ssh配置中包含一个条目,其中包含主机的别名,主机名,用户名和身份文件的路径,然后可以使用vim scp:// [alias] / path直接从vim打开文件。如果该路径是相对于您的远程登录主页的路径,则您将使用一个斜线。如果在文件系统中为绝对,则为两个:vim scp:// host // etc / ssh / ssshd_config。
–扬加里
18年5月30日在21:31
@stillanoob::e scp:// ...
– FloHimself
19年4月2日在11:06
#3 楼
根据您所说的无权编辑Vim设置时的意思,可能会以某种方式在服务器上使用Vim。如果您不能更改用户.vimrc
(例如,因为您以共享用户身份登录),但是仍然可以创建文件,请将其创建为名为Loom.vimrc
的文件,然后使用-u
开关调用Vim: vim -u ~/Loom.vimrc file_to_edit
您甚至可以使用别名:
alias vim='vim -u ~/Loom.vimrc'
将允许您以常规方式使用Vim,并且仍将加载自定义的.vimrc
文件。注销后该别名将不会保留,因此您无需担心其他人意外地使用了自定义的Vim。#4 楼
根据您希望编辑的文件数量和类型,这可能不完全是您想要在此处执行的操作,但是我认为值得一提。如果您必须在远程服务器上编辑文件,但想使用自己工作站上的所有内容,则可能要开始考虑在计算机上使用某种版本控制系统。这样,您可以使用所选软件在自己的计算机中修改本地副本,提交更改,然后仅在目标计算机中更新本地副本。除了使用您喜欢的任何软件编辑文件之外,您还拥有与每个文件相关的更改历史的附加值,这总是很好的。以下是修订控制软件的列表,以防万一。
评论
您是否建议使用诸如将更改提交到git,将其推送到类似github以及将更改从github拉到本地计算机以在此处进行更改的用法?
–alpha_989
18年5月30日在18:19
对于复杂的代码更改而言,这是可行的。但是对于简单的代码更改而言,.FloHimself或shivams提到的内容更易于实现。
–alpha_989
18年5月30日在18:20
#5 楼
要扩大对Potts先生的回答:您也可以执行上述操作,然后在.bash_profile中(或您的shell使用的任何内容)中放入类似内容:
if [[ "$(who mom loves | awk ' { print }' )" == "Loom" ]]; then
alias vim="vim -u ~/.Loom_vimrc"
fi
其中Loom是您登录时使用的原始用户ID。
如果您以共享帐户(而不是个人帐户)身份登录,那么sudo su suing,那么冯·诺伊曼可能会对您的灵魂充满怜悯,因为您迷路了。
本来可以在注释中输入,但是我根本无法格式化代码。
#6 楼
如果已经运行了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
是用于编辑remnote文件的Ex
模式命令。已在Windows 10上运行的
BitVise SSHD
和在Ubuntu 16.04上运行的VIM上进行了测试。评论
只需注意,这会禁止按Enter键继续进行初始加载,但不会抑制任何后续的:w
– Sparhawk
18-10-9在4:45
#7 楼
可以使用多个选项,而不仅仅是“ scp”,请参见:https://www.vim.org/scripts/script.php?script_id=1075我更喜欢使用“ rsync”,因为对我来说“ diff”在scp上无法正常工作。
示例-使用bash扩展名,在不同的远程服务器(hostname01.domain.my和hostname02.domain.my和...)上的“ / tmp / test”文件启动vim。 ,垂直分割:
vimdiff -O rsync://hostname{01,02,03}.domain.my:/tmp/test
#8 楼
如果您更注重GUI,并使用像Ubuntu或Mint这样的对新手更友好的Linux发行版之一,则这是另一种选择,不需要进行任何其他安装。您应该将nemo用作默认文件管理器。在菜单上它可能不会被称为“ Nemo”,因此请转到文件管理器(“文件”应用程序)的
Help > About
下进行查看。在nemo中,转到
File > Connect to server
,输入远程计算机的详细信息(SSH的默认端口为22),然后使用您喜欢的任何编辑器打开文件,就像打开本地计算机上的任何文件一样。您甚至可以关闭Nemo并继续在编辑器中工作。在地址栏中,它似乎正在使用
sftp
协议。请注意,如果远程主机的SSH连接没有活动超时,这还会阻止您在超时断开连接后在编辑器中保存更改...
#9 楼
我经常使用类似以下的内容for i in hosta hostb hostc
do
ssh -t vim xx.txt
done
,所以诀窍是
ssh -t vim xx.txt
评论
该命令不会像OP明确要求的那样在本地执行vim。
–格雷戈里·穆萨(Gregory MOUSSAT)
20 Dec 1'在18:06
评论
vim scp:// $ USER @ $ HOSTNAME // etc / passwd