vi:在不同的编辑器模式下使用键绑定(映射)

时间:2017-11-20 12:01:28

标签: vim vi

我想定义一个vi键绑定C-c,它将复制光标下的单词。目前的版本是:

nmap <C-c> <ESC>yaw<CR>

领先的ESC允许从插入或正常模式使用它,但是在使用后总是使编辑器在正常模式下着陆具有不良副作用。有没有办法对

的效果做些什么
nmap <C-c> if(editor.mode == NORMAL) yaw<CR> else <C-o>yaw<CR>

这将使用户处于她开始的相同模式吗?

1 个答案:

答案 0 :(得分:3)

  • 你创建的不是宏,它是vim中的映射。
  • <CR>末尾的rhs不是必需的

vim支持不同模式的映射,您可以创建映射:

nnoremap <C-c> ....  "only for normal mode
inoremap <C-c> ....  "only for insert mode

Vim有你想要的选项,<expr>映射。它通过评估您的表达式来获取rhs个键。但它不能与您的nmap <expr> ...一起使用因为,如果您处于insert模式,由于nmap,映射将不会应用。

我建议您阅读:h map-expr:map,以了解:map与模式之间的关系。