我使用平铺窗口管理器(很棒)+终端多路复用器(tmux)+在vim中拆分。我根本没有窗户装饰,所以如果程序的内容没有放弃,那么它们之间就不会有视觉上的分裂。我对这种范例非常满意,因为无论如何我都使用多个监视器并按屏幕分组任务。如果两个窗口没有理由并排放置,那么它们就不会出现在第一位置。 br />
Xorg窗口‹|›窗口=根本没有任何内容
Tmux窗格‹|›窗格= 1px分隔线
Vim split ‹|› split = 1个字符的彩色列

以下示例显示了一个并排的窗口,窗格和vim拆分:

即使没有单击完整分辨率版本,您看到的白色分隔线也没有什么意义在屏幕上拆分vim窗格。 (请注意,vim会话右侧的灰色列实际上是第80列突出显示的内容,尽管我经常以该大小工作,但不是任何分隔符。)拆分或降低配色方案的对比度。我想做的是使用与tmux相同的分割条,该条不会占用任何宽度,因为它是在列之间而不是在列之间绘制的。基于终端的vim是否可行? Gvim? Neovim?如果无法制作外观上不显眼的分隔器,分隔柱是否可以完全关闭?
P.S.使用外观上相似的分隔符之所以有意义,是因为我使用相同的键绑定在tmux窗格和vim拆分之间导航。相同的键在它们之间无缝导航,只有视觉边界也相同时才有意义。

#1 楼

您对tmux错误。像每个基于终端的程序(包括Vim)一样,它仅在单元内绘制内容。这意味着Vim和tmux都使用相同的方法绘制垂直边框:它们只是使用类似管道的字符。

Tmux默认使用U+2502),而Vim使用|U+007C)。 br />
如果要在Vim中使用相同的分隔符,则可以使用相同的字符:

set fillchars+=vert:│


请注意,您的颜色方案可能会设置背景-垂直分割的颜色。在这种情况下,您可以直接在颜色图中删除背景色:

hi VertSplit ctermbg=NONE guibg=NONE


评论


我在大约一分钟之前就打败了你,但还是要谢谢你。我不确定为什么我曾经假设不这样做。我想我给人的印象是,它正在执行某种Unicode字符合并魔术,以将分隔符覆盖在字符空间的边缘,但是我现在意识到,我有意识地考虑了一下,这将是多么荒谬。

–卡莱布
15年4月15日在12:31



原来我需要的是Hi VertSplit cterm = NONE,因为默认情况下它是反向的。

– Lloeki
16年2月10日在10:57

您是否有机会将tmux分隔符从“│”更改为“ /”?罗曼

–klaus
18年5月1日下午4:04

@EnanAjmain IIRC我在其源代码中找到了tmux分隔符。我认为没有选择的余地,但是我距离tmux专家还很远,因此您应该查看手册。

– romainl
18年5月1日在9:56



@romainl我认为你是对的。我可以更改tmux的任何主要内容,都必须破解源代码。

–klaus
18年5月1日在13:14

#2 楼

即使在我自己的屏幕截图中,tmux也不使用任何魔术,拆分仍然是单个字符宽的列。不太引人注目的视觉效果是使用了比vim的ASCII默认值笨拙的Unicode框绘图字符,并且缺少突出显示的背景颜色。
在rc文件中添加类似以下几行的内容:使用autocmd可以确保在切换配色方案时,高光倍率保持有效。您可能希望也可能不希望这种行为,因为某些颜色方案对此颜色组具有合理的值。以及您尝试使用的任何fg / bg值。

#3 楼

不,这不能在Vim中完成,并且可能很难在GVIM中实现。

Vim坚持使用终端中基于单元的寻址方式。在缓冲区中,这对于使用j / k进行一致的垂直导航至关重要。这种基于单元格的x和y坐标的寻址在Vim的实现中已根深蒂固,我想很难克服。

还要注意:help design-not



Vim不是一个花哨的GUI编辑器,它试图以在所有平台上不一致的代价来看起来不错。