我登录的机器很多,而且没有一台共同的字体。所以,我希望能够拥有我对字体的第一个优先权,但如果它在机器上不存在则使用另一个,依此类推。有人曾经这样做过吗?
...
因此,在重新阅读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中的错误?
以下是我解决问题的代码。它看起来很脆弱,但它至少让我现在可以在我的实际工作上取得一些进展:
" 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>
答案 0 :(得分:7)
如果使用逗号不适合你,那么如何允许优雅的字体降级呢?此技巧也可用于其他“设置”选项。
silent! set guifont=Font\ One:h8
if &guifont != 'Font One:h8'
set guifont=Font\ Two:h8
endif
答案 1 :(得分:5)
不是您问题的直接解决方案,但您可以使用hostname()
和条件语句来选择您想要的字体:
if hostname() == 'home-pc'
set guifont=...
elseif hostname() == 'work-pc'
set guifont=...
else
set guifont=...
endif
答案 2 :(得分:1)
您还可以将所有常用设置放在.vimrc
中,并选择机器特定.gvimrc
中的字体(如果您是Windows用户,请使用_vimrc
和{{ 1}}代替)。
我知道这不是你问题的直接答案,但我发现值得指出。 :)
答案 3 :(得分:0)
Unix唯一的解决方案,在linux上测试过。我猜这会对OSX起作用,但我从未使用过OSX,抱歉。
let font = {"name" : "fontNameHere", "size" : "12"}
call system("fc-list -q " . font.name)
if has("unix") && !v:shell_error
let &guifont=join(values(font))
end
只需更换字体名称&amp;字典中的大小与你想要的大小 - 即
let font = {"name" : "DejaVuSansMono", "size" : "12"}