未读取 ~/. vimrc

我有一个 ~/. vimrc 文件,vim 似乎没有读取它。 在/etc/vimrc 上有一个文件,看起来它正在使用这个文件。

我的理解是主目录中的那个应该覆盖这个,不是吗?

更新

cat vim_strace | grep .vimrc
stat64("/etc/vimrc", {st_mode=S_IFREG|0644, st_size=1438, ...}) = 0
open("/etc/vimrc", O_RDONLY|O_LARGEFILE) = 3
stat64("/etc/vimrc", {st_mode=S_IFREG|0644, st_size=1438, ...}) = 0
stat64("/root/.vimrc", {st_mode=S_IFREG|0644, st_size=35, ...}) = 0
open("/root/.vimrc", O_RDONLY|O_LARGEFILE) = 3
stat64("/root/.vimrc", {st_mode=S_IFREG|0644, st_size=35, ...}) = 0
77019 次浏览

如果你在 linux 上并且想知道 vim 是否正在访问你的 ~/。Vimrc 在启动时你可以用 strace 启动它:

strace -o vim_strace vim

那就退出 Vim。 打开 vim _ strace 文件并在文件中搜索“ vimrc”

stat64("/home/youruser/.vimrc", {st_mode=S_IFREG|0644, st_size=0, ...}) = 0

也就是说至少 Vim 能看到文件。

再加上 Hellvinz 的指示。

在创建了 vim _ strace 文件之后。

Cat vim _ strace | grep. vimrc

让生活变得简单:)

在 OSX 10.8.0上,vimrc 文件的位置是:/usr/share/vim/vimrc

我只是将更改添加到文件的底部。

当然,这会对所有用户产生更改的效果。对于我的生活,我似乎不能弄清楚如何让它阅读。Vimrc.在10.6的时候,这对我来说从来都不是问题。X

无论如何,这是一个快速修复,即使它是有点脏。

干杯

一旦加载了 Vim,:scriptnames就会准确地告诉您 Vim 读取的内容。

对我来说,一开始是这样的:

  1: /Applications/MacVim.app/Contents/Resources/vim/vimrc
2: ~/.vimrc
3: /Applications/MacVim.app/Contents/Resources/vim/runtime/syntax/syntax.vim
4: /Applications/MacVim.app/Contents/Resources/vim/runtime/syntax/synload.vim
5: /Applications/MacVim.app/Contents/Resources/vim/runtime/syntax/syncolor.vim

如果你想检查一个特定的设置在哪里被设置,使用“详细设置”。例如,:verbose set background告诉我:

  background=light
Last set from ~/.vimrc

所以我知道我的设置在 ~/。正在读取 vimrc,后面的文件都没有对其进行干扰。

以防其他人碰到这个问题,像我一样意识到。由于 sudo 的原因,没有读取 vimrc,请尝试使用 sudo -E。它为命令保留您的环境,并且 $HOME将指向您自己的主目录。请注意,在 /home南瓜一起安装的环境中,这可能无法工作。

在 Ubuntu 中使用文件 /etc/vim/vimrc.local

我遇到了这个问题,只是在文件 ~/.bash_profile中添加了以下内容:

alias vim="vim -S ~/.vimrc"

如果有人在使用 < strong > nevim 时碰到这个问题,你应该知道(在你开始拔头发之前) .vimrc文件是从 ~/.config/nvim/init.vim加载的。

mkdir -p ~/.config/nvim; ln -s ~/.vimrc ~/.config/nvim/init.vim

检查 $VIMINIT是否已经设置。它可能会阻止读取你的 ~/.vimrc。参见 :help VIMINIT:

 c. Four places are searched for initializations.  The first that exists
is used, the others are ignored.  [...]
-  The environment variable VIMINIT [...]

对于我来说,取消 VIMINIT就可以了,我的 ~/.vimrc现在被读取了。

在按照上面的建议检查了 scriptnamesverbose之后,我注意到我的设置确实被加载了,但是被另一个插件覆盖了,因此给人的印象是它没有读取/加载 .vimrc

如果这种情况发生在你身上,你想覆盖一个插件的特定设置,而不是完全消除来自该插件的所有其他好东西,你可以创建一个配置文件来加载 之后,通过在 ~/.vim/after/<path>/<plugin_name>中创建一个文件来加载该插件。有关参考,请参阅 另一个问题

显然,除非有 ~/.vimrc,否则 /etc/vim/vimrc现在被 defaults.vim 覆盖。 Https://github.com/vim/vim/issues/2042

偶然发现这个帖子,没有一个建议对我有用。这里没有提到的一些有用的东西:

  1. Vim —— version 应该会提供一些有用的信息,包括启动文件
  2. 如果你的活力不是真正的活力,那么也许它正在寻找 ~/。而不是。Vimrc (Mine 查找一些系统 vircs,然后查找一些用户 vircs,然后查找 $HOME/。Exrc)
  3. 如果您的文件(无论是哪一个)有 DOS 行结束,它可能会导致错误

... 所以即使我有一个真正的 Vim,它在寻找“ virc”

对我来说,错误在于我将配置设置为 ~/.vim/.vimrc。 在阅读了一些文档之后,我发现正确的路径是 ~/.vim/vimrc

更改文件起到了作用。

DR 检查.vimrc 中是否有任何内联注释

在这个问题的所有有用的答案之后,我仍然卡住了。我的 ~/vimrc

set mouse-=a
set tabstop=4     " Indents will have a width of 4
set shiftwidth=4
set softtabstop=4 " Sets the number of columns for a TAB
set expandtab     " Expand TABs to spaces
syntax on
set paste
" set compatible
set t_ti= t_te= "stop ^z clearing the screen
" remember line
if has("autocmd")
au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
endif
" unless gitcommit
autocmd FileType gitcommit call setpos('.', [0, 1, 1, 0])

通过 vim 和 strace 定位,显示它被读取。原来我系统上的 vim.basic 似乎忽略了 整条线 如果,它包含一个注释。(因此内联注释禁用同一行上的设置。)

我将“ ExpandTABs to space”注释移动到前一行,下次运行 vim -c :set时,expandtab立即显示出来

我在 Kubuntu 20.04上的 vim 8.1.3741也有同样的问题

看起来问题在于 ~ $/。Vimrc 文件以一个长长的注释开始,以“”开头,超过2行(autobreak) vim _ strace 显示输入133,并将注释写出,但不显示其下的命令。删除评论起作用了。谢谢你的信息。