Wednesday, March 18, 2026

Re: $VIMRC over .vimrc ?


Le 18 mars 2026 à 14:33, Christopher <crestchristopher@gmail.com> a écrit :



On Wednesday, March 18, 2026 at 11:48:15 AM UTC-4 D. Ben Knoble wrote:
On Tuesday, March 17, 2026 at 10:38:51 AM UTC-4 Christopher wrote:
When initializing Vim it searches first for $MYVIMRC, although that file doesn't exist in my case so it immediately goes to .vimrc. I'm reading the documentation on how to create this $VIMRC file as so that it's read first, rather then the .vimrc file ?

I'm afraid your question isn't clear to me, but let's look at `:help myvimrc`:

     c. Five places are searched for initializations.  The first that exists
is used, the others are ignored.  The `$MYVIMRC` environment variable is
set to the file that was first found, unless `$MYVIMRC` was already set
when using VIMINIT.  The `$MYVIMDIR` environment variable is
set to the personal 'rtp' directory, however it is not verified
that the directory actually exists.
I   The environment variable VIMINIT (see also |compatible-default|) (*)
    The value of $VIMINIT is used as an Ex command line.
II  The user vimrc file(s):
    "$HOME/.vimrc"   (for Unix) (*)
    "$HOME/.vim/vimrc"   (for Unix) (*)
    "$XDG_CONFIG_HOME/vim/vimrc"  (for Unix) (*)
    "s:.vimrc"   (for Amiga) (*)
    "home:.vimrc"   (for Amiga) (*)
    "home:vimfiles:vimrc"   (for Amiga) (*)
    "$VIM/.vimrc"   (for Amiga) (*)
    "$HOME/_vimrc"   (for Win32) (*)
    "$HOME/vimfiles/vimrc"   (for Win32) (*)
    "$VIM/_vimrc"   (for Win32) (*)
    "$HOME/config/settings/vim/vimrc" (for Haiku) (*)

Note: For Unix and Amiga, when ".vimrc" does not exist,
"_vimrc" is also tried, in case an MS-DOS compatible file
system is used.  For MS-Windows ".vimrc" is checked after
"_vimrc", in case long file names are used.
Note: For Win32, "$HOME" is checked first.  If no "_vimrc" or
".vimrc" is found there, "$VIM" is tried.  See |$VIM| for when
$VIM is not set.
III The environment variable EXINIT.
    The value of $EXINIT is used as an Ex command line.
IV  The user exrc file(s).  Same as for the user vimrc file, but with
    "vimrc" replaced by "exrc".  But only one of ".exrc" and "_exrc" is
    used, depending on the system.  And without the (*)!
V   The default vimrc file, $VIMRUNTIME/defaults.vim.  This sets up
    options values and has "syntax on" and "filetype on" commands,
    which is what most new users will want.  See |defaults.vim|.

So, unless you use VIMINIT to set MYVIMRC, MYVIMRC is intended to be set _by Vim_ to the file it finds.

Most folks I know use either ~/.vimrc or ~/.vim/vimrc (with equivalent ~/_vimrc or ~/vimfiles/vimrc on Windows). 

I read the documentation, therefore like with many I also use the system wide .vimrc file when starting vim. I want to know how to set  the $MYVIMRC as the documentation ? 

Vim should set it automatically; ":let $MYVIMRC" should show the value, for example. 

I don't recommend using the system-wide vimrc for anything beyond extremely niche use cases (maybe special hardware or software settings?). The per-user vimrc is more predictable to reason about. In a single-user environment this may matter less, but still.

No comments: