vim-latexsuite
)?另一个受欢迎的编辑器将指示相关的“次要模式”处于活动状态。什么是vim等效项?#1 楼
如何确定是否已安装文件类型插件(例如vim-latexsuite)
您可以使用
:scriptnames
列出所有源文件。另一个选择是检查变量,指示是否已加载插件,因为它是
recommended practice to allow the user to disable the loading of a given plugin.
。通常,您可以在g:loaded_...
文件夹中找到<plugin_name>/plugin
变量。对于您提到的插件,您可以使用echo exists("loaded_libList")
。,当我打开相应的文件时被激活?
如果它是文件类型插件,设置了
'filetype'
选项后,应会自动激活该功能。您可以检查该选项对于当前缓冲区是否正确:什么是vim等效项?您可以自定义状态行以使用插件或直接通过选项来显示此类指示,如
:help 'statusline'
和vi-improved.org中所述。 >#2 楼
Vim插件没有任何激活指示,并且在适当的设置下这是没有必要的。您可以通过查询其副作用(通常是映射)来快速检查插件是否处于活动状态。因此,举例来说,我知道NERDCommenter映射以
<Leader>c
开头,因此对其激活的查询为:nmap <Leader>c
。如果列出了映射,则该插件处于活动状态。对于自定义命令和插件组中的:autocmd
可以实现相同的效果。大多数插件还定义了一个可以检查的包含保护变量g:loaded_pluginname
。文件类型插件也是如此(并且所有效果都应在缓冲区范围内进行)。确定活动插件的最重要因素是正确检测文件类型。您可以通过
:setlocal filetype?
进行查询,甚至可以通过'statusline'
/ %y
项将其放入%Y
。#3 楼
在那种情况下,我只会玩:scriptnames
。我们不能期望使用全局变量来检查ftplugin是否已加载-LaTeXSuite可能具有插件,我不记得了,可以肯定的是,它具有很多ftplugin脚本。许多ftplugins使用b:did_ftplugin
(至少是Vim随附的:scriptname
),但是这种方法肯定无法扩展:结果,并非所有ftplugins都使用该无意义的变量,因此我们无法检查通用变量名称来知道给定的ftplugin已加载-例如,仅对于C来说,我就有22个ftplugins,它们肯定没有使用相同的防重新插入防护。所以
:scriptname
。 las execute()
给人的眼睛带来了很多无序的结果。幸运的是,filter()
(最近的一项功能)和'runtimepath'
得以抢救。在这种情况下,我会使用:echo filter(split(execute(':scriptname'), "\n"), 'v:val =~? "tex"')
" or even "latex" instead of "tex"
查找与乳胶相关的vim脚本。另外,如果您使用的是插件管理器,则插件管理器可能会使用
:echo &rtp
选项。您可以使用:scriptname
显示其值。您甚至可以使用以下命令过滤其值::echo filter(split(&rtp), ','), 'v:val =~? "tex")
(这将告诉您插件管理器是否已激活您的插件LaTeX-suite。告诉您相关的ftplugins是否已正确加载。q4312079q会为您提供此信息。)
#4 楼
一种方法是在runtimepath
上执行正则表达式搜索: br /> if match(&runtimepath, 'MY-PLUGIN') != -1
" ...
endif
用法:
function! PlugLoaded(name)
return (
\ has_key(g:plugs, a:name) &&
\ isdirectory(g:plugs[a:name].dir) &&
\ stridx(&rtp, g:plugs[a:name].dir) >= 0)
endfunction
#5 楼
如果通过自动命令激活文件类型插件,则可以设置verbose = 9,以便Vim在执行自动命令时回显自动命令::set verbose=9
#6 楼
如果您使用vim-plug,它将设置一个名为plugs
的变量,其中列出了所有已加载的插件以及一些有关它们的信息。当我需要检查是否正在运行YCM或coc.nvim时,我自己为您解决了问题。您可以通过运行has_key(plugs, "name")
来查看是否已加载插件,例如:if has_key(plugs, 'YouCompleteMe')
call YCM()
endif
if has_key(plugs, "coc.nvim")
call CocStart()
endif
注意:这仅显示其当前是否列在您的
vimrc
中,例如,如果将其设置为延迟加载,则即使尚未加载nerdtree
, Plug 'scrooloose/nerdtree', {'on': 'NERDTreeToggle'}
...
if has_key(plugs, 'nerdtree')
echo "HAS NERDTREE"
endif
在启动时仍会打印出来。
评论
这不够。此外,它仅照顾与插件管理器一起安装的插件。在所有情况下,它都不会处理插件中附带的ftplugin脚本,这是OP的问题。
–卢克·赫米特(Luc Hermitte)
17年11月9日在13:11