1)我使用全局命令在文件中搜索foo:g:
:g/foo/p
我希望将结果粘贴到文件的末尾。我该怎么办?
2)同样的问题(或者是?)和echo语句的结果:
:echo IndexByWord(['word1', 'word2', 'word3', etc])
(关于此功能,请参阅:Vim : how to index a plain text file?)
提前致谢
答案 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']))