如何在文件末尾粘贴a:g / foo / p搜索的结果?

时间:2011-10-17 20:44:43

标签: vim

1)我使用全局命令在文件中搜索foo:g:

:g/foo/p

我希望将结果粘贴到文件的末尾。我该怎么办?

2)同样的问题(或者是?)和echo语句的结果:

:echo IndexByWord(['word1', 'word2', 'word3', etc])

(关于此功能,请参阅:Vim : how to index a plain text file?

提前致谢

3 个答案:

答案 0 :(得分:7)

我不知道(2),但对于(1),将其更改为:g/foo/t$。这会将(t)行复制到最后一个可寻址行($)。

答案 1 :(得分:4)

您可以将消息重定向到注册表

:redi @"
:g/foo/p
:redi END
:$pu

答案 2 :(得分:1)

2):call append('$', split(IndexByWord(['foo', 'bar']), '\n'))

:h append(

append({lnum}, {expr})                  *append()*
        When {expr} is a |List|: Append each item of the |List| as a
        text line below line {lnum} in the current buffer.

:h split(

split({expr} [, {pattern} [, {keepempty}]])         *split()*
        Make a |List| out of {expr}.

使用'$'作为lnum等于缓冲区中的最后一行。

您需要使用split(),因为您引用的函数IndexByWord()返回一个字符串。在我看来,您可能希望更改IndexByWord()以返回列表。

如果在IndexByWord()中更改此行:

return join(result_list, "\n")

return result_list

然后添加更简单:

:call append('$', IndexByWord(['foo', 'bar']))