如何确定set命令是否无法在_vimrc中运行?

时间:2014-04-21 06:20:16

标签: vim

我在_vimrc文件中添加了一些set命令,如何检查set命令是否成功执行?我关心它的状态,因为根据先前set命令的状态可能会有一些不同的处理。

2 个答案:

答案 0 :(得分:1)

你可以在Vim中实际处理异常。

在您的情况下,这是一个例子:

for font in ['fonta:h10', 'fontb:h10', 'fontc:h10']
  if !get(s:, 'font_set')
    try
      execute 'set guifont='.font
      let s:font_set = 1
    catch
    endtry
  else
    break
  endif
endfor

有关详细信息,请参阅help :try

答案 1 :(得分:1)

您可以尝试提高verbose选项的值,直到找到一个值,该值允许您捕获每个选项引发的每个错误(以及set verbosefile=somefile因为如果你不这样做,你的生活将会很悲惨,但我怀疑你想要的是否能以一种易于管理的方式完成并且可能不值得麻烦。

以下是一些可以帮助你的习语:

尝试并发现错误

try
    set option=value
catch /^Vim\%((\a\+)\)\=:EXXX/
    set option=othervalue
endtry

请参阅:help :try:help :catch

请注意,将verbose提升到其最大值并不允许我捕获应该为无效字体抛出的E596错误,所以我的观点仍然有效:很难找到银弹解决方案。

此外,guifont可以将逗号分隔的字符串作为值,这样您就可以给它n字体,让Vim使用第一个有效字符。

仅在存在功能时执行某项操作

  if has('mouse_sgr')
      set ttymouse=sgr
  endif

请参阅:help has()

如果你给我们一个具体的例子,你可能会对你有所帮助。