Автоматическое закрытие фигурных кавычек в Vim

Я хотел бы настроить Vim для автоматического закрытия пары 'и (курсивные кавычки).

Я попытался настроить все пять подключаемых модулей, которые я мог найти (два автоклиза, окружение, closepairs и delimitmate), но без успеха. Я даже не могу вообще переназначить (с помощью :imap ‘ ‘’ или аналогичного).

Я использую 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, не отображается работать. (Тони Мечелинк, 2007 2 марта)

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


Избегайте рекурсии с помощью

inoremap ' ''


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

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

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

inoremap ' <esc>:call CloseQuotes()</esc>

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

licensed under cc by-sa 3.0 with attribution.