当我使用 SSH 时,如何携带 .vimrc?

当我使用 SSH 时,如何携带 .vimrc?

我的工作往往涉及使用 SSH 连接到各种机器,然后使用 vim 编辑这些机器上的文件。问题是我必须不断地复制我的 .vimrc 文件。打开 vim 却没有任何设置,这很烦人。是否可以将我的 vim 设置从一台机器带到另一台机器,而不必手动将其复制到每个地方?

答案1

我理解你的痛苦。我把所有 ~/.*rc 文件都放在版本控制 (Subversion) 下,自从 1998 年使用 CVS 以来,它一直运行良好。一种方法是,当你站在主目录中时,像这样签出所有 rc 文件:

svn co svn+ssh://user@host/path/to/repo/trunk/home/user .
A    .signature
A    .vimrc
A    .bashrc
A    .screenrc
A    .psqlrc
[...]
Checked out revision 7645.

这样,当您运行 svn update 时,配置文件也将在各个计算机之间同步和更新。

答案2

您不需要将 .vimrc 带到每个需要处理的服务器上,为什么不从本地 vim 编辑远程文件呢:

在 vim/gvim 中,运行:

:e scp://[email protected]//path/to/document

或者像这样启动 vim:

vim scp://[email protected]//path/to/document

这将直接打开文件(它实际上是在本地复制文件),当您保存时,它会将编辑后的文件发送回服务器。

它要求输入 ssh 密码,但可以通过 ssh 密钥简化此过程。

正如其他人提到的,这种方法的唯一缺点是您无法像直接在机器上工作那样获得路径/文件竞争。

欲了解更多信息,查看以下教程

答案3

您可以编写一个 bash 脚本,以便每次登录时自动复制它,如下所示:

#!/usr/bin/env bash

scp ~/.vimrc $1:
ssh $1

例如,您可以将其命名为 ssh_vim。这不是理想的解决方案,但可以解决您的问题。

您可以改进它,首先检查是否已经存在。如果您不总是在同一台机器上运行 ssh,您可以更改脚本以从另一台机器上的 scp 获取文件。

编辑1

与此相关,您还可以使用 sshfs 挂载远程计算机的文件系统。这样,您就可以从环境和工具(不仅仅是 .vimrc)中受益,并且可以使用 shell 补全(使用 scp:// 则没有此功能)。

编辑2

我刚刚发现您可以使用 scp:// 获取 .vimrc 文件,如下所示:

:source scp://you@your_computer//yourpath/.vimrc

这在 vim 命令行下有效,但目前我不知道如何自动化。它似乎无法与 '-u' 开关、.vimrc 或 $VIMINIT 配合使用。

编辑3

我找到了!你可以这样做,使用从参考主机中获取的 .vimrc 来启动 vim:

vim -c ':source scp://you@your_computer//yourpath/.vimrc'

选项‘-c’在启动 vim 后立即执行命令。

您可以在所选的 shell 中创建别名以避免输入。在 bash 中,它将如下所示:

alias vim="vim -c ':source scp://you@your_computer//yourpath/.vimrc'"

答案4

一些解决方案:

1)为您的主文件夹创建一个 NFS 共享并将其映射到多个位置。

2) 创建一个小脚本,将您的 .vimrc 推送到您要使用身份/密钥文件连接的服务器。它可能看起来像这样(伪代码):

connectString = arg0  #username@ipaddress

scp -i ~/.ssh/indentity connectString:~/ ~/.vimrc
ssh -i ~/.ssh/indentity connectString

相关内容