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使用其他终端仿真器。
#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做准备。 (例如,
j
,k
,逐块可视模式或'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
评论
它似乎已经在这里得到了解答:superuser.com/questions/357571/…@guido我在那儿看不到答案...最受欢迎的答案只是什么字体的解释(不是答案),而其他“答案”则更糟...