这是什么 Vim 魔法?

这是什么 Vim 魔法?

在关于以及它解析 .vimrc 的能力,作者给出了一个复杂的 vim 绑定的例子,他断言 jVi 无法处理这个绑定:

inoremap hh <c-o>?\%<c-r>=line('.')<Return>l\({}\\|\[]\\|<>\\|><\\|()\\|""\\|''\\|><lt>\)?s+1<Return>

我想知道它能做什么(主要是如何做)。到目前为止我得到了:

  • <co> :在普通模式下执行一条命令并返回到插入模式
  • ?/%n :向后查找具有指定十进制/十六进制代码的字符
    • 在这里插入行号有什么意义?
  • 最后一部分查找特定的括号组合并将光标放在那里
    • 我不明白怎么l能这样用

想澄清一下吗?

答案1

+就像您指出的那样。第一个Ctrl确实启动了向后搜索。O?

类似这样的模式序列\%15l将搜索限制到第 15 行,l第一个之后<Return>是此类序列的结尾。映射使用 Ctrl+ R、特殊=寄存器 ( :help i_CTRL-R) 和表达式line('.')将当前行号插入该序列,从而防止搜索转到其他行。

到最后一个字符为止的其余映射?是一个相当直接的正则表达式,以匹配任意数量的字符序列。

最后?表示模式的结束,该s+1部分使光标定位在匹配开始后 1 个字符处 ( :help search-offset)。

相关内容