在我的假设中,.vimrc我正在尝试使用ftplugin并且显然使用一些与此相关的命令,前提是它已成功加载。但是,我现在遇到了一些没有安装插件的旧机器。我可以以某种方式加载这个插件有条件并将filetype on类似的指令添加到同一个条件块中吗?
我已经看到有配色方案和 Vim 版本的条件,但我还没有看到可以检查插件的示例(或无法识别它)。
注意:温柔点,我是 VimScript 初学者。
qqx*_*qqx 20
您可以将该块包装在一个条件中,该条件使用该exists()函数来检查由插件定义的变量、命令或函数是否为 vim 所知。
这是我在 ~/.vim 下的文件中的一些内容:
" after/plugin/speeddating.vim
if exists(':SpeedDatingFormat')
SpeedDatingFormat %-d %B %Y
endif
" ftplugin/ruby.vim
if exists('g:loaded_surround') && !exists('b:surround_'.char2nr(':'))
let b:surround_{char2nr(':')} = ":\r"
endif
Run Code Online (Sandbox Code Playgroud)
请注意,上述位位于在普通插件之后评估的文件中,这里是一个 ftplugin,以及目录中的一个文件after/plugin。
另一种选择是使用 try/catch 块,尽管这至少需要 vim 7.0:
if v:version >= 700
try
runtime bundle/pathogen/autoload/pathogen.vim
call pathogen#infect()
catch
endtry
endif
Run Code Online (Sandbox Code Playgroud)
一旦try该块部分中的某些内容失败,它将跳到该
catch部分。由于该catch部分是空的,它将在endtry语句之后继续执行初始化文件的其余部分。
由于这是手动加载代码而不是依赖已加载的插件,因此可以在 .vimrc 文件本身中完成。
小智 8
我的首选方法是检查插件文件是否存在。我觉得这更简单。
if !empty(glob("path/to/plugin.vim"))
echo "File exists."
endif
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11070 次 |
| 最近记录: |