标记重复行并从结果中排除字符

时间:2017-11-16 15:02:23

标签: vim duplicates vim-syntax-highlighting

我正在使用this单行查找文本文件中的重复行:

href

当我在:syn clear Repeat | g/^\(.*\)\n\ze\%(.*\n\)*\1$/exe 'syn match Repeat "^' . escape(getline('.'), '".\^$*[]') . '$"' | nohlsearch 源文件上执行它时,它正确返回了很多C{以及空行。但是,它们并不是最有趣的线条。那我可以从这个单行的结果中排除一个或多个字符吗?

1 个答案:

答案 0 :(得分:1)

哇,这很难。 但我想我明白了:

:syn clear Repeat | g/^\(^\(\(\s*break\;\|\s*{\|\s*}\)\@!.\).*\)\n\ze\%(.*\n\)*\1$/exe 'syn match Repeat "^' . escape(getline('.'), '".\^$*[]') . '$"' | nohlsearch

它忽略了以下3种模式:

\s*break;
\s*}
\s*{

您可以在\|分隔的列表中添加更多内容。

正如您可以轻松发现的那样,它不是一个非常好的可读解决方案。您可以使用very magic mode see :h \v进行改进。但为什么你甚至需要测试2条相同的线?也许你的整个用例有更好的解决方案