[lfs-dev] Configuring vim and position of defaults.vim

Bruce Dubbs bruce.dubbs at gmail.com
Mon Mar 12 16:13:15 PDT 2018

On 03/12/2018 05:30 PM, Ken Moffat wrote:
> On Mon, Mar 12, 2018 at 12:47:17PM -0500, Bruce Dubbs wrote:
>> On 03/12/2018 12:19 PM, Ken Moffat wrote:
>>> My experience is that the override does not work when the set comes
>>> after the defaults have already been loaded in /etc/vimrc.
>> Seems odd.  If $VIMRUNTIME/defaults.vim is explicitly run, then the defaults
>> *should* be set, but the skip_defaults_vim should then inhibit the defaults
>> from being read again.   The settings after reading defaults.vim should
>> override the earlier settings.
> I don't claim to understand the details, but when I searched a few
> hours ago there were various posts about changed behaviour (not
> particularly recent).
>> My understanding of the initialization process is to run:
>> /etc/vimrc
>> if ~/.vimrc exists
>>    run  ~/.vimrc
>> else
>>    if skip_defaults_vim is not set
>>      run $VIMRUNTIME/defaults.vim
>>    endif
>> endif
> I think that with the /etc/vimrc currently in the book, defaults.vim
> is always run.

That is correct because we run it explicitly.

> I'll attach a specimen.xml file (one paragraph from the BLFS mutt
> page).  Using a copy, open it in vim, go to the second line and
> insert a linefeed (i.e. just press the enter key) before
> 'mailboxes'.
> With the /etc/vimrc from the book, I find that both the start of the
> second line, and the new third line, are inset.  Moving the cursor
> back, there is a tab at the start of each of these lines.

I agree that it irritating.  If you set 'expandtab' then they are spaces 
and not true tab characters, but is is still irritating.

> My reversal of the two lines in /etc/vimrc, or commenting both lines
> there, fix this - I think that reversing the lines does what you
> intended.  But maybe running scriptnames might provide more info
> (just found a reference to that in another search result).
> Using the /etc/vimrc where I commented out the lines as you
> requested, and with my own ~/.vimrc, if I run :scriptnames in a vim
> session I get:
>    1: /etc/vimrc
>    2: /usr/share/vim/vim80/syntax/syntax.vim
>    3: /usr/share/vim/vim80/syntax/synload.vim
>    4: /usr/share/vim/vim80/syntax/syncolor.vim
>    5: /usr/share/vim/vim80/filetype.vim
>    6: /usr/share/vim/vim80/colors/elflord.vim
>    7: ~/.vimrc
>    8: /usr/share/vim/vim80/syntax/nosyntax.vim
>    9: /usr/share/vim/vim80/plugin/getscriptPlugin.vim
>   10: /usr/share/vim/vim80/plugin/gzip.vim
>   11: /usr/share/vim/vim80/plugin/logiPat.vim
>   12: /usr/share/vim/vim80/plugin/manpager.vim
>   13: /usr/share/vim/vim80/plugin/matchparen.vim
>   14: /usr/share/vim/vim80/plugin/netrwPlugin.vim
>   15: /usr/share/vim/vim80/plugin/rrhelper.vim
>   16: /usr/share/vim/vim80/plugin/spellfile.vim
>   17: /usr/share/vim/vim80/plugin/tarPlugin.vim
>   18: /usr/share/vim/vim80/plugin/tohtml.vim
>   19: /usr/share/vim/vim80/plugin/vimballPlugin.vim
>   20: /usr/share/vim/vim80/plugin/zipPlugin.vim
>   21: /usr/share/vim/vim80/scripts.vim
>   22: /usr/share/vim/vim80/syntax/vim.vim
> The elflord.vim line is because at the end of my /etc/vimrc I have
> added
> :colorscheme elflord
> My point is that /etc/vimrc appears to be read before ~/.vimrc, not
> just when ~/.vimrc is absent.

Right.  At least my understanding is that /etc/vimrc is always read if 
it is present.

Looking at the options for vim:

-u <vimrc>           Use <vimrc> instead of any .vimrc

help says: "vim -u NORC" can be used to skip these initializations 
without reading a file.

I'll note that the vim reference manual sections 4 and 5 (Initialization 
and $VIM and $VIMRUNTIME) are quite long and complex.

   -- Bruce

More information about the lfs-dev mailing list