Автоматическое закрытие фигурных кавычек в 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 г.)

Итак, вы видите, что проблема известна в течение четырех лет и еще не устранена.)

Избегайте рекурсии с

inoremap ' ''<left>

Вы можете достичь этого с помощью небольшой функции:

function! CloseQuotes()
    normal! i'' 
    startinsert
endfunction

а затем сопоставить его с ' следующим образом:

inoremap ' <ESC>:call CloseQuotes()<CR>

Важным является восклицательный знак в normal!, что предотвращает рекурсивное отображение.

Другие вопросы по тегам