1

我有一个基于简单键映射调用的函数

function! JumpToDefinition()
    let filetype=&ft
    if filetype == 'coffee'
        exe '<C-]>'
    endif
endfunction

这在我手动执行时有效,<C-]>但是当我尝试在上面“执行”它时,我得到一个“尾随空格”错误。

如何像上面那样在独立函数中调用它?

4

1 回答 1

5

请注意,:execute 将生成的表达式作为 Ex 命令运行,这可能不是您想要的,因为没有 <C-]>Ex 命令。你应该使用:normal.

但是,要能够使用这些“特殊键”,而不是它们所代表的字符,您必须注意三件事:

  1. 表示它们的正确方法是使用反斜杠\<xxx>。检查帮助expr-string
  2. 使用双引号,而不是单引号
  3. :normal接受命令,而不是像:execute

因此,从上面的第 1 项和第 2 项我们知道"\<C-]>"应该使用 ,但您不能将其放在 :normal. 好吧,你可以,但它会被执行为“引号、反斜杠、C、...”。解决方案是回到 using :execute,这次构建带有可见"\<xxx>"前面的字符串:normal,将扩展为实际字符并执行。

:exe "norm \<C-]>"
于 2013-05-08T14:22:29.327 回答