【问题标题】:How to get the content of the current buffer in vim command mode?vim命令模式下如何获取当前缓冲区的内容?
【发布时间】:2010-08-17 12:23:40
【问题描述】:

有一个 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> 

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

【问题讨论】:

    标签: vim


    【解决方案1】:

    怎么样:

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

    函数getline()返回所选范围内的行列表(1是第一行,“$”是最后一行),函数join()将列表的内容与提供的分隔符(“ \n" 在这种情况下)。见:

    :help getline()
    :help join()
    

    【讨论】:

    • vimscript中的单引号和双引号有什么区别吗?
    • @qed 单引号不会将 \n 解释为换行符,而是文字 \n
    猜你喜欢
    • 2022-07-29
    • 1970-01-01
    • 2012-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多