不读〜/ .vimrc

Nin*_*Cat 51 vim

我有一个〜/ .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
Run Code Online (Sandbox Code Playgroud)

Jam*_*ley 121

一旦你加载了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
Run Code Online (Sandbox Code Playgroud)

如果要检查特定设置的设置位置,请使用"详细设置".例如,:verbose set background告诉我:

  background=light
        Last set from ~/.vimrc
Run Code Online (Sandbox Code Playgroud)

所以我知道我在〜/ .vimrc中的设置正在被读取,并且以后的所有文件都没有破坏它.

  • 这很有帮助,但没有解决问题.现在我知道〜/ .vimrc还没有读过,但为什么会这样呢? (4认同)
  • 这是有用的+1。不幸的是,由于某种原因,虽然syntax.vim 出现在我的`scriptnames` 上,它仍然是我vimrc 中唯一没有被读取或出现在`:verbose set` 中的命令,有什么想法吗? (2认同)

hel*_*inz 59

如果你在linux上并想知道vim是否在启动时访问你的〜/ .vimrc你可以用strace启动它:

strace -o vim_strace vim
Run Code Online (Sandbox Code Playgroud)

然后退出vim.打开vim_strace文件并在文件中搜索"vimrc".你应该找到一条这样的线

stat64("/home/youruser/.vimrc", {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
Run Code Online (Sandbox Code Playgroud)

这意味着至少vim看到了文件.

  • 这是一个很好的解决方法. (2认同)

小智 17

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

alias vim="vim -S ~/.vimrc"
Run Code Online (Sandbox Code Playgroud)

  • 真正的问题是为什么你有这个问题(和我一样) (3认同)
  • 由于这个答案吸引了**NeoVIM**用户:您的默认配置位于`〜/ .config/nvim/init.vim`请添加`source~/.vimrc`来呈现`.vimrc`设置. (3认同)
  • 如果您真的使用的是 Neovim,但将其别名为 vim,则可能会发生这种情况 (2认同)

E. *_*din 11

如果有人在使用neovim时遇到这个问题你应该知道(在你开始脱掉头发之前).vimrc文件是从中加载的~/.config/nvim/init.vim.

mkdir -p ~/.config/nvim; ln -s ~/.vimrc ~/.config/nvim/init.vim
Run Code Online (Sandbox Code Playgroud)

  • 注意,你可以简单地在`〜/ .config/nvim/init.vim`中添加`source~/.vimrc`来源配置,而不依赖于符号链接. (3认同)

小智 5

只是补充一下 Hellvinz 的指示。

创建 vim_strace 文件后。

cat vim_strace | grep .vimrc
Run Code Online (Sandbox Code Playgroud)

让生活变得轻松一点:)

  • `grep .vimrc vim_strace` 甚至更好。 (10认同)

Ben*_*vis 5

万一其他人遇到这个问题,并且像我一样意识到 . vimrc由于 sudo 未阅读,请尝试使用sudo -E. 它保留您的命令环境,$HOME并将指向您自己的主目录。请注意,这在/home安装了rootsquash 的环境中可能不起作用


Joh*_*136 5

偶然发现这篇文章,但所有建议都不适合我。这里没有提到的一些有用的东西:

  1. vim --version 应该为您提供一些有用的信息,包括启动文件。(我在几个地方列出了“virc”(不是 vimrc)
  2. 如果你的 vim 不是真正的 vim,那么它可能会寻找 ~/.exrc 而不是 .vimrc (我的 vim 会寻找一些系统 virc,然后是一些用户 virc,然后是 $HOME/.exrc)
  3. 如果您的文件(无论是哪一个)具有 DOS 行结尾,则可能会导致错误

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