Автоматическое закрытие фигурных кавычек в Vim
Я хотел бы настроить Vim для автоматического закрытия пары 'и' (фигурные кавычки).
Я пытался настроить все пять плагинов, которые я смог найти (два автокла, окружения, близкие пары и разделитель), но безуспешно. Я, кажется, даже не могу переназначить вообще (с :imap ‘ ‘’<left>
или похожие).
Я использую Vim 7.3 в Arch Linux и метод ввода uim 1.7.0; Я вставляю 'и' через ярлык, определенный в.XCompose. Переназначение отлично работает для других моих сочетаний клавиш, например ¡! или же?.
3 ответа
Это очень похоже на ошибку vim, в частности, ошибка с внутренними escape-последовательностями vim, которые начинаются с \x80
(второй байт рассматриваемого символа \x80
) и кодировать различные вещи, такие как NULL, функциональные клавиши или \x80
сам байт. Я предполагаю, что вы можете покопаться в исходном коде vim и найти там, как этот байт экранирован, и попытаться заменить последний байт ‘
с этим escape-кодом или подождите, пока это не будет исправлено (хотя я не ожидаю, что исправление придет в ближайшее время: вот цитата из todo.txt
UTF-8: отображение многобайтового ключа, где второй байт 0x80, похоже, не работает. (Тони Мечелинк, 2 марта 2007 г.)
Итак, вы видите, что проблема известна в течение четырех лет и еще не устранена.)
Вы можете достичь этого с помощью небольшой функции:
function! CloseQuotes()
normal! i''
startinsert
endfunction
а затем сопоставить его с '
следующим образом:
inoremap ' <ESC>:call CloseQuotes()<CR>
Важным является восклицательный знак в normal!
, что предотвращает рекурсивное отображение.