Vim 如何在g/pattern/move中插入原始行号

Vim 如何在g/pattern/move中插入原始行号,vim,Vim,vim:将原始行号插入g/模式/移动$ 我正在调试日志中的一些事件顺序,并希望通过显示日志的行号检查两组事件序列。通常,我使用g/pattern/move$来获取一些有趣的信息。但是我找不到一种方法来插入它们的原始行号。请帮忙 我试过: g/模式/移动$;printf(“%d”,行(“.”) 但它不起作用。方法稍有不同,但我的\u vimrc nnoremap <F3> :redir! @f<cr>:silent g//<cr>:redir! END<c

vim:将原始行号插入
g/模式/移动$

我正在调试日志中的一些事件顺序,并希望通过显示日志的行号检查两组事件序列。通常,我使用g/pattern/move$来获取一些有趣的信息。但是我找不到一种方法来插入它们的原始行号。请帮忙

我试过:
g/模式/移动$;printf(“%d”,行(“.”)

但它不起作用。

方法稍有不同,但我的
\u vimrc

nnoremap <F3> :redir! @f<cr>:silent g//<cr>:redir! END<cr>:enew!<cr>:put! f<cr>:let @f=@/<cr>:g/^$/d<cr>:let @/=@f<cr>gg
nnoremap:redir@f:无声g/:重播!完:enew!放!f:let@f=@/:g/^$/d:let@/=@fgg

它会打开一个包含所有搜索匹配项的新缓冲区,包括匹配发生的行号。

不禁想到一些非常简单的事情,例如:

g/pattern/call append(line('$'), line('.') . ' ' . getline('.'))

我想出了一种方法,首先在具有图案的行上插入行号,然后将相同的行移动到文件的末尾:

:%s,\v^\ze.*pattern,\=line('.') . ' ' ,g | g/pattern/m$
我们有两个命令:

:%s,\v^\ze.*pattern,\=line('.') . ' ' ,g

, ....................... we are using comma as delimiter
\v ...................... very magic substitution
^ ....................... Regular expression for beginning of line
\ze ..................... indicates that all after it will not be substituted
\=line('.') ............. gets the line number
. ' '  .................. concatenates one space after the number
第二个命令用
|

g/pattern/m$

m$ ....................... moves the pattern to the end of file