neovim的插件管理器vim-plug导致代码颜色不显示问题解决

发布时间 2023-10-05 23:12:51作者: 仰望星空_22

neovim的帮助文件路径

F:\Programs\Neovim\share\nvim\runtime\doc

runtimepath的帮助文档路径

F:\Programs\Neovim\share\nvim\runtime\doc\options.txt


$VIM

环境变量$VIM被用来确定Vim中不同的用户文件的位置,比如用户启动脚本“.vimrc”。这个是系统设置,详见 startup。

允许每个使用者需要时修改$VIM环境变量,Vim将试图从以下位置取得$VIM的值:

  1. 定义$VIM环境变量值。可以用Vim查看$VIM支持文件的指定目录。

    例如:setenv VIM /home/paul/vim

  2. 当作“helpfile”(帮助文件路径)使用,除非“helpfile”路径也包含在环境变量中(默认是$VIMRUNTIME/doc/help.txt:因果难定的问题)。文件名(“help.txt”或其它)被调用,请按“doc”,“runtime”和“vim{version}”顺序调用后续目录名。

  3. 对于MSDOS,Win32和OS/2 Vim试图使用可执行文件的目录名,如果它结尾是“/src”,可以被调用。这个可应用在:把某目录中ZIP文件解包,或者,调整查找vim可执行文件的搜索路径。后续目录名的调动,依据:“runtime”和“vim{version}”(例如,“vim54”)。


    例如: 在windows7在$VIM默认值是vim安装的根目录,在要引用vim安装目录时,就可以不输入全部路径,由$VIM代替就可以了。


    举例: 安装目录是E:/gvim/vim,如果要打开vim目录下“_vimrc”, 使用命令:“gvim E:/gvim/vim/_vimrc”,而使用$VIM之后是“gvim $VIM/_vimrc”。这样就缩短了代码长度对不对?

  4. 对于uninx被当作编译期定义的安装目录来使用(详见“:version”输出)。设置$VIM环境变量,更改最近一次设置,使用“:let”命令:

:let $VIM = "/home/paul/vim/"    

$VIMRUNTIME

环境变量$VIMRUNTIME用来找出各种支持文件,像在线文档和文件使用语法高亮一样。例如,主帮助文件通常是“$VIMRUNTIME/doc/help.txt”。

你没有按惯例设置自己的$VIMRUNTIME,但让Vim自行估计。按下顺序发现$VIMRUNTIME值:

  1. 如果环境变量$VIMRUNTIME已经设置,则直接使用它,当运行文件在特定位置时,你可以使用。

  2. 如果$VIM/vim{version}存在,则使用。{version}是Vim的版本号,不包括任何'-' 或'.'。例如$VIM/vim54。这是$VIMRUNTIME标准值。

  3. 如果$VIM/runtime存在,则使用。

  4. 使用$VIM值,这是向后兼容老版本。

  5. 当‘helpfile’选项被设置,不包含$,它的值是有可用的,从最后消除"doc/help.txt"。

对于Unix,当有个$VIMRUNTIME内编译默认值(检查":version"输出结果),步长在2,3和4之间跳跃,内编译默认值在步长5后被使用,这个意思是内编译默认值会支配$VIM值,如果$VIM设置为“/etc”并且执行期文件在"/usr/share/vim/vim54",才能使用。

曾经使用过Vim,更改$VIMRUNTIME环境变量。

更改$VIMRUNTIME最近一次值,使用命令":let",格式如下:

:let $VIMRUNTIME = "/home/piet/vim/vim54"

$HOME

使用"~"就如同使用"$HOME",但它只能在选项开始之前和空格或逗号后面使用。

在Unix系统中"~user"能被使用,它代替了用户home目录,例如:

:set path=~mool/include,/usr/include

在Unix系统也可使用"${HOME}"形式,字符用{}括起来,注意你如果想使用命令"gf",你需要在'isfname'上加'{' 和'}'。

注意:扩充环境变量和"~/"仅用":set"命令,而不是":let"命令。

注意:扩展选项最大长度受限制,系统决定长度,是大值在256 到1024个字符。

vim安装插件

在网页上写CSDN文章有诸多不便,感觉vim很好用,可是vim中没有预览功能。按照网上找到的教程安装插件,将以下代码复制的到_vimrc文件中。

set rtp+=$VIM/vimfiles/bundle/Vundle.vim/
call vundle#begin('./vimfiles/bundle/')

" let Vundle manage Vundle, required
Plugin 'VundleVim/Vundle.vim'

"Plug 'iamcco/markdown-preview.vim'
"Plugin 'godlygeek/tabular'
"Plugin 'preservim/vim-markdown'
"Plugin 'iamcco/markdown-preview.nvim' 
"Plugin  'iamcco/mathjax-support-for-mkdp'
"Plugin 'iamcco/markdown-preview.vim:'
Plugin  'iamcco/mathjax-support-for-mkdp'
Plugin   'iamcco/markdown-preview.vim'

" All of your Plugins must be added before the following line
call vundle#end()            " required

打开vim,命令模式下运行:PluginInstall。插件安装成功了以为可以用,但输入:MarkownPreview却报错:

安装neovim

安装nvim,下载地址:http://neovim.io/。

搞到凌晨4点也没搞定。想着安装neovim把,下载下来后不管运行nvim.exe还是nvim-qt.exe都报 can't open file F:\Program Files\Vim\syntax\syntax.vim。无语了我的neovim打开怎么跑到Vim的安装目录中去了。

网上搜了一下在init.vim添加:

"let $VIMRUNTIME="F:\\Program Files\\Vim\\linux_vim\\vim81"
let $VIMRUNTIME="F:\\Program Files\\Vim\\vim82"
set runtimepath="F:\\Program Files\\Vim\\vim82"

虽然能找到syntax.vim了,但又报:filetypedetect bufread。搞不定了。

继续搜索,发现有两个环境变量XDG_CONFIG_HOME、XDG_DATA_HOME可能需要配置,windows中neovim的配置文件默认放在目录~\AppData\Local\nvim\下。修改这两个环境变量可以改变配置文件init.vim的存放位置。打开nvim在普通模式中使用:echo stdpath('config')查看修改后的配置文件位置。

在修改的过程中发现还有一个环境变量VIM=F:\Program Files\Vim\是当初安装Vim时留下的,猜测可能是VIM引导neovim到Vim的安装目录下找syntax.vim文件了。果断删掉$VIM,果然重新运行nvim.exe一切正常。

自动生成init.vim文件

" 先启动 neovim
$ nvim
" 然后再 neovim 中输入如下两条命令
:call mkdir(stdpath('config'), 'p')
:exe 'edit '.stdpath('config').'/init.vim'

下载plug.vim

vim-plug是一个极简的Vim插件管理器。

配置vim-plug,下载plug.vim放入neovim安装目录的config\nvim-data\site\autoload中

Administrator  Desktop  ♥ 17:20  iwr -useb https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim |`
>     ni "$(@($env:XDG_DATA_HOME, $env:LOCALAPPDATA)[$null -eq $env:XDG_DATA_HOME])/nvim-data/site/autoload/plug.vim" -Force

    Directory: F:\Programs\Neovim\config\nvim-data\site\autoload

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---           2023/4/24    17:21          83127 plug.vim

安装neovim的插件

复制以下代码放入init.vim文件中

let $VIMRUNTIME='F:\Programs\Neovim\share\nvim\runtime\'
let &packpath = &runtimepath

set nocompatible

" 基础配置
syntax on

" 插件
call plug#begin('F:\Programs\Neovim\config\nvim-data\site\plugged')
" themes
Plug 'morhetz/gruvbox'

" Markdown
Plug 'iamcco/markdown-preview.nvim', { 'do': { -> mkdp#util#install() }, 'for': ['markdown', 'vim-plug']}
Plug 'dhruvasagar/vim-table-mode', { 'on': 'TableModeToggle', 'for': ['text', 'markdown', 'vim-plug'] }
Plug 'mzlogin/vim-markdown-toc', { 'for': ['gitignore', 'markdown', 'vim-plug'] }

call plug#end()

关掉重新运行,在nvim中进入命令模式(按冒号" : "),输入PlugInstall完成安装。

运行

打开一个.md文件,命令模式下输入:MarkdownPreview就能自动打开默认浏览器实时预览。或者在init.vim文件中设置快捷键如下:

nmap <silent> <F8> <Plug>MarkdownPreview        " for normal mode
imap <silent> <F8> <Plug>MarkdownPreview        " for insert mode

" 使用谷歌浏览器
let g:mkdp_brower = 'chromium'
let g:mkdp_auto_start = 1

关于markdown-preview.nvim安装后无法运行的问题的解决方案

打开F:\Programs\Neovim\config\nvim-data\site\plugged\markdown-preview.nvim\app文件夹,里面有一个install.cmd脚本,Linux中是install.sh。运行它,等该脚本运行完毕后重新打开nvim普通模式下执行:MarkdownPreview命令一般就能生效了。

回过头重新配置Vim

安装vim-plug

在Vim的安装目录F:\Program Files\Vim\vimfiles\中创建文件夹autoload,打开命令行Powershell(需要按照curl)中执行:

curl -fLo plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

头一两次可能会报错连不上服务器,需要多执行几遍直到成功。

安装vim的的Markdown预览插件

将与neovim的init.vim文件中同样的代码,修改一下路径复制到_vimrc文件中。

" Plugins will be downloaded under the specified directory.
call plug#begin('F:\Program Files\Vim\vimfiles\plugged')

" Markdown
Plug 'iamcco/markdown-preview.nvim', { 'do': { -> mkdp#util#install() }, 'for': ['markdown', 'vim-plug']}
Plug 'dhruvasagar/vim-table-mode', { 'on': 'TableModeToggle', 'for': ['text', 'markdown', 'vim-plug'] }
Plug 'mzlogin/vim-markdown-toc', { 'for': ['gitignore', 'markdown', 'vim-plug'] }

call plug#end()

" markdown-preview
let g:mkdp_open_to_the_world=1
let g:mkdp_open_ip='localhost'

保存后重新打开,输入:PlugInstall安装插件,这一步也可能要重复执行几次。安装完成后输入:call mkdp#util#install()

当出现下图说明已经成功了:

与neovim配置一样,设置完预览快捷键就大功告成了。

卸载Vim插件

如果你有哪个vim插件不想要了,只要删掉你Vim配置文件中的 Plug 'xxx/xxx' 那一行就好了。下次Vim启动的时候,那个插件就不会被加载。这样做并不会删掉那个插件的文件。你可以通过 :PlugClean 来删除所有的已经不用了的插件的文件。

插件“懒加载”(Lazy Load)

vim-plug提供了很多额外的选项。如果你安装了很多插件,然后发现这些插件让你的Vim的启动速度变慢了的话,你可以选择让一些插件不在Vim启动的时候加载,或者说让一些插件只在编辑某个特定类型的文件的时候在被加载。下面我来举一些例子来让你们更方便的理解这个vim-plug的功能。

Plug 'scrooloose/nerdtree', { 'on':  'NERDTreeToggle' }

只有在执行 :NERDTreeToggle 的时候才加载这个插件

Plug 'fatih/vim-go' , { 'for': 'go' }

只有在打开.go文件的时候才加载这个插件

Plug 'yuezk/vim-js', { 'for': ['php', 'html', 'javascript'] }

只有在打开php,html和javascript文件的时候才加载这个插件。

自动化

你可以让vim-plug在安装/升级完一个插件之后做一些事情,比如运行一个脚本。

Plug 'Yggdroot/LeaderF', { 'do': './install.sh' }

不用担心,大多数插件都不需要这一步。如果需要的话,插件的README里面会很清楚的标明的。所以在安装插件的时候请先阅读你要安装的那个插件的说明文件(Readme) 作者:TheCW https://www.bilibili.com/read/cv8264341/ 出处:bilibili

二、vim启动时到底加载了哪些脚本xxx.vim

前面说了,Vim的结构非常整洁,.vimrc只是多个配置文件中的其中一个而已。其实,你可以让Vim告诉你究竟加载了哪些脚本。试试看:启动终端,直接打开vim,或者是编辑计算机上的任意一个文件,如vim test.py。加载后,运行如下命令:

2.1 查看vim加载时加载了那些插件(执行了哪些脚本)

:scriptnames 

解决vim-plug插件不显示代码颜色问题

原先我安装了vim-plug插件管理器,今天突然发现neovim打开的任何代码都没有颜色,以为是neovim版本问题,就想着把init.vim复制出来重新安装neovim,复制出来了以后打开python文件代码居然有颜色。那么问题肯定出在init.vim文件。把下面这段代码删掉又重新有颜色了,逐渐排查问题出在了call plug#begin()。于是有了个两难选择,有用插件代码就没有颜色,要代码有颜色就不能用插件。想从vim-plug下手解决从下午搞到现在晚上9点多都没解决,刚刚看到vim8原生内置(naive)插件安装(二)这篇文章介绍其实不用插件管理器。

" 插件
call plug#begin('F:\Programs\Neovim\config\nvim-data\site\plugged')
" themes
Plug 'morhetz/gruvbox'

" vim-airline 标签栏插件
Plug 'Vim-airline/vim-airline'

" Markdown
Plug 'iamcco/markdown-preview.nvim', { 'do': { -> mkdp#util#install() }, 'for': ['markdown', 'vim-plug']}

" 格式化表格
Plug 'dhruvasagar/vim-table-mode', { 'on': 'TableModeToggle', 'for': ['text', 'markdown', 'vim-plug'] }
Plug 'mzlogin/vim-markdown-toc', { 'for': ['gitignore', 'markdown', 'vim-plug'] }

" 代码高亮
Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'}

" 文字环绕,到https://github.com/tpope/vim-surround下载并安装
Plug 'tpope/vim-surround' 

" 从剪贴板插入图片 
Plug 'ferrine/md-img-paste.vim' 

" nerdtree
Plug 'preservim/nerdtree'

call plug#end()

我的处理

按照上面文章给出的信息,用neovim打开一个文件,执行

:echo $VIMRUMTIME

得到一个路径:F:\Programs\Neovim\share\nvim\runtime里面有两个文件夹\pack\dist,在dist文件夹里创建start文件夹,再从F:\Programs\Neovim\config\nvim-data\site\plugged将插件复制到start文件夹里。重新用neovim打开一个python文件,代码就有颜色了插件也可以用了。

Administrator  plugged  ♥ 22:49  dir

    Directory: F:\Programs\Neovim\config\nvim-data\site\plugged

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d----           2023/4/24    17:44                gruvbox
d----           2023/4/24    17:47                markdown-preview.nvim
d----            2023/5/9    15:55                md-img-paste.vim
d----           2023/10/5    20:11                nerdtree
d----           2023/10/5    16:37                nvim-treesitter
d----            2023/5/4    19:53                surround
d----           2023/10/5    18:19                vim-airline
d----           2023/4/24    17:40                vim-markdown-toc
d----            2023/5/4    20:20                vim-surround
d----           2023/4/24    17:44                vim-table-mode

说明:我没有复制surround插件,次插件用于文字环绕的,可是也能用。

highlight

引用:

https://gitcode.net/mirrors/junegunn/vim-plug
https://gitcode.net/mirrors/iamcco/markdown-preview.nvim
https://blog.csdn.net/m0_52421468/article/details/127867966
https://blog.csdn.net/m0_70129081/article/details/124558701
neovim 安装配置
https://www.jianshu.com/p/88dd20795263
https://blog.csdn.net/qq_40394751/article/details/128747972
https://www.bilibili.com/read/cv21699240/
https://blog.csdn.net/qq_44365861/article/details/123533285