我有一个基于简单键映射调用的函数
function! JumpToDefinition()
let filetype=&ft
if filetype == 'coffee'
exe '<C-]>'
endif
endfunction
Run Code Online (Sandbox Code Playgroud)
当我手动执行此操作<C-]>时,但当我尝试"exe"它上面时,我得到一个"尾随空格"错误.
如何在我上面的独立函数中调用它?
请注意,:execute 将结果表达式作为Ex命令运行,这可能不是您想要的,因为没有 <C-]>Ex命令.你应该使用:normal.
但是,为了能够使用这些"特殊键"而不是它们所代表的字符,你必须注意三件事:
\<xxx>.检查帮助expr-string.:normal 接受命令,而不是表达式 :execute因此,从上面的第1和第2项我们知道"\<C-]>"应该使用,但你不能把它放在前面 :normal.好吧,你可以,但它会被执行为"引用,反斜杠,C,......".解决方案是回到使用
:execute,这次构建"\<xxx>"前面有可见字符串的字符串:normal,它将扩展为实际字符并执行.
:exe "norm \<C-]>"
Run Code Online (Sandbox Code Playgroud)