在vim命令模式下如何获取当前缓冲区的内容?

5

有一个vim函数Send_to_Screen(text),可以将一些文本发送到控制台屏幕会话中。我有一个映射

vmap <F4> "ry :call Send_to_Screen(@r)<CR>

这段代码调用了当前选中内容的函数。现在我想定义另一个映射,该映射将使用整个缓冲区的内容调用该函数,但我无法使其工作。我尝试过:

nmap <F5> maggVG"ry`a :call Send_to_Screen(@r)<CR> 

但它不起作用。那么我该如何定义与当前缓冲区文本的映射关系?
1个回答

13

如何尝试这样做:

nmap <F5> :call Send_to_Screen(join(getline(1,'$'), "\n"))<CR>

getline()函数返回选择范围内的行列表(1是第一行,"$"是最后一行),join()函数将列表内容用提供的分隔符(在本例中为"\n")连接在一起。参见:

:help getline()
:help join()

在vimscript中,单引号和双引号有什么区别吗? - qed
@qed 单引号不会将\n解释为换行符,而是作为字面意义的\n - falstro

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接