如何更改Neovim字体?

27

VIM中有一个“set guifont”选项来更改字体。Neovim 不支持这个选项,所以我想知道是否可以更改Neovim在终端中使用的字体?


一个可能的解决方法:如果你的终端支持,你可以在启动新终端时将配置文件或字体作为CLI选项传递。例如,对于Alacritty,可以使用类似 function vim() { alacritty -o font.normal.family="Fira Code" -e nvim "$@" } 的方式。这样至少更改仅限于本地Neovim。 - wardw
9个回答

37

这不是给终端使用的,但对某些人可能仍然有用。

对于Neovim-Qt GUI客户端,如果您将以下内容放入ginit.vim,则可以通过Ctrl +滚动鼠标更改字体:

let s:fontsize = 12
function! AdjustFontSize(amount)
  let s:fontsize = s:fontsize+a:amount
  :execute "GuiFont! Consolas:h" . s:fontsize
endfunction

noremap <C-ScrollWheelUp> :call AdjustFontSize(1)<CR>
noremap <C-ScrollWheelDown> :call AdjustFontSize(-1)<CR>
inoremap <C-ScrollWheelUp> <Esc>:call AdjustFontSize(1)<CR>a
inoremap <C-ScrollWheelDown> <Esc>:call AdjustFontSize(-1)<CR>a

对于那些更喜欢使用键盘的人,有一种好方法可以使用数字键盘上的+kPlus)和-kMinus

" In normal mode, pressing numpad's+ increases the font
noremap <kPlus> :call AdjustFontSize(1)<CR>
noremap <kMinus> :call AdjustFontSize(-1)<CR>

" In insert mode, pressing ctrl + numpad's+ increases the font
inoremap <C-kPlus> <Esc>:call AdjustFontSize(1)<CR>a
inoremap <C-kMinus> <Esc>:call AdjustFontSize(-1)<CR>a

显然,您可以将Consolas替换为您喜欢的字体。


我的系统(Xubuntu 18.04)上没有Consolas字体,但这个命令可以解决问题::execute "GuiFont! DejaVu Sans Mono:h" . s:fontsize - askonecki

29

在终端仿真器的首选项中更改字体。 终端程序通常无法设置自己的字体。 只有像Gvim或macvim这样的GUI客户端使用set guifont选项。


22
如何更改字体取决于您当前如何使用Neovim:
对于终端Neovim
如果您在终端中使用Neovim,要更改Neovim使用的字体,您需要更改终端使用的字体。请查阅您的终端手册以了解如何更改字体样式和字体大小等。
对于Neovim图形界面客户端
对于Neovim图形界面客户端,您需要在文件ginit.vim中设置字体。ginit.vim位于与init.vim或init.lua[^1]相同的文件夹中。不同的图形界面客户端有不同的命令来设置您使用的字体和字体大小。以下是我尝试过的一些图形界面客户端的不完全列表:
  • nvim-qt:在ginit.vim中使用命令GuiFont来更改字体,例如GuiFont Hack:h12(假设您已安装字体Hack)。
  • fvim:fvim是另一个Neovim GUI客户端。您可以在ginit.vim中使用set guifont=Hack:12来设置fvim使用的字体。

[^1]:在Neovim中运行命令:echo stdpath('config')来显示Neovim的配置目录。


在我看来,应该使用GuiFont。然而,在Windows上,nvim-qt v0.8.2在重新启动应用程序后会更改字体。我在下面发布了我的解决方法作为答案。 - Martin

4
我在Ubuntu18.04上使用Neovim-qt版本,但是我使用相同的配置文件来配置vim。
经过尝试和错误,我找到了一种将neovim字体更改为FiraCode Monospace的方法。虽然你可以在GUI中输入命令:Guifont Fira Mono:h12来更改当前使用的字体,但这只能起作用一次。当你关闭GUI后,需要重新设置字体。 :(
或者你需要另一个配置文件ginit.vim来设置GUI相关的事情。关于为GUI设置字体的同样问题,只需在ginit.vim中写入GuiFont Fira Mono:h12即可。

3
除了这个问题的答案之外,vim/Gvim可以工作但是NeoVim(qt)不能工作的许多脚本/插件的原因是,在NeoVim中,字体是由Guifont而不是guifont定义的。

2

首先,如果您正在使用'text-mode'的nvim,只需通过终端(例如putty,rxvt等)进行设置

对于nvim-qt,fnvim(图形界面版本的nvim),这里是解决方案

  1. 通过:set guifont=*命令选择字体。
  2. 通过:set guifont?命令显示正确的字体名称,在写入配置文件时,请记住space字符应该适当转义。(例如字体名称为JetBrainsMono NFM:h10
  3. 通过:echo stdpath('config')找到您的config_path,对于Linux,通常为~/.config,对于Windows,通常为$env:LOCALAPPDATA
  4. 设置您的配置文件,例如,我lazyvim的设置,nvim-qt版本0.2.16.1在Windows上。配置文件可以是这些文件之一
  • <config_path>/nvim/ginit.lua
  • <config_path>/init.lua
  • <config_path>/nvim/lua/config/options.lua (我更喜欢这个)

根据需要编辑正确的配置文件

if vim.fn.has("gui_running") then
  -- vim.cmd("set guifont=JetBrainsMono\\ NFM:h10")
  vim.opt.guifont = "JetBrainsMono\\ NFM:h10"
end

0

除了其他很棒的答案之外,如果你喜欢在lua中使用一个可以完成所有这些操作的东西,你可以使用size-matters.nvim。这是我为此目的编写的一个小插件。


0

我在WSL中使用了Neovim,所以如果你在WSL中有问题,我可以帮忙。

更改终端字体,你可以在WSL中至少做到这一点。

因此,下载并安装所需的字体,然后在cmd > 属性 > 字体中选择你的字体。


我使用终端预览,但我没有得到那种东西。 - Krunal Akbari

0

在Windows上使用neovim(nvim-qt,NVIM v0.8.2),重启应用程序后我的init.vim中的字体设置没有生效。

作为解决方法,我在init.vim中设置了两个不同的字体设置,例如:

set guifont=Source\ Code\ Pro\:h13
set guifont=Source\ Code\ Pro\:h14

似乎在每次启动应用程序时都会强制进行显式字体更改,并产生所需的结果:设置第二个字体。

在Windows和Mac上,有一个图形字体选择器::set guifont=*

一旦设置了字体,请使用:set guifont?找到它的名称。请注意,在示例中使用\转义空格。

请注意,指定字体大小在Windows和Linux上有所不同:

Linux:   set guifont=Source\ Code\ Pro\ 14
Windows: set guifont=Source\ Code\ Pro\:h14 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接