如何vim有条件地映射序列以运行两个外部程序中的任何一个,以便屏幕不会被清除以显示该else子句?
例如:
:nmap <c-l> :if filereadable('Makefile')<CR>!make<CR>else<CR>!ls<CR>endif<CR>
Run Code Online (Sandbox Code Playgroud)
ctrl+ m执行make但随后清除屏幕并在其底部打印以下内容:
: else
: !ls
: endif
Press ENTER or type command to continue
Run Code Online (Sandbox Code Playgroud)
你可以使用表达式mapping(:help map-expr)
:nnoremap <expr> <c-m> filereadable('Makefile') ? ':make<CR>' : ':!ls<CR>'
Run Code Online (Sandbox Code Playgroud)
笔记:
:noremap ; 它使映射不受重映射和递归的影响.<C-m>是一样的<CR>; 目前没有办法区分这两者; 更好地使用不同的键.有关更多信息,请参阅此答案.| 归档时间: |
|
| 查看次数: |
1055 次 |
| 最近记录: |