当我拉入寄存器时,我经常打错"x
语法,所以我想确认它用于拉出文本的哪个寄存器。
例如,如果我要键入,我的理想输出"x3yy
将是“3 行被拉入 x”,而不是当前的“3 行被拉入”。是否可以以某种方式修改此报告?理想情况下,它也适用于删除等。
当我拉入寄存器时,我经常打错"x
语法,所以我想确认它用于拉出文本的哪个寄存器。
例如,如果我要键入,我的理想输出"x3yy
将是“3 行被拉入 x”,而不是当前的“3 行被拉入”。是否可以以某种方式修改此报告?理想情况下,它也适用于删除等。
这已在最近的 Vim 版本中得到解决,从版本 8.0.0724 开始:用于 yanking 的消息不指示 register。
升级后(等待操作系统的软件包可用,或自己编译 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
如果您有兴趣,我已将此片段作为插件提供。