我已经在我的 .vimrc 中为我正在使用的版本控制系统(Perforce)编写了一些宏(请不要建议 vim 的 perforce 插件,我试过了,但我不喜欢它)。除了revert 宏,它们都工作正常,它由于确认提示而中断(我需要它,所以我不会不小心把我的更改拿掉)。它目前看起来像这样:
map <F8> :if confirm('Revert to original?', "&Yes\n&No", 1)==1 | !p4 revert <C-R>=expand("%:p")<CR><CR><CR>:edit<CR> | endif
当 vim 尝试加载文件时,这会导致 bash 抱怨:
bin/bash: -c: line 0: syntax error near unexpected token `('
查看 bash 看到的缓冲区,看起来错误是 vim 在第一个管道之后发送所有内容,而不仅仅是用于 bash 的部分。我尝试了一些替代方案,但似乎无法使其发挥作用。当我删除管道和 endif(使用简写 if)时,我已经让它正确显示确认对话框,但是在用户给出响应后 vim 会抱怨。