Автоматическое закрытие фигурных кавычек в Vim - PullRequest
3 голосов
/ 08 июня 2011

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

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

Я использую Vim 7.3 в Arch Linux и метод ввода uim 1.7.0; Я вставляю ‘и’ через ярлык, определенный в .XCompose. Переназначение отлично работает для других моих сочетаний клавиш, например ¡! или ¿?.

Ответы [ 3 ]

4 голосов
/ 08 июня 2011

Это очень похоже на ошибку vim, в частности, ошибку с внутренними escape-последовательностями vim, которые начинаются с \x80 (второй байт рассматриваемого символа - \x80) и кодируют различные вещи, такие как NULL, функциональные клавиши или \x80 сам байт. Я предполагаю, что вы можете покопаться в исходном коде vim и найти там, как экранируется этот байт, и попытаться заменить последний байт на этот управляющий код или подождать, пока это не будет исправлено (хотя я не ожидаю, что исправление произойдет в ближайшее время: вот цитата из todo.txt

UTF-8: отображение многобайтового ключа, где второй байт равен 0x80, не отображается работать. (Тони Мечелинк, 2 марта 2007 г.)

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

3 голосов
/ 08 июня 2011

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

inoremap ' ''<left>
0 голосов
/ 08 июня 2011

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

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

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

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

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

...