【问题标题】:Vim - Force extra spacing between lines for underliningVim - 强制行之间的额外间距用于下划线
【发布时间】:2012-06-14 01:38:06
【问题描述】:

虽然我的大部分编码都使用 Vim,但我通常更喜欢将当前行加下划线,以便更容易看到我在代码中的位置。我避免使用线条突出显示之类的东西,因为它通常会使我的深色背景上的亮文本主题(即:'torte'colorscheme)更难看到。

这是我的 Vim 配色方案的一部分:

hi CursorLine    guibg=#0F2130  ctermbg=NONE       cterm=underline
hi CursorColumn  guibg=#0F2130  ctermbg=darkgray   cterm=NONE 

然后我在我的 .vimrc 文件中启用这些功能(即:~/.vimrc)。

所以,在我的例子中,当前行有一个彩色下划线,它是它上面字符的反色,而当前列有一个深灰色背景,而所有其他文本只有一个黑色背景。

我在这里遇到的唯一问题是我在编码时看不到下划线('_')字符,因为当前行的下划线与下划线字符的颜色和粗细完全相同。唯一可行的解​​决方法是:

  1. 增加行间距
  2. 使下划线出现在我的文本下方几个像素处

在 Vim(不是 gVIM)中是否有可能发生这样的事情?

谢谢。

【问题讨论】:

  • 我认为vim 可能是尝试解决此问题的错误位置。终端负责下划线的去向,而您选择的字体负责下划线的去向。所以要么用你的字体来移动下划线,要么用你的终端来移动下划线。 (我在xterm 联机帮助页中没有看到任何明显的东西,这令人震惊——它已经太可配置了,但仍然没有下划线偏移开关。也许你必须摆弄源代码。如果你'不幸的是,它使用下划线作为下划线...)
  • @sarnold:为了做到这一点,我认为它必须使用 Unicode 组合字符(我认为这不太可能)。
  • @Dennis:这不可能的。行式打印机过去常常打印_^HM 来获得带下划线的M——下划线、退格、M。我相信今天有些终端甚至会寻找这个序列来寻找会在内部生成这些内容的旧程序……vim 会生成这些吗?通过 terminfo 对自身进行排序? xterm 会自己做这件事,一起打印两个字形,只是为了让下划线的高度正确吗?
  • @sarnold:我不知道这些问题的确切答案。
  • 在 GVim 中,您可以尝试通过设置linespace 选项来增加行距(参见:help lsp)。

标签: linux bash vim xterm


【解决方案1】:

如果您使用的是gVim

:hi! def link CursorLine SpellBad

它将使用 curl-underline。


linespace 更改为10+ 将在光标线上方显示_

:set linespace=10

【讨论】:

    【解决方案2】:

    @kev: +1;它适用于 gVIM

    然而,正如其他评论者所指出的那样,这似乎在 Vim 中不可能发生。

    最后,我只是将背景设置为深灰色(即:ctermbg=253),然后将光标线设置为更暗(即:ctermbg=black cterm=NONE)。

    从那里,我更新了我的 BASHRC 文件以包含以下内容: 导出 TERM=xterm-256color

    幸运的是,这最终看起来比我之前的配色方案更好。我现在有一个标准“slate”配色方案的修改版本,具有非常深的灰色背景(即:ctermbg=253),而当前行具有纯黑色背景。

    【讨论】:

      猜你喜欢
      • 2013-12-01
      • 2018-01-29
      • 1970-01-01
      • 1970-01-01
      • 2013-07-01
      • 1970-01-01
      • 2014-06-10
      • 2014-01-01
      • 1970-01-01
      相关资源
      最近更新 更多