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

Pet*_*ann 5 vim

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

vmap <F4> "ry :call Send_to_Screen(@r)<CR>
Run Code Online (Sandbox Code Playgroud)

它使用当前选择调用该函数.现在我想要定义另一个映射,它使用整个缓冲区的内容调用该函数,但我不能让它工作.我试过了

nmap <F5> maggVG"ry`a :call Send_to_Screen(@r)<CR> 
Run Code Online (Sandbox Code Playgroud)

但它不起作用.那么如何使用当前缓冲区的文本定义映射?

DrA*_*rAl 13

怎么样:

nmap <F5> :call Send_to_Screen(join(getline(1,'$'), "\n"))<CR>
Run Code Online (Sandbox Code Playgroud)

该函数getline()返回所选范围内的行列表(1是第一行,"$"是最后一行),函数join()将列表的内容与提供的分隔符(在本例中为"\n")连接在一起.看到:

:help getline()
:help join()
Run Code Online (Sandbox Code Playgroud)