Vim: установить langmap = e; h сломает плагин супертэб - PullRequest
6 голосов
/ 25 октября 2011

Я новичок в Vim и пытаюсь настроить некоторые плагины.Пока что я установил патоген, пижаму и супертаб.Последнее, похоже, не работает;нажатие tab в режиме вставки просто записывает строку <Plug>SuperTabForward.

Проблема возникает только со следующей строкой в ​​моем vimrc (для лучшей навигации с использованием компоновки colemak):

set langmap=hjklneiHJKLNEI;kniejhlKNIEJHL

Без вышеуказанной строки это работает просто отлично.После дальнейших экспериментов я сузил его до set langmap=e;h.Эта единственная строка ломает супертаб.

Я слишком неопытен с Vim, чтобы иметь хоть малейшее представление о том, что происходит или как это исправить.Даже обходной путь будет интересен.

Ответы [ 2 ]

2 голосов
/ 17 января 2012

Я нашел обходной путь: отредактировав supertab.vim, заменив экземпляры <Plug>SuperTab на <P>P, что приводит к тому, что строки типа <Plug>SuperTabForward становятся <P>PForward.

Я считаю, что это работает, потому что эти строки больше не включают в себя буквы из set langmap=hjklneiHJKLNEI;kniejhlKNIEJHL.Несколько вопросов до сих пор не решены.Langmap прослушивается?Мне кажется, что существует возможность явно разрешить сопоставление, которое влияет только на команды:

When you are typing text in Insert mode the characters are
inserted directly.  When in command mode the 'langmap' option takes
care of translating these special characters to the original meaning
of the key.  This means you don't have to change the keyboard mode to
be able to execute Normal mode commands.

Нет никакого смысла в том, что когда-либо, что присутствие отображенного в langmap символа в imapstring, то есть отображение режима вставки , имеет значение.Если это произойдет, он случайным образом сломает любой плагин, такой как SuperTab, который использует длинные строки imap.Просто чтобы проиллюстрировать, как это странно, если я делаю imap no yes, необходимо написать jo, чтобы это сработало.Я понятия не имею, как работает логика, стоящая за этим.

0 голосов
/ 21 октября 2014

У меня была та же проблема, но этот обходной путь не подходил для моего случая, поэтому я разместил свой вопрос, и кто-то сделал патч, который исправляет это:

Плагин Vim langmap breaks (bépo)

https://groups.google.com/forum/#!msg/vim_dev/QnNwLWhJ744/1qNcD7d9OvgJ (см. Последнее сообщение)

Этот патч вводит новый параметр: langnoremap, который, если установлен, предотвращает влияние langmap на такие отображения.

Может потребоваться дополнительное тестирование, и он может быть не очень скоро включен в vim, но, похоже, он работает довольно хорошо!

...