ошибка при попытке вернуться в обычный режим в окне командной строки vim

Когда я открываю окно командной строки для редактирования сложной командной строки в vim, я ожидаю, что смогу переходить назад и вперед в режиме вставки/обычном режиме и обратно для редактирования, как и в любом другом буфере. (В этом смысл окна командной строки, верно? Чтобы я мог это сделать?) Но вместо этого, когда я нажимаю ESC, чтобы вернуться в нормальный режим, я получаю следующее:

Error detected while processing function <SNR>15_CloseStackPop:
line    3:
E11: Invalid in command-line window; <CR> executes, CTRL-C quits:         pclose

Я в игре, чтобы попытаться понять это, но у меня не так много, чтобы продолжать. vim --noplugin похоже, такой проблемы нет, так что это явно один из плагинов, которые я загрузил, но какой именно? У меня их довольно много. "строка 3" какого файла? Что означает "Е11"?


person Glyph    schedule 17.01.2011    source источник


Ответы (2)


Оказывается, это была ошибка в плагине autoclose. Я удалил ссылку на pclose из функции <SID>CloseStackPop, и теперь Escape в режиме командной строки работает нормально.

Если у кого-то еще есть эта проблема: функции в плагинах могут быть определены с помощью <SID>, который (в исходном коде) выглядит как <SID>Foo, но для Vim выглядит как <SNR>4321_Foo. Я искал 15_CloseStackPop, предполагая, что <SNR> был чем-то особенным, но когда я только что сделал grep CloseStackPop -r ~/.vim/plugins, сразу же появился оскорбительный плагин.

person Glyph    schedule 17.01.2011
comment
Вероятно, вы захотите изменить pclose на silent! pclose вместо того, чтобы удалять его. Он отвечает за закрытие окна предварительного просмотра после завершения. У меня была такая же ошибка из-за того, что я делал то же самое: stackoverflow.com/q/11733388/79125 - person idbrii; 31.07.2012

Попробуйте Ctrl+C как синоним Escape. Также проверьте .vimrc для плагинов. Это не стандартное поведение для vi. На вашем месте я бы не использовал никаких плагинов, если бы не был абсолютно уверен, что они делают. Возможно, начните с нуля и переустановите те, в которых вы полностью уверены.

person ktm5124    schedule 17.01.2011
comment
Ctrl+C не работает как синоним Escape в этом контексте; Escape возвращается в обычный режим, Ctrl+C возвращается в режим cmdline (в отличие от cmdwin). - person Glyph; 17.01.2011