2011-10-17 27 views

回答

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']))

+0

感谢你和Zyx问题解决。再次感谢 – ThG

7

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

+0

谢谢ÿ ou,它工作。顺便说一句,我试过它的问题#2(:echo IndexByWord(['foo'])| t $),但当然失败惨败。 – ThG

4

可以将消息重定向到寄存器

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

谢谢,它适用于问题#1,但我无法弄清楚如何使它适用于问题#2。再次感谢。 – ThG

+0

@ThG:只需用#:echo IndexByWord(['word1','word2','word3'等])替换':g/foo/p'。有关重定向的更多信息,请参阅':h:redi' –

+0

谢谢,但是我只是试过了,它只是在文件末尾创建一个新的空白行。为什么? (我的是一个纯文本文件)。再次感谢 – ThG

相关问题