Как я могу изменить размер шрифта в gVim?


41

Есть ли способ изменить размер шрифта в gVim, используя собственные команды?

А если нет, какой сценарий можно использовать, чтобы сделать это быстро?


Ответы:


32

Установите guifontопцию в своем .gvimrc. Смотрите :help guifontи :help setting-guifont.

В частности, вы можете сделать что-то вроде: set guifont=Consolas:h11использовать Консоли в 11 пунктов в gvim на Windows. Есть несколько других опций, которые вы можете использовать (каждый разделен с a :), например, :bдля жирного, хотя некоторые из них доступны только на определенных платформах.

:hВозможность установить размер шрифта , как это демонстрируется, пожалуй, самый полезный, и один непосредственно связанные с изменением размера шрифта, как вы просили.


6
Обратите внимание, что name:sizeсинтаксис работает только в Windows gVim, для gtk gVim вам нужно использовать name size(пробел между именем шрифта и размером) ... Другие платформы могут иметь другие форматы ...
Martin Tournoij

:hXXработает и на Mac. Хорошая мысль о GTK, хотя.

set guifont=? Нет set gfn=?
Питер Мортенсен

2
@PeterMortensen Обе работы; Я предпочитаю более длинные формы, потому что нахожу их более удобочитаемыми и особенно склонен использовать более длинные формы в ответах.

Обратите внимание, что имя файла в Windows (общий выбор ОС) на самом деле: для MS-DOS и Win32: $ VIM \ _gvimrc или в моем случае этот файл не существует, и мне нужно было создать его таким образом.
волчий рассвет

29

Если вы хотите просто изменить размер шрифта в работающем экземпляре GVim, введите:

:set guifont=*

Должно появиться окно, позволяющее установить размер шрифта, а также выбрать новый шрифт при желании. Затем вы можете попросить Vim напечатать строку, которую нужно добавить в свою строку, ~/.gvimrcчтобы сделать изменение постоянным:

:set guifont?

Создает что-то вроде следующего в строке состояния:

guifont=Hasklig-Light:h16

Добавьте это с префиксом setк вашему, ~/.gvimrcчтобы сохранить.


13

В моем .vimrc есть следующее, чтобы быстро изменить размер шрифта без изменения шрифта. Работает на Windows и GTK. Я не тестировал другие графические интерфейсы. Я уверен, что первоначально скопировал это от кого-то еще, но это было в моем файле RC так долго, я не помню, откуда это взялось.

if has("unix")
    function! FontSizePlus ()
      let l:gf_size_whole = matchstr(&guifont, '\( \)\@<=\d\+$')
      let l:gf_size_whole = l:gf_size_whole + 1
      let l:new_font_size = ' '.l:gf_size_whole
      let &guifont = substitute(&guifont, ' \d\+$', l:new_font_size, '')
    endfunction

    function! FontSizeMinus ()
      let l:gf_size_whole = matchstr(&guifont, '\( \)\@<=\d\+$')
      let l:gf_size_whole = l:gf_size_whole - 1
      let l:new_font_size = ' '.l:gf_size_whole
      let &guifont = substitute(&guifont, ' \d\+$', l:new_font_size, '')
    endfunction
else
    function! FontSizePlus ()
      let l:gf_size_whole = matchstr(&guifont, '\(:h\)\@<=\d\+$')
      let l:gf_size_whole = l:gf_size_whole + 1
      let l:new_font_size = ':h'.l:gf_size_whole
      let &guifont = substitute(&guifont, ':h\d\+$', l:new_font_size, '')
    endfunction

    function! FontSizeMinus ()
      let l:gf_size_whole = matchstr(&guifont, '\(:h\)\@<=\d\+$')
      let l:gf_size_whole = l:gf_size_whole - 1
      let l:new_font_size = ':h'.l:gf_size_whole
      let &guifont = substitute(&guifont, ':h\d\+$', l:new_font_size, '')
    endfunction
endif


if has("gui_running")
    nmap <S-F12> :call FontSizeMinus()<CR>
    nmap <F12> :call FontSizePlus()<CR>
endif

4
Согласно этому ответу , has('unix')это часто верно для систем OSX, и, по словам Джона , для OSX требуется тот же формат, что и для Windows ... Поэтому использование has('gui_gtk2'), вероятно, лучше, чем использование has('unix').
Мартин Турной

Это работает на Xubuntu (Xfce) где: set guifont? возвращает текст наподобие «Monospace Bold 11», без разделителей двоеточия и префикса «h», на который опирается выбранный ответ.
NeilG

5

Видимо, способ написания настроек шрифта довольно зависит от платформы. Что сработало для меня (gvim в MX Linux 17, (дистрибутив Linux на основе Debian с рабочим столом XFCE)):

  • Определите текущие настройки шрифта в открытом экземпляре gvim, используя : set guifont?

Пример: guifont=DejaVu Sans Mono 12

  • Используйте эту информацию для записи настроек (изменяя размер по желанию) в ~/.gvimrcфайле, избегая пробелов с обратной косой чертой и не используя :перед размером .

Пример: set guifont=DejaVu\ Sans\ Mono\ 18

  • После сохранения ~/.gvimrcфайла новые экземпляры gvim должны использовать новый желаемый размер.

Эти два ответа помогли мне:

А также комментарии этого:


4

Основываясь на ответе Дрю, эта установка работала лучше для меня.

Он увеличивает или уменьшает размер шрифта, используя \+или \-(если \ваш лидер), и циклически перебирает предопределенные шрифты, используя cot. Я часто переключаюсь между этими шрифтами в зависимости от того, работаю ли я с исходным кодом или текстом.

let g:fnt_types = ['SourceCode\ Pro', 'monofur' ]
let g:fnt_sizes = [ 10, 13 ]


let g:fnt_index = 0
let g:fnt_size  = g:fnt_sizes[g:fnt_index]

function! CycleFont()
  let g:fnt_index = (g:fnt_index + 1) % len(g:fnt_types)
  let g:fnt_size  = g:fnt_sizes[g:fnt_index]
  call ResetFont()
endfunction

function! ResetFont ()
  if has('gui_running')
    exe ':set guifont=' . g:fnt_types[g:fnt_index] . '\ ' . string(g:fnt_size)
  endif
endfunction

call ResetFont()

function! FontSizePlus ()
  let g:fnt_size = g:fnt_size + 0.5
  call ResetFont()
endfunction

function! FontSizeMinus ()
  let g:fnt_size = g:fnt_size - 0.5
  call ResetFont()
endfunction

nnoremap <leader>+ :call FontSizePlus()<cr>
nnoremap <leader>- :call FontSizeMinus()<cr>
nnoremap cot :call CycleFont()<cr>

2

Вы можете попробовать этот плагин: vim-fontzoom .

map <m-o> :Fontzoom!<cr>
map <m--> <Plug>(fontzoom-smaller)
map <m-=> <Plug>(fontzoom-larger)
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.