vim - 如何在vimrc中轻松测试guifont?

标签 vim

我有许多不同的机器要登录,但没有一个有共同的体面字体。所以,我希望能够对一种字体有我的第一个偏好,但如果它在机器上不存在,请使用另一种,依此类推。以前有人这样做过吗?

...

所以在重新阅读了 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>

最佳答案

不是您问题的直接解决方案,但您可以使用 hostname()和一个条件语句来选择你想要的字体:

  if hostname() == 'home-pc'
      set guifont=...
  elseif hostname() == 'work-pc'
      set guifont=...
  else
      set guifont=...
  endif

关于vim - 如何在vimrc中轻松测试guifont?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1009478/

相关文章:

git - 在 Vim 中打开文件会打开 vim diff?

vim - 强制 vim 背景为黑色

vim - 重新映射 vim :x to close buffer, 仅当它是最后一个缓冲区时才退出

vim - 打印时如何在vim中启用自动换行

regex - Vim - 如何在所有缓冲区中运行非正常模式命令?

vim - vim 可视模式下的多个 s///命令

vim - 重新加载缓冲区中的所有文件后文件类型设置丢失

python - 使用 vim、shell 或 python 移动小数点

search - 如何在 Vim 中搜索包含正则表达式的字符串?

vim - 有没有办法在vim中向上或向下复制选定区域?