如何有条件地映射vim中的序列以运行外部程序,而不打印else子句

如何有条件地映射vim中的序列以运行外部程序,而不打印else子句,vim,Vim,我如何有条件地映射vim中的一个序列,以运行两个外部程序中的任何一个,从而使屏幕不被清除,以显示else子句 例如: :nmap <c-l> :if filereadable('Makefile')<CR>!make<CR>else<CR>!ls<CR>endif<CR> :nnoremap <expr> <c-m> filereadable('Makefile') ? ':make<CR&g

我如何有条件地映射
vim
中的一个序列,以运行两个外部程序中的任何一个,从而使屏幕不被清除,以显示
else
子句

例如:

:nmap <c-l> :if filereadable('Makefile')<CR>!make<CR>else<CR>!ls<CR>endif<CR>
:nnoremap <expr> <c-m> filereadable('Makefile') ? ':make<CR>' : ':!ls<CR>'
您可以使用表达式映射(
:help map expr

:nnoremap filereadable('Makefile')?:使“:”:!是的
注:

  • );它使映射不受重映射和递归的影响
  • 相同;目前还没有办法区分这两者;最好使用不同的键。有关更多信息,请参阅
您需要
map

e、 g:

nnoremap行('.')>=6?':!ls':':!序号10'
在您的示例中:

:nmap <c-l> :if filereadable('Makefile')<CR>!make<CR>else<CR>!ls<CR>endif<CR>
:nnoremap <expr> <c-m> filereadable('Makefile') ? ':make<CR>' : ':!ls<CR>'
:nnoremap filereadable('Makefile')?:使“:”:!是的
有关详细信息:

:h :map-<expr> 
:h:map-
请注意,如果映射
,则
输入也将跟随该映射。最好使用其他组合键,除非您打算这样做

:h :map-<expr>