临时 .vimrc

Rob*_*and 8 vim configuration vimrc

有没有办法.vimrc只为单个 ssh 会话读取文件?也就是说,当我登录时,我会执行一些操作,以便 vim 使用 say/tmp/myvimrc直到我注销?

我不想永久覆盖当前的 .vimrc,我只需要在登录期间每隔一段时间使用一组不同的设置。

Ste*_*n D 9

假设您在/tmp/myvimrc. 如果我的阅读man vim是正确的,您可以使用以下设置启动 vim:

$ vim -u /tmp/myvimrc
Run Code Online (Sandbox Code Playgroud)

因此,为了使其成为会话其余部分的选项,我将创建一个函数,将其设置为vim. 因此,bash我会在我的.bashrc文件中放入这样的内容:

function vimswitch {
    alias vim='vim -u /tmp/myvimrc'
}
Run Code Online (Sandbox Code Playgroud)

然后,当我想要我的新 vim 设置时,我会运行:

$ vimswitch
Run Code Online (Sandbox Code Playgroud)

请注意,我不会将 myvimrc 存储在其中,/tmp因为这可以在重新启动时轻松清除。如果您使用的是其他外壳,bash则应该仍然可以,但语法可能略有不同。


Chr*_*sen 9

您可以使用VIMINIT 环境变量来覆盖通常的使用,.vimrc同时保留初始化过程的其他部分。VIMINIT 应设置为一个或多个ex样式命令(“冒号”命令;使用管道 ( |) 分隔多个命令),而不仅仅是不同初始化文件的路径。

VIMINIT='so /tmp/myvimrc'; export VIMINIT

vim whatever # uses /tmp/myvimrc, not ~/.vimrc
Run Code Online (Sandbox Code Playgroud)

与 using 的主要区别-u在于 VIMINIT 仍将允许使用初始化过程的其他部分(例如 system vimrcevim.vim(如果适用)等)。

  • 要在通过 ssh 登录时自动设置“VIMINIT”变量,您可以使用文件“~/.ssh/environment”。该文件只能用于设置环境变量,因此您应该添加的唯一条目是:`VIMINIT='so /tmp/myvimrc'`。仅当在 sshd 配置选项中将 `PermitUserEnvironment` 设置为 `yes` 时,才会处理此文件,因此您应该自行测试它是否适合您,或者询问您的管理员它是否已打开。 (2认同)