:hi Vertsplit 在 init.vim 的 autocmd 上没有 运行

:hi Vertsplit doesn't run on autocmd from init.vim

我一直在设置我的 init.vim 文件以在 Windows 10 上使用 NeoVim,运行 遇到了一个我难以理解的问题。

在我的文件开头,我设置了几个 :hi(ghlight) autocmd,但似乎只有 VertSplit 在启动时被忽略了。更糟糕的是,我可以 运行 vim cmd 栏中的命令,它会正常工作。

这是一个片段:

set wildmenu
set wildmode=longest:full,full  " get bash-like tab completions
"set cc=120                   " set an 80 column border for good coding style
filetype plugin indent on   " allows auto-indenting depending on file type
set tabstop=4               " number of columns occupied by a tab character
set shiftwidth=4            " width for autoindents
set softtabstop=4           " see multiple spaces as tabstops so <BS> does the right thing
set number
set mouse=a
set undofile
set cursorline
set splitright

autocmd VimEnter :set laststatus 3<CR>
" THIS WORKS
autocmd VimEnter :hi CursorLine cterm=None guifg=#5c6773<CR>
" THIS DOESNT
autocmd VimEnter :hi VertSplit cterm=None guifg=#5c6773<CR>

关于这个的 help/advice 吗?我一直在谷歌搜索,但找不到有关 VertSplit 或类似内容的任何信息。如果需要,也可以 post 完整的 conf。

提前致谢!

这真的不是谷歌搜索的问题。重要的是研究你将要使用的东西的文档,然后然后,应用你学到的东西。

首先,自动命令应该由至少这些元素组成:

autocmd <event> <pattern> <command to execute when the pattern matches>

但是您没有为三个自动命令中的任何一个指定模式。这很容易修复:

autocmd VimEnter * :set laststatus 3<CR>
autocmd VimEnter * :hi CursorLine cterm=None guifg=#5c6773<CR>
autocmd VimEnter * :hi VertSplit cterm=None guifg=#5c6773<CR>

其次,<command> 部分始终是 Ex 命令,因此您可以删除无用的冒号:

autocmd VimEnter * set laststatus 3<CR>
autocmd VimEnter * hi CursorLine cterm=None guifg=#5c6773<CR>
autocmd VimEnter * hi VertSplit cterm=None guifg=#5c6773<CR>

和无用的——而且很可能会导致错误——<CR>,这实际上只在正常模式映射中有用:

autocmd VimEnter * set laststatus 3
autocmd VimEnter * hi CursorLine cterm=None guifg=#5c6773
autocmd VimEnter * hi VertSplit cterm=None guifg=#5c6773

现在您的自动命令实际上看起来像自动命令,您应该解决最后一个遗留问题:set laststatus 3,即:

  1. 打印laststatus
  2. 的当前值
  3. 3 引发“未知选项”错误。

号码选项设置如下:

set optionname=999

所以set laststatus 3应该是:

set laststatus=3

这给你留下了大部分正确的(并且有效,至少在我的 Vim 中)片段:

autocmd VimEnter * set laststatus=3
autocmd VimEnter * hi CursorLine cterm=None guifg=#5c6773
autocmd VimEnter * hi VertSplit cterm=None guifg=#5c6773