我需要经常登录许多不同的机器,但它们都没有相同的漂亮字体。所以,我希望能够设置首选字体,如果在该机器上不存在该字体,则使用其他字体,以此类推。是否有人尝试过这样做?
...
所以在重新阅读了guifont的帮助文件之后,我发现应该可以通过逗号将多个字体定义分开。有趣的是,我在我的.vimrc文件中有以下一行:
set guifont=-dt-interface\ user-medium-r-normal-*-*-100-*-*-m-*-iso8859-1,Liberation\ Mono\ 8
在一台机器上(gvim 7.1),我执行了以下操作:
:set gfn?
guifont=-dt-interface user-medium-r-normal-*-*-100-*-*-m-*-iso8859-1
在另一台机器上(gvim 7.2),我得到以下结果:
:set gfn?
guifont=-dt-interface user-medium-r-normal-*-*-100-*-*-m-*-iso8859-1,Liberation Mono 8
我将尝试在错误的机器上运行7.1版本,查看是否可以解决问题,如果可以,那么这不是7.2版本的bug吗?
解决方案
以下是我编写的代码来解决问题。它似乎非常脆弱,但至少让我现在能够继续进行我的实际工作:
" SETTINGS FOR GUI ONLY MODE
: Trying to emulate how it should work but on some machines it will not select the available font
" set guifont=-dt-interface\ user-medium-r-normal-*-*-100-*-*-m-*-iso8859-1,Liberation\ Mono\ 8
let g:MyFontPre = ''
let g:MyFontPost = ''
let g:MyFontSize = '8'
if has("gui_running")
if ( match(hostname(), 'server5-1..') >= 0 )
let g:MyFontSize = '10'
let g:MyFontPre = '-dt-interface\ user-medium-r-normal-*-*-'
let g:MyFontPost = '0-*-*-m-*-iso8859-1'
elseif ( match(hostname(), 'server5-3..') >= 0 )
let g:MyFontPre = 'Liberation\ Mono\ '
let g:MyFontPost = ''
else
" Leave it the default for now
endif
execute "set guifont=".g:MyFontPre."".g:MyFontSize."".g:MyFontPost
endif
" FONT SIZE SHORTCUTS
function! ToggleMyFontSize()
if ( g:MyFontSize == 12 )
let g:MyFontSize = 8
execute "set guifont=".g:MyFontPre."".g:MyFontSize."".g:MyFontPost
elseif ( g:MyFontSize == 8 )
let g:MyFontSize = 10
execute "set guifont=".g:MyFontPre."".g:MyFontSize."".g:MyFontPost
elseif ( g:MyFontSize == 10 )
let g:MyFontSize = 12
execute "set guifont=".g:MyFontPre."".g:MyFontSize."".g:MyFontPost
endif
endfunction
nnoremap <silent> <F12> :call ToggleMyFontSize()<CR>