是否可以在vimgvim中使用非等宽字体?

我尝试通过以下方式更改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 楼

我找到了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 chrome的小函数:

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。否则,我只会在鼠标光标周围得到一些奇怪的方形框架,而没有对话框。

–俄罗斯
19年5月22日在8:18



使用垂直拆分时,看起来很有趣(且不可用):屏幕截图。但这是基于终端的解决方案所期望的。

–俄罗斯
19年5月22日在8:27

#2 楼

GUI Vim绝对不支持此功能,如果有不多的终端仿真器以您希望的方式支持比例字体,我会感到惊讶:它会破坏终端所使用的太多标准内容用过的。由于Unix和其他命令行环境的许多部分都假定等宽字体,因此这种类型的显示不能用作通用终端,因此终端的开发人员将不得不进行额外的工作而收效甚微。 >
但是,确实存在至少一个使用Web技术(Ajaxterm)实现的终端模拟器,并且由于使用HTML / CSS进行渲染,因此可以使用CSS使用比例字体。 CJS Hayward已经做到了这一点,但是它需要使用一个非常旧的浏览器。

如果您要在这样的终端上运行Vim,那么您会得到想要的东西。当您使用任何基于列的功能时,只需为古怪的hijinx做准备。 (例如,jk,逐块可视模式或'colorcolumn'选项) ),您可以在其中运行Vim。专门的比例字体爱好者可能还希望研究Emacs的Evil,从而在Emacs中获得类似于Vim的体验。

#3 楼

Neovim GUI的Oni支持比例字体。使用“ webgl”渲染器可获得最佳效果。

 "editor.renderer": "webgl"


另请参见https://github.com/onivim/oni/issues/2359

评论


看起来很有趣!不幸的是,我无法运行该项目,并且真的没有时间调试它:-(

–马丁·图尔诺伊(Martin Tournoij)
18年8月6日在18:37



在github.com/onivim/oni/releases上有预建的档案。

–贾斯汀·凯斯(Justin M. Keyes)
18年8月7日在10:55

根据Oni文档,编辑器字体“必须是等宽字体”。尝试按比例的字体给了我相应的错误信息。

– Karl Bartel
20-05-30在8:13