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

时间:2017-09-25 20:42:08

标签: vim vim-registers

当我进入寄存器时,我常常错误地输入"x语法,所以我想确认它用来抽取文本的寄存器。

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

2 个答案:

答案 0 :(得分:3)

最近的Vim版本已经解决了这一问题,从版本8.0.0724开始: yanking的消息并不表示注册

升级后(通过等待操作系统的软件包可用,或自行编译Vim),例如"a4yy上的消息将为:

4 lines yanked into "a

答案 1 :(得分:2)

此功能已添加到后补丁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,以防您感兴趣。