我的项目涉及在远程服务器上处理大型代码库。我一直在编辑多个文件,所以来回 scp'ing 文件是不可能的。我按照自己喜欢的方式安装了本地 Macvim,包括 ctags 在内的多个插件。
完全有可能通过 ssh 使用 Macvim,这样我就可以轻松地在本地运行的 Macvim 中浏览和打开文件?
在没有安装在远程服务器上的情况下让 ctags 工作会更好,但我怀疑不可能......
还有一个问题是远程服务器是用我不想使用但不能覆盖的其他人的 .vimrc 设置的。
以下命令将通过 ssh 在 MacVim 中打开一个文件:
:e scp://username@host.com/path/to/file
我怀疑这可能不完全是您要寻找的,因为它一次只会给您一个文件。
如果您可以在本地从目标系统安装共享,那也可以。
使用 FUSE for macOS 项目中的 SSHFS。https://github.com/libfuse/sshfs
我经常使用的一件事是打开一个 X-11 会话,然后连接到我的远程主机,并在 X 上使用 gvim。你将拥有一个完整的 GUI 版本的编辑器,它看起来就像它正在运行在本地,但一切都在远程运行。
另一种选择是使用 VNC 来远程控制远程主机上的会话。Mac 有几个 VNC 客户端。
您还可以使用 Mac SFTP 或 FTP 客户端进行连接,然后告诉它编辑一个或多个文件。如果您已将其配置为使用 MacVim 作为编辑器,则文件 I/O 将通过 FTP 连接透明地发生。当我没有 ssh 功能时,这就是我编辑远程网站的方式。
MacVim 和 vim 的 netrw 插件非常强大。如果您没有传递文件名以在scp://...
命令上进行编辑,vim 将显示通常的目录浏览器,让您从远程机器中选择文件并在本地编辑它。例如,这会通过 SSH 打开从我的笔记本电脑到自身的连接,并向我显示 vim 中的主目录:
vim scp://greg@localhost//Users/greg/
不再维护上面建议的 MacFUSE。幸运的是,有一个继任者OSXFUSE。
我在 OS X 10.9 上使用 MacVim 和 OSXFUSE 和 SSHFS 在远程 Linux 服务器上编辑代码。保存文本文件时我会遇到短暂的延迟(1-3 秒),但除此之外,它就像使用本地文件系统一样。
至于您问题的 .vimrc 部分,文档说明该参数-u
可能对您有所帮助。
-u {vimrc} 读取文件 {vimrc} 进行初始化。
每个文件的 scp-ing 都会让你很头疼。
虽然带有 MacFuse 的 SSHFS 可以工作,但它可能真的很慢。我在工作中尝试了几次,用一根巨大的管道连接到一个关闭的服务器,虽然这个想法一开始看起来很优雅,但这是一次令人发狂的沙滩球体验。
服务器设置到底如何?您是以其他人身份登录还是以您自己身份登录/home/username
?
如果后者您可以轻松地将所有与 Vim 相关的东西放在您的主目录中,并像使用 MacVim 一样使用服务器的 Vim。你甚至可以在你的主目录中的某个地方构建 ctags 并使用它……</p>
如果您以自己的身份登录但没有主目录,您可以将您的 Vim 内容放在您有写入权限的地方,并将其路径添加到主 .vimrc 并使用 if/else 检查您的用户名。
我还没有测试过这个解决方案,但我使用类似的技术来加载不同的设置,无论我是在我的 Mac 上还是在我的 Ubuntu 机器上:
if has("gui_running")
"various gui settings
let os=substitute(system('uname'), "\n", "", "")
if os == "Darwin" || os == "Mac"
"Mac-specific settings
elseif os == "Linux"
"Linux-specific settings
endif
endif
也许用命令whoami
……</p>