我正在多台设备间共享我的vim设置,但这些设备的配置并不完全相同。
现在,如果我最喜欢的字体只在某一个设备上可用,而其他设备则需要使用备选字体,这可能会导致问题。
所以:有没有一种方法可以尝试多次设置set guifont=...
并检查是否成功?或者有没有一种提供字体列表的方式来尝试?
你可以给Vim提供一个字体列表:
set guifont=Monaco:h24,Inconsolata-gz:10
Vim会先尝试第一个选项,然后是第二个……
:h guifont
并没有说明可以选择的数量上限。
虽然在某些情况下检测/降级可能有效,但是当您还想要不同的字体大小(由于不同的显示分辨率),窗口大小,本地命令等时,情况会变得复杂。
与打开$HOSTNAME
或类似方案相比,更可扩展的系统是检查是否存在“本地”.[g]vimrc
文件并进行源代码操作:
" Put this in ~/.gvimrc:
" Source system-specific .gvimrc first.
if filereadable(expand('~/local/.gvimrc'))
source ~/local/.gvimrc
endif
在大多数情况下,遵循被接受的答案可能是正确的方法,但这只是一个解决办法。仅适用于类 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