打印关于Vim报告中使用的寄存器的信息

问题描述:

当我进入寄存器时,我经常错误输入"x语法,所以我想确认它使用哪个寄存器来抽取文本。打印关于Vim报告中使用的寄存器的信息

例如,如果我输入"x3yy,我的理想输出将是“3行被抽出到x中”而不是当前的“3行被抽出”。是否有可能以某种方式修改此报告?理想情况下,它也可以用于删除等。

在最近的Vim版本中已经解决了这个问题,从版本8.0.0724开始:对于yanking的消息并不表示寄存器

一旦你升级(无论是等待,直到一个包为您的操作系统是可用的,或编译的Vim自己),对例如"a4yy将消息:

4 lines yanked into "a 

此功能被添加到修补程序后8.0.0724(Ingo Karkat报告它的荣誉)。

Neovim截至目前还没有合并这个补丁。然而,它实现了TextYankPost,它允许你破解类似的行为,因为它提供了操作类型,使用的寄存器和复制到寄存器的内容。

考虑到这,下面的代码片段会做你所要求的:

function! s:better_operator_message() 
    let number = len(v:event['regcontents']) 

    if v:event['operator'] == 'c' || v:event['operator'] == 'd' 
    let message = number . ' fewer lines' 
    elseif v:event['operator'] == 'y' 
    let message = number . ' lines yanked' 
    else 
    return 
    endif 

    if v:event['regname'] != '' 
    let message = message . ' into register ' . v:event['regname'] 
    endif 

    echom message 
endfunction 

set report=10000000000 
augroup better_operator_message 
    autocmd! 
    autocmd TextYankPost * call <sid>better_operator_message() 
augroup end 

我做了这个片段可作为plugin,如果你有兴趣。

+0

我见。我认为它可能是不会被支持的情况。我将把它添加到切换到Neovim的可能的好处列表中;)谢谢! –