vim - 在vim中映射<cword>命令时什么时候需要使用expand?

标签 vim

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

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

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

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

最佳答案

%这样的特殊字符和<cword>:help cmdline-special下进行了解释.

In Ex commands, at places where a file name can be used, the following characters have a special meaning. These can also be used in the expression function expand().

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

关于vim - 在vim中映射<cword>命令时什么时候需要使用expand?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41904905/

相关文章:

javascript - 在 VIM 的脚本标签内正确缩进 javascript

c++ - 程序找不到回车符或换行符。返回超出范围

vim - 在 VIM 中重新映射 'd' 键时消除延迟

Vim 滚动而不改变光标在屏幕上的位置

vim - 我可以在 Vim 中使用多行状态行吗?

vim - 从 tmux 内的 vim 复制到剪贴板

python - 如何在 Windows 10 上新安装的 GVIM 8.2 中启用 python?

vim - VIM 中的自定义弹出菜单

session - 创建/保存 Vim 布局

python - 在 vim 的 python 文档字符串中突出显示 ReST