我正在查看可能有几个连续相同行的文件。
有没有一种简单的方法可以跳到下一条不相同的线?
或者我希望能够折叠所有等于初始线条的线条,只显示折叠的线条数量。
答案 0 :(得分:7)
您可以定义自己的fold-expr:
首先设置fdm:
:set fdm=expr
然后
:set foldexpr=getline(v:lnum)==#getline(v:lnum-1)?1:0
现在您可以通过键入 z M 进行测试,以关闭所有折叠,如果您很幸运^ _ ^所有重复的行都会折叠。
您可以输入 z R 打开所有折叠。
如果它有效并且你经常打开那种文件,你可以将上面的行放在你的.vimrc。(au with ft)如果只有一个时间的工作,你可以将模式行写入该文件。
答案 1 :(得分:1)
试试这个:
:nmap <F2> "1y$<CR>/^\(<C-R>1$\)\@!<CR>
它将F2映射到:
这看起来效果很好,除非您复制的行的文字转义了会混淆搜索正则表达式的字符。这是因为寄存器1只是在没有转义的情况下被放入搜索表达式中。这可能很难修复,但对于普通的日志文件来说,这应该不是什么大问题。
另外:如果你没有和vim结婚,只需要读取文件的非连续复制行,那么规范的UNIX方式是:
uniq filename
如果您想要使用vim但不需要对文件进行更改,请尝试:
:%!uniq
(如果您尝试后者,请务必退出而不保存)