Vim: установить langmap=e;h сломает плагин супертаб
Я новичок в Vim и пытаюсь настроить некоторые плагины. Пока что я установил патоген, пижаму и супертаб. Последнее, похоже, не работает; прессование tab
в то время как в режиме вставки просто пишет строку <Plug>SuperTabForward
,
Проблема возникает только со следующей строкой в моем vimrc (для лучшей навигации, используя раскладку Colemak):
set langmap=hjklneiHJKLNEI;kniejhlKNIEJHL
Без вышеупомянутой линии это работает просто отлично. После дальнейших экспериментов я сузил его до set langmap=e;h
, Эта единственная строка нарушает супертаблицу.
Я слишком неопытен с Vim, чтобы иметь хоть малейшее представление о том, что происходит или как это исправить. Даже обходной путь будет интересен.
2 ответа
Я нашел обходной путь: редактирование 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 символа в imap
Строка, которая является отображением режима вставки, имеет значение. Если это произойдет, он случайным образом сломает любой плагин, такой как SuperTab, который использует долго imap
строки. Просто чтобы показать, как это странно, если я делаю imap no yes
, пишу jo
необходимо заставить его срабатывать. Я понятия не имею, как работает логика, стоящая за этим.
У меня была такая же проблема, но этот обходной путь не подходил для моего случая, поэтому я опубликовал свой вопрос, и кто-то сделал патч, который исправляет это:
Плагин Vim langmap breaks (бепо)
https://groups.google.com/forum/ (см. последнее сообщение)
Этот патч вводит новую настройку: langnoremap
который, когда установлен, предотвращает langmap
от воздействия на такие отображения.
Может потребоваться дополнительное тестирование и, возможно, он не будет включен в vim очень скоро, но, похоже, он работает довольно хорошо!