VIM:如何在不使用NonText Color-element的情况下更改Showbreak Highlight颜色

Rem*_*man 10 vim symbols highlight break

我注意到'showbreak'符号突出显示了"NonText"颜色元素.NonText也用于EOL角色.
我想保留EOL角色的高亮颜色,但想要改变它的showbreak符号是可能的吗?

另一个问题是我的showbreak符号没有显示.我想用这个符号"↳"把它放在亚麻布栏中(使用set cpoptions + = n).我无法找到如何显示符号以及如何在showbreak符号后面放置一个空格(在文本和符号之间).

谁能帮我?

Ran*_*ris 6

我不认为你会突出显示与EOL角色不同,至少我不知道有办法做到这一点.

对于第二部分,我可以提供帮助.我能够通过以下设置显示"↳"以显示在我的行号列中:

let &showbreak = '? '
set wrap
set cpo=n
Run Code Online (Sandbox Code Playgroud)

请注意,之后有一个空格?.这个排队很好,直到文件中有> 9行.如果你想让它与数字列的最后一个字符对齐而不管行数,我不确定你将要做什么.

编辑:我最近为IRC上的某个人编写了一个概念验证函数,该函数突出显示了一行中包含不同突出显示组的第一个字符.它没有经过多少测试,但似乎有效.不完全是你想要的,但也许值得一看.


Ara*_*xia 6

:help hl-NonText很清楚,你不能为'showbreak'字符串和其他非文本字符串使用不同的颜色,这些字符串eol是成员(请参阅参考资料:help 'listchars'):

非文本

窗口末尾的"〜"和"@","showbreak"中的字符以及文本中不存在的其他字符(例如,当双宽字符不适合末尾时显示">"这条线).

如果您愿意接受此限制(@elliottcable),hi! link NonText LineNr则会将'showbreak'字符串与行号颜色匹配.

如果你真想弄巧,作为一种妥协,你可以创建一个映射或命令之间切换':set list',并':set nolist'也将调整NonText highlight同步设置.

如果您使用:set relativenumber(在vim 7.3中添加),:set showbreak=?\ \ \将可靠地保持'showbreak'整齐排列,因为在您浏览文件时数字宽度不会改变.(除了在他的回答中提到的:set cpo+=n:set wrap@Randy Morris之外.)

你肯定需要UTF-8作为?角色,因为它不会出现在其他编码中.我强烈建议你仔细记录您的编码问题,关于如何复制它们连同您的操作系统,其版本和细节:versionVIM的输出,并张贴他们作为独立的问题.UTF-8应该帮助你纠缠多种语言而不是障碍.