在Vim中,即使光标进入该行,如何保持字符隐藏

Bri*_*ian 13 vim syntax-highlighting

我可能在这里有一个独特的情况.我希望gVim(gui版本,在Linux中)隐藏隐藏的字符,无论如何,即使光标在该行上或该字符被选中.(如果字符从不存在,它应该尽可能接近.)当前隐藏的字符在光标进入该行时显示,这会导致文本在滚动和选择文本时跳转.

我们使用gView(只读gVim)来查看日志,以便利用其强大的语法突出显示功能.问题是,这些日志包含许多转义字符和TTY颜色代码,这使得阅读变得困难.(^ [33mSomeText ^ [0米)

我正在使用这一行来隐藏它们:

syntax match Ignore /\%o33\[[0-9]\{0,5}m/ conceal
Run Code Online (Sandbox Code Playgroud)

由于这些文件是由非vim专家查看的,因此当文本无法隐藏时,它看起来很奇怪而且破碎了.(如果颜色代码存在,也看起来很奇怪和破碎,如果颜色代码变黑变得不可见,但在复制/粘贴后仍然显示,但仍会显示出毛刺和破损.)

这应该没问题,因为:

这些文件在gview中以只读方式打开,带有额外的"set nomodifiable",使得保存文件变得更加困难.虽然可以编辑并尝试保存日志,但这样做既被认为是无效的事情,也是无害的事情,并且需要足够的Vim技能,如果有人设法编辑文件他们知道他们是什么做的事情." 能够使用隐藏文本编辑行的问题不适用.

如果无法将"隐藏"配置为隐藏隐藏文本,则可接受的替代方法是在打开文件时用空格替换TTY颜色代码.但是,这必须在只读模式下完成,并且我们不能让gview在关闭窗口时抛出保存对话框,因为该文件已被其.vimrc修改.

注意:我完全控制读取这些文件时源的.vim脚本文件,但无法控制TTY颜色代码的存在或在gview中打开日志文件的代码.(即我不能通过sed或类似的东西传递它.)理想的解决方案是任何可以透明地从.vimrc中核对颜色代码的东西,但我会听到任何建议."隐藏"功能只是我最有希望的领先优势.

所以,任何想法如何永久摆脱这些文件视图没有对话框弹出关闭?

Cat*_*lus 17

:help conceal

当给出"隐藏"参数时,该项目被标记为可隐藏.它是否实际隐藏取决于'conceallevel'选项的价值. 'concealcursor'选项用于确定当前行中的隐藏项目是否显示为不可识别,以便能够编辑该行.

:help concealcursor

设置也可以隐藏光标行中文本的模式.当列出当前模式时,隐藏就像在其他行中一样发生.

  • n正常模式
  • v可视模式
  • 我插入模式
  • c命令行编辑,用于'incsearch'

'v'适用于可视区域中的所有行,而不仅仅是光标.有用的值是"nc".这用于帮助文件.只要您移动文本就会被隐藏,但是当开始插入文本或选择可视区域时,会显示隐藏文本,以便您可以看到自己在做什么.请记住,光标位置并不总是显示在它的位置.例如,当垂直移动时,它可能会改变列.

也, :help conceallevel

使用"隐藏"语法属性|:syn-conceal |确定文本的方式 显示:

价值效应〜

  • 0文本正常显示
  • 1每个隐藏文本块都替换为一个字符.如果语法项没有定义自定义替换字符(请参阅|:syn-cchar |),则使用"listchars"中定义的字符(默认为空格).它以"隐藏"高亮组突出显示.
  • 2隐藏文本是完全隐藏的,除非它定义了自定义替换字符(参见|:syn-cchar |).
  • 3 隐藏文字完全隐藏.

  • gh,我讨厌把文档贴到我身上,但是在这里我应得的!我莫名其妙地盯着那部分呆了一天,却没有看到“隐蔽者”。除了转义代码仍然可以复制/粘贴外,这非常有效。(如果可以的话,这可能是不可避免的。) (2认同)