我可以在Vim或gVim中使用非等宽字体吗?


32

有没有办法在vim或中使用非等宽字体gvim

我尝试使用以下方式更改gVim的字体:

:set guifont=Dejavu\ Serif\ 12

但这给了我一些难看的结果:

在此处输入图片说明

如果使用菜单(编辑->选择字体),我将得到相同的结果

:help guifont 说:

Note that the fonts must be mono-spaced (all characters have the same
width).  An exception is GTK 2: all fonts are accepted, but
mono-spaced fonts look best.

因此,我认为上述结果算作“看起来不是最好的”吗?可以通过某种方式对此加以改进吗?

我还尝试在终端(xterm)中设置非等宽字体,但这似乎具有大致相同的效果:

在此处输入图片说明

我不介意为此btw使用其他终端模拟器。


它似乎已经在这里得到了解答:superuser.com/questions/357571/…–
guido

1
@guido我在那儿看不到答案...最受欢迎的答案只是字体的解释(不是答案),其他“答案”则更糟……
Martin Tournoij

Answers:


25

我发现了mlterm,它支持这一点。除了Emacs的内置终端(MX项),这是唯一的终端,我发现支持这种(我试过约15-20不同的)。由于
发现mlterm比率设置,我发现它比Emacs更好,并且您还避免在Emacs会话中运行Vim(我什至不知道法律上允许这样做)。

屏幕截图(除非您由于浏览器缩放而将其完全打开,否则它看起来很难看):

在此处输入图片说明

但是,它确实需要一些配置爱。启动后,Ctrl在任意位置按+中键,将打开配置屏幕。我设置了这些选项

在字体选项卡中:

  • 检查“抗锯齿”
  • 检查“可变列宽”;这是大多数其他终端仿真器所缺少的“关键功能”
  • 将字体设置为“ DejaVu Sans Book 16”(或您喜欢的其他字体)
  • 将“屏幕比例与字体大小”的宽度设置为60;这取决于有关终端宽度的程序,如果您不这样做,则仅使用屏幕大小的约50%。最佳值取决于所使用的字体,因此请尝试一下...

右键单击配置屏幕似乎有些不稳定,~/.mlterm/vaafont由于未更新,我也对其进行了编辑:

ISO10646_UCS4_1 = 22,DejaVu Sans 18;21,DejaVu Sans 16;16,DejaVu Sans 16

和我的~/.mlterm/main(这些是我在上面设置的设置,以及一些个人喜好):

type_engine = xft
bel_mode = none
scrollbar_mode = none
fontsize = 22
use_anti_alias = true
use_variable_column_width = true
line_space = 5
use_multi_column_char = true
col_size_of_width_a = 1
screen_width_ratio = 50

有些文物是可以预期的,但是编写诸如此类的电子邮件或帖子似乎效果很好!

我在外壳中为此创建了一个别名:

alias pvim mlterm -e vim

我还创建了一个小功能来删除大多数UI镶边:

fun! WriteMode()
    " Disable a lot of stuff
    setlocal nocursorline nocursorcolumn statusline= showtabline=0 laststatus=0 noruler

    " Hack a right margin with number
    setlocal number
    setlocal numberwidth=3

    " White text, so it's 'invisible'
    highlight LineNr ctermfg=15
    " If you're using a black background:
    " highlight LineNr ctermfg=1
endfun

还有goyo.vim,它的运行方式大致相同,但对我而言效果不佳(太多的利润余量)。YMMV虽然。


我必须使用Ctrl + RightClick,而不是Ubuntu 18.04上的中间版本以及来自Ubuntu存储库的MLTerm。否则,我只会在鼠标光标周围得到一些奇怪的方形框架,而没有对话框。
拉斯兰

当您使用垂直分割时,它看起来很有趣(且不可用):screenshot。但这是基于终端的解决方案所期望的。
Ruslan

7

GUI Vim绝对不支持此功能,如果您有不止一种终端仿真器以您希望的方式支持比例字体,那我会感到惊讶:它将破坏太多的终端所需要的标准内容用过的。由于Unix和其他命令行环境的许多部分都假定等宽字体,因此这种类型的显示不能用作通用终端,因此终端的开发人员将不得不进行额外的工作而收效甚微。

但是,确实存在至少一个使用Web技术(Ajaxterm)实现的终端仿真器,并且由于它使用HTML / CSS进行渲染,因此可以使用CSS使用比例字体。CJS Hayward已经做到了这一点,但是它需要使用一个非常老的浏览器。

如果您要在这样的终端上运行Vim,那么您会得到所需要的;当您使用任何基于列的功能时,只需为古怪的hijinx做准备。(例如jk逐块可视模式或'colorcolumn'选项)

更新正如原始提问者Carpetsmoker在评论中指出的那样,Emacs具有适当的比例字体支持,还包括一个终端仿真器(M-x term),您可以在其中运行Vim。专门的比例字体爱好者可能还希望研究Emacs的Evil,以便在Emacs中获得类似于Vim的体验。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.