GVim:查看guifont是否可用

8

我正在多台设备间共享我的vim设置,但这些设备的配置并不完全相同。

现在,如果我最喜欢的字体只在某一个设备上可用,而其他设备则需要使用备选字体,这可能会导致问题。

所以:有没有一种方法可以尝试多次设置set guifont=...并检查是否成功?或者有没有一种提供字体列表的方式来尝试?

3个回答

21
你可以给Vim提供一个字体列表:

你可以给Vim提供一个字体列表:

set guifont=Monaco:h24,Inconsolata-gz:10

Vim会先尝试第一个选项,然后是第二个……

:h guifont并没有说明可以选择的数量上限。


有趣的是,我用 Vim 已经好多年了,但从来没有想过去看一下文档。 - Dave Vogt
给后代的一个小提示。这是其中一种情况,你不能在逗号后面添加空格。否则,你将会在第一个字体上出现错误,而该字体并不存在于当前系统中。 - ashrasmun

3

虽然在某些情况下检测/降级可能有效,但是当您还想要不同的字体大小(由于不同的显示分辨率),窗口大小,本地命令等时,情况会变得复杂。

与打开$HOSTNAME或类似方案相比,更可扩展的系统是检查是否存在“本地”.[g]vimrc文件并进行源代码操作:

" Put this in ~/.gvimrc:
" Source system-specific .gvimrc first.
if filereadable(expand('~/local/.gvimrc'))
    source ~/local/.gvimrc
endif

这样一来,所有特殊设置都会本地化,不会使您的共享配置变得复杂。

0

在大多数情况下,遵循被接受的答案可能是正确的方法,但这只是一个解决办法。仅适用于类 Unix 的 gtk2 系统。首先,创建一个使用 shell 命令检查字体的函数:

function! Font_exists(font)
  exec system("fc-list -q '" . a:font ."'")
  return v:shell_error == 0
endfunction

然后使用它与所需的任何逻辑。例如:

if Font_exists('Iosevka Term')
  set guifont=Iosevka\ Term\ Light\ 9
elseif Font_exists('Inconsolata')
  set guifont=Inconsolata\ 9
elseif Font_exists('Terminus (TTF)')
  set guifont=Terminus\ (TTF)\ 9
endif

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接