我实际上有以下情况,这实际上是有效的:
想象一下,您必须以root用户身份在文件上工作,但是您想要自己的.vimrc而不调用“ -u”。因此,我启动了以下“插件”:
let g:realuser=system('w | grep $(ps w | grep ' . getpid() . ' | head -n1 | awk "{ print \$2 }") | awk "{ print \$1 }"')
if $USER == 'root'
let g:vimrc=system('printf /home/%s/.vimrc '. g:realuser)
if filereadable(g:vimrc)
exec ":source " . g:vimrc
finish
endif
endif
我称它为“ realuser.vim”,并在根目录的.vimrc(/root/.vimrc)中“获取”。
[如果您现在通过SSH登录到服务器,或者通过Gnome在ubuntu上登录,则进入“ su-”并以root用户身份登录。然后,您将转到工作目录并打开文件。该脚本检测到登录到计算机的真实用户是“ yourlogin”。然后,它检查/ home / yourlogin /中是否存在文件“ .vimrc”。因此,它并加载了它。
我的问题是,/ home / yourlogin / .vimrc中的以下行:
source ~/.vim/plugin/someplugin.vim
所以猜猜看。 /root/.vimrc加载/home/yourlogin/.vimrc,因此检入不存在的/root/.vim/plugin/someplugin.vim,因为它仅存在于/home/yourlogin/.vim
如何使用相对路径或类似的东西告诉vim源文件仅在/home/yourlogin/.vim/中?
与:source
的相对等价为:runtime
。
source ~/.vim/plugin/someplugin.vim
变得
runtime plugin/someplugin.vim
有了这个,只要您还修改'runtimepath'
选项中的路径,它就应该起作用。
或者,您也可以在Vim中更改$HOME
的值;这也会影响~
的展开:
:let $HOME = '/home/yourlogin'
您可能在此过程中学到了很多东西,所以我不会浪费时间,但是…解决您实际问题的方法只是使用sudoedit
。参见$ man sudo
。
此外,如果您需要升级的权限来进行扩展的编辑会话,则可能应该花一点时间来修改设置/工作流程。