何时在vim中映射<cword>命令时需要使用expand?

时间:2017-01-27 23:56:35

标签: vim

我可以创建一个映射来搜索光标下的单词,如下所示:

noremap <leader>/ :grep <cword> **<cr>

为什么联合映射这样的映射(我怀疑这是一个特定的联合问题)需要<C-r>=expand('<cword>')<CR><c-r><c-w>而不是<cword>

nnoremap g/ :Unite -input=<C-r>=expand('<cword>')<CR> tag<CR>

1 个答案:

答案 0 :(得分:1)

%<cword>等特殊字符在:help cmdline-special下解释。

  

在Ex命令中,在可以使用文件名的位置,以下内容   人物有特殊的意义。这些也可以用在表达式中   函数expand()

这解释了为什么:edit <cword>有效,但:echo "<cword>"没有:后者不带文件名。 :grep只是模糊地指[arguments],但其中有些必须是文件。 :Unite命令是通用的(和自定义的),因此您需要在那里使用expand()。如有疑问,请试一试: - )