我将vim与vim-airline一起使用,patched fonts可以使用来获得更好的效果。
我也使用{{3}} shell(如果你想在这里阅读zsh
,因为它等同于分析),主题也使用修补字体。
我在线保存我的dotfiles,并在不同的系统中使用它们。但在其中一些我没有修补字体。
我真的很想拥有通用的dotfiles,例如,如果当前的字体未修补,则不使用需要修补字体的主题。同样在我的vimrc
中,由于这个原因,我禁用了vim-airline的修补字符。
有没有办法以编程方式知道当前使用的字体是否是经过修补的字体,以便可以编写适合所有情况的通用dotfiles?
答案 0 :(得分:3)
在Vim中,您需要直接询问终端仿真器当前使用的字体。确切的方法肯定会因终端和操作系统而异。如果可能的话。
如果您在所有系统上都拥有它,则可以使用lsof
查找给定程序当前使用的字体:
$ lsof | grep iTerm | grep '\.\(otf\|ttf\)'
在GVim / MacVim中,您可以检查当前字体名称是否与某些模式匹配:
if &guifont =~? 'powerline'
" do something
else
" do something else
endif
假设您的字体文件名包含该模式。
但是不可能保证实际的电话线字体"其文件名中包含powerline
,并且同样无法保证其文件名中powerline
的字体是实际的" powerline字体"。
检查字体中某处Powerline
字符串的存在会更安全:
$ xxd ~/Downloads/FuraMono-Bold\ Powerline.otf | grep Powerline
但那是假设:
xxd
可用,这是一个很多的假设,似乎很多工作都像一个肤浅的字体" powerline字体"。
答案 1 :(得分:0)
您可以用另一种方法来执行此操作,并且仅对.vimrc中的已知计算机启用Powerline字体。
let hostname = substitute(system('hostname'), '\n', '', '')
let patched_font_hosts = ['host1', 'host2', 'host3'] " List of know patched hosts
if(index(patched_font_hosts, hostname) >= 0)
let g:airline_powerline_fonts = 1
endif
更容易知道您已修补了哪些主机,如果列表不是最新的,这也不是真正的问题。