vim中删除文本?

2admgd59  于 2023-05-07  发布在  其他
关注(0)|答案(8)|浏览(191)

Vim(有没有插件-我不在乎)是否支持删除线文本?我发现自己在里面保存了一个“待办事项”的运行列表,并且希望能够通过删除线文本“划掉”我的已完成项目。
谢谢!

8xiog9wr

8xiog9wr1#

为了更简单的突出显示解决方案,我会使用Vim自定义语法突出显示规则,例如,这样标记的文本:
~~文字~~
以不同的颜色显示(例如,如果您有一个黑暗的背景,或作为黑暗的反转颜色较暗的文本颜色)。在vimrc中,这将是:

au BufRead,BufNewFile *.txt   syntax match StrikeoutMatch /\~\~.*\~\~/   
hi def  StrikeoutColor   ctermbg=darkblue ctermfg=black    guibg=darkblue guifg=blue
hi link StrikeoutMatch StrikeoutColor

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

doinxwow

doinxwow2#

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

Z^Vu0336

(其中,V是CTRL-V)。
您可以用途:s(substitute)删除一堆字符,例如,删除当前行:

:s/./&^Vu0336/g

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

ki1q1bka

ki1q1bka3#

你可以把这个放到你的.vimrc里
map _ a<C-V>u0336<Esc><Space>
然后下划线字符将“删除”光标下的任何内容,类似于~(波浪号)更改大小写的方式。
它的工作原理是这样的:
a-在光标下的字符后开始追加
<C-V>u0336(代表Control-V后跟u 0336)-删除线覆盖组合字符
<Esc>-存在附加模式
<Space>-使光标前进到删除线字符之后
Vim为下划线(_)字符赋予了另一种含义(参见:help _),因此您可能希望选择另一个字符(或多个字符的序列)。

u59ebvdq

u59ebvdq4#

它与终端中的unicode vim配合得非常好。
把它放到我的vim vundle文件中:
https://github.com/crux/crux-vimrc/blob/master/plugin/unicode.vim

-nargs=0 Overline        call s:CombineSelection(<line1>, <line2>, '0305') command! -range -nargs=0 Underline       call
s:CombineSelection(<line1>, <line2>, '0332') command! -range -nargs=0
DoubleUnderline call s:CombineSelection(<line1>, <line2>, '0333')
command! -range -nargs=0 Strikethrough   call
s:CombineSelection(<line1>, <line2>, '0336')

function! s:CombineSelection(line1, line2, cp)   execute 'let char =
"\u'.a:cp.'"'   execute
a:line1.','.a:line2.'s/\%V[^[:cntrl:]]/&'.char.'/ge' endfunction

vnoremap  :Strikethrough<CR> vnoremap __ :Underline<CR> ```
xn1cxnb4

xn1cxnb45#

有一个patch pending,使这在gui工作。不幸的是,这是目前埋在待办事项清单,所以它将采取我一段时间,直到它将适用于布拉姆。

lsmepo6l

lsmepo6l6#

不,vim不支持这个。它是一个文本编辑器,而不是一个WYSIWYG编辑器。

3lxsmp7m

3lxsmp7m7#

如果你在终端下使用Vim,你不能。
1.突出显示普通终端参数

*bold* *underline* *undercurl*
                              *inverse* *italic* *standout*

term={attr-list} attr-listhighlight-termE418 attr-list是以下项目(以任何顺序)的逗号分隔列表(不含空格):粗体下划线欠 curl 不总是可用反向反向与反向斜体相同突出无无使用属性(用于重置它)
请注意,“粗体”可以在这里使用,并通过使用粗体字体。它们具有相同的效果。“undercurl”是 curl 下划线。当“欠 curl ”是不可能的,然后“下划线”使用。通常,“欠 curl ”仅在GUI中可用。颜色设置为|高光引导|. ~
但是,在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
brvekthn

brvekthn8#

如果您正在使用Unicode文本,您可以使用组合字符来实现这一点。下面的文章描述了如何在gvim中实现这一点:
http://vim.wikia.com/wiki/Create_underlines,_overlines,_and_strikethroughs_using_combining_characters
您需要确保gvim使用的字体支持适当的字符,在Windows上,ConsolasCourier New似乎都能正确处理这一点,但其他大多数字体都不能。

相关问题