有没有办法.vimrc
只读取单个 ssh 会话的文件?也就是说,当我登录时,我执行一些操作,以便 vim 使用 say/tmp/myvimrc
直到我注销?
我不想永久覆盖当前的 .vimrc,我只需要在登录期间每隔一段时间使用一组不同的设置。
答案1
您可以使用VIMINIT 环境变量覆盖通常的使用,.vimrc
同时保留初始化过程的其他部分。 VIMINIT 应设置为一个或多个前任-风格命令(“冒号”命令;使用管道 ( |
) 分隔多个命令),而不仅仅是不同初始化文件的路径。
VIMINIT='so /tmp/myvimrc'; export VIMINIT
vim whatever # uses /tmp/myvimrc, not ~/.vimrc
与使用的主要区别-u
是 VIMINIT 仍然允许其他部分初始化过程要使用的(例如 system vimrc
,evim.vim
(如果适用)等)。
答案2
假设您在/tmp/myvimrc
.如果我的理解man vim
是正确的,你可以使用以下命令使用这组设置启动 vim:
$ vim -u /tmp/myvimrc
因此,为了使其成为会话其余部分的选项,我将创建一个函数,将其设置为 的别名vim
。因此,我会在我的文件bash
中放入这样的内容:.bashrc
function vimswitch {
alias vim='vim -u /tmp/myvimrc'
}
然后,当我想要新的 vim 设置时,我只需运行:
$ vimswitch
请注意,我不会将 myvimrc 存储在其中,/tmp
因为它可以在重新启动时轻松清除。如果您使用除此之外的 shell,bash
应该仍然可以,但语法可能略有不同。
答案3
当您通过 ssh 登录时,ssh 设置变量$SSH_CONNECTION
。您.bashrc
可以检查此变量,如果它已设置,则设置您想要的别名:
if [ -n "$SSH_CONNECTION" ]
then
alias vim='vim -u /tmp/myvimrc'
fi