53

我遇到了一些我不明白的语法用法:

第一个在 :help 映射中:

:map <F2> a<C-R>=strftime("%c")<CR><Esc>

这个序列确实将 strftime 的值插入缓冲区,尽管我不明白如何。换成不同的东西会破坏它。

另一个是在 wiki页面上,它描述了如何使omnicompletion 弹出菜单正常工作:

inoremap <silent> <Esc> <C-r>=pumvisible() ? "\<C-y>" : "\<Esc>"<CR>

这里也一样。

任何人都可以解释这个“ <C-r>=”的东西是如何工作的吗?...

4

2 回答 2

71

<C-r>=, 或Ctrl+R=用于在光标处插入表达式的结果。

在编辑 CSS 以插入值时,我经常使用它:

width: <C-r>=147-33<CR>px;
width: 114px;

编辑

<C-r>, 不带=, 允许您在保持插入模式时在光标处插入任何寄存器的内容:<C-r>+例如,插入我的系统剪贴板的内容。见:help i_ctrl_r

=是“表达式寄存器”。见:help "=

结束编辑

于 2012-06-02T14:32:13.747 回答
40

<C-r>就像在键盘上做 CTRL+R 一样。<CR>就像点击进入。您可以通过执行找到完整列表:help key-notation

于 2012-06-02T12:55:53.547 回答