Vim中的`relativenumber` - 在“动作” - “数字” - “对象”操作中来回切换

时间:2014-01-21 15:04:01

标签: vim

我一直在使用vim一段时间,但仍然不熟悉脚本语言。

我想实现这个小小部件,只在我最需要的时候调用relativenumber,这就是当我执行“动作” - “数字” - “对象”操作时。

例如,当我想在文本中删除4行时,按 d 4 d 。只有当我知道我要删除的4行时才很方便。有时,当数字变大并且:set nu没有真正提供太多帮助时,很难保持计数。

所以我想用它做的是:当我按下 d “动作”时,调用:set relativenumber。然后我继续按 4 ,只有当我通过按下组合中的最后一个键传递“对象”时,无论是 d 还是 w l 或其他什么,它会调用:set norelativenumber,转回常规行号。

如何在.vimrc中实现该功能?或者是否已经有一个我没有找到的插件?

1 个答案:

答案 0 :(得分:0)

不是那么容易,因为您将要更改vims默认映射并且必须处理递归。 以下列出了您需要考虑的事项:

  • 编写一个切换relativenumber / norelativenumber的函数。
  • 重新映射应该首先使用它来调用函数的所有命令,然后
  • 进入操作员挂起模式以捕获count
  • 之后的第二个命令
  • 在执行此操作时避免递归

这是一个起点,即切换功能:

function! ToggleRN()
  if &rnu==1
    set nornu
  elseif &rnu==0
    set rnu
  endif
endfunction

注意&可以使用Vim的内部设置,如变量。由于relativenumber是一个布尔变量,因此它是1或0。

此后的一切都开始变得复杂。祝你好运!

但是一直使用set relativenumber有什么问题?