【发布时间】:2013-01-10 22:13:24
【问题描述】:
我在我的 .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
这会导致 bash 在 vim 尝试加载文件时报错:
bin/bash: -c: line 0: syntax error near unexpected token `('
查看 bash 看到的缓冲区,错误似乎是 vim 在第一个管道之后发送所有内容,而不仅仅是用于 bash 的部分。我尝试了一些替代方案,但似乎无法使其发挥作用。当我删除管道和 endif(使用简写 if)时,我已经让它正确显示确认对话框,但是在用户给出响应后 vim 会抱怨。
【问题讨论】:
标签: vim