如何在VIM中编写条件映射?

ami*_*min 5 vim key-bindings

我想要做的nnoremap Q :q!<cr>nnnoremap Q :bd<CR>,我怎么可以混合这两种绑定?
我理想的是要使Q绑定足够聪明,以便知道我们何时处于缓冲区中,以及何时这是窗口中的最后一个缓冲区.

Ken*_*ent 8

map <expr>(:h map-<expr>)是你的朋友.

nnoremap <expr> Q yourConditionExpression ? ':q!<cr>':':bd<cr>'
Run Code Online (Sandbox Code Playgroud)

在上面

yourConditionExpression
Run Code Online (Sandbox Code Playgroud)

可以是布尔表达式Eg 3>0或函数返回布尔值.你可以把检查逻辑放在那里.