。vimrc / plugin / whatelse中的.vimrc绝对或相对路径

问题描述 投票:3回答:2

我实际上有以下情况,这实际上是有效的:

想象一下,您必须以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/中?

linux vim path relative-path absolute-path
2个回答
7
投票

:source的相对等价为:runtime

source ~/.vim/plugin/someplugin.vim

变得

runtime plugin/someplugin.vim

有了这个,只要您还修改'runtimepath'选项中的路径,它就应该起作用。

或者,您也可以在Vim中更改$HOME的值;这也会影响~的展开:

:let $HOME = '/home/yourlogin'

0
投票

您可能在此过程中学到了很多东西,所以我不会浪费时间,但是…解决您实际问题的方法只是使用sudoedit。参见$ man sudo

此外,如果您需要升级的权限来进行扩展的编辑会话,则可能应该花一点时间来修改设置/工作流程。

© www.soinside.com 2019 - 2024. All rights reserved.