在vim中的Strikeout文本?

Con*_*nor 11 vi vim macvim

Vim(有或没有插件 - 我不在乎)是否支持删除线文字?我发现自己在其中保留了一份"TO-DO"的运行列表,并且希望能够通过删除线文本"交叉"完成我已完成的项目.

谢谢!

DRH*_*DRH 19

如果您正在使用Unicode文本,则可以使用组合字符来实现此目的.以下文章描述了如何在gvim中实现这一目标:

http://vim.wikia.com/wiki/Create_underlines,_overlines,_and_strikethroughs_using_combining_characters

您需要确保字体gvim正在使用支持适当的字符,在Windows上Consolas并且Courier New似乎正确处理这个,但大多数其他人没有.


Gio*_*ani 7

为了突出显示更简单的解决方案,我将使用Vim自定义语法突出显示规则,例如,标记为这样的文本:

~~文字~~

以不同的颜色显示(例如,如果您有深色背景,则为较暗的文本颜色,或者为深色反色).在vimrc中会是这样的:

au BufRead,BufNewFile *.txt   syntax match StrikeoutMatch /\~\~.*\~\~/   
hi def  StrikeoutColor   ctermbg=darkblue ctermfg=black    guibg=darkblue guifg=blue
hi link StrikeoutMatch StrikeoutColor
Run Code Online (Sandbox Code Playgroud)

(其中au命令仅用于将规则应用于filetype .txt文件)


小智 7

您可以通过将 unicode“长罢工叠加组合字符”(0336)附加到字符来创建(单个)删除字符。例如,要创建删除线“Z”,请输入(在输入模式下):

Z^Vu0336
Run Code Online (Sandbox Code Playgroud)

(其中 ^V 是 CTRL-V)。

您可以使用 :s (substitute) 删除一堆字符,例如删除当前行:

:s/./&^Vu0336/g
Run Code Online (Sandbox Code Playgroud)

维基百科链接:删除线组合字符


jim*_*mav 5

你可以把它放在你的 .vimrc

map _ a<C-V>u0336<Esc><Space>

然后下划线字符将“删除”光标下的任何内容,类似于 ~ (波浪号)如何改变大小写。

它是这样工作的:

a- 在光标下的字符之后开始追加
<C-V>u0336(代表 Control-V 后跟 u0336) - 删除线覆盖组合字符
<Esc>- 存在追加模式
<Space>- 将光标移过删除线字符

Vim 为下划线 (_) 字符赋予了另一种含义(参见 :help _),因此您可能想要选择另一个字符(或多个字符的序列)。


Sey*_*ong -7

如果您在终端下使用 Vim,则不能。

  1. 突出显示普通终端的参数

                                  *bold* *underline* *undercurl*
                                  *inverse* *italic* *standout*
    
    Run Code Online (Sandbox Code Playgroud)

    term={attr-list} attr-list *highlight-term* E418 attr-list 是以下项目(以任何顺序)的逗号分隔列表(不带空格): 粗体下划线 下卷曲并不总是可用 反向反转 与反向斜体相同Standout NONE 未使用属性(用于重置它)

    请注意,此处可以使用“粗体”并使用粗体字体。它们具有相同的效果。“undercurl”是卷曲的下划线。当“下卷曲”不可能时,则使用“下划线”。一般来说,“undercurl”仅在 GUI 中可用。颜色通过 |highlight-guisp| 设置。〜

但是,在 GUI 下,您可以这样做。在 下'guifont',我们有以下内容:

  For the Win32 GUI                                       *E244* *E245*
  - takes these options in the font name:
          hXX - height is XX (points, can be floating-point)
          wXX - width is XX (points, can be floating-point)
          b   - bold
          i   - italic
          u   - underline
          s   - strikeout
          cXX - character set XX.  Valid charsets are: ANSI, ARABIC,
                BALTIC, CHINESEBIG5, DEFAULT, EASTEUROPE, GB2312, GREEK,
                HANGEUL, HEBREW, JOHAB, MAC, OEM, RUSSIAN, SHIFTJIS,
                SYMBOL, THAI, TURKISH, VIETNAMESE ANSI and BALTIC.
                Normally you would use "cDEFAULT".

    Use a ':' to separate the options.
  - A '_' can be used in the place of a space, so you don't need to use
    backslashes to escape the spaces.
  - Examples: >
      :set guifont=courier_new:h12:w5:b:cRUSSIAN
      :set guifont=Andale_Mono:h7.5:w4.5
Run Code Online (Sandbox Code Playgroud)

  • -1 [显然](http://stackoverflow.com/a/8483044/430766)你的陈述是错误的。 (9认同)
  • @bitmask - 你的说法更糟糕 - 它毫无用处。它没有添加为什么上述错误的信息,没有关于问题解决方案的有用信息,并且仅充当垃圾邮件,我们在这里试图将其最小化。因此,请不要留下“这很糟糕”类型的评论。 (6认同)
  • @ldigas:我添加了一个指向伪造该声明的答案的链接。我很少投反对票,并且我认为总是留下便条以说明我为什么这样做是有礼貌的。我认为大多数人认为不说原因而投反对票是粗鲁的。 (5认同)
  • 如果这个答案是错误的,为什么它(仍然)被接受?版主就不能不接受吗? (2认同)