Я написал несколько макросов в моем .vimrc для системы управления версиями, которую я использую (Perforce) (пожалуйста, не предлагайте плагин perforce для vim, я попробовал его и Мне это не нравится). Все они отлично работают, за исключением макроса возврата, который прерывается из-за подсказки подтверждения (что мне нужно, чтобы я не случайно сбрасывал свои изменения). В настоящее время она выглядит следующим образом:vim: команда карты с подтверждением на ключ
map <F8> :if confirm('Revert to original?', "&Yes\n&No", 1)==1 | !p4 revert <C-R>=expand("%:p")<CR><CR><CR>:edit<CR> | endif
Это приводит к Баш жаловаться, когда ВИМ пытается загрузить файл:
bin/bash: -c: line 0: syntax error near unexpected token `('
Глядя на буфер Баш видит, похоже, ошибка в том, что ВИМ отправляет его все после первой трубы, а не только часть, предназначенная для bash. Я попробовал несколько альтернатив, но я не могу заставить его работать. У меня есть, чтобы показать правильное диалоговое окно подтверждения, когда я удалял трубы и endif (используя сокращение, если), но затем vim жалуется после того, как пользователь дает ответ.
В решении есть небольшая ошибка, команда требует «p4 revert», а не «p4», но в целом формат работает. Спасибо –