在有关jVi及其解析 .vimrc 的能力的问题中,作者给出了一个复杂的 vim 绑定示例,他断言 jVi 无法处理该绑定:
inoremap hh <c-o>?\%<c-r>=line('.')<Return>l\({}\\|\[]\\|<>\\|><\\|()\\|""\\|''\\|><lt>\)?s+1<Return>
Run Code Online (Sandbox Code Playgroud)
我想知道它做了什么(主要是如何)。到目前为止,我得到:
l
可以这样使用想澄清一下?
+如您所指示Ctrl。O第一个?
确实开始向后搜索。
像这样的模式序列\%15l
将搜索限制在第 15 行,l
第一个之后的<Return>
就是该序列的结尾。该映射使用
Ctrl+ R、特殊=
寄存器 ( :help i_CTRL-R
) 和表达式line('.')
将当前行号插入到该序列中,从而防止搜索转到不同的行。
到最终字符的其余映射?
是一个相当直接的正则表达式,用于匹配多个字符序列中的任何一个。
Final?
表示模式的结束,该s+1
部分使光标位于匹配开始后 1 个字符 ( :help
search-offset
)。