Vim переназначение странности - PullRequest
1 голос
/ 17 января 2010

Когда я начинаю с пустого .vimrc в ~ и добавляю imap jj <esc> к нему, сначала все работает нормально (т.е. ввод jj выходит из режима вставки -> нормальный режим). Но по мере того, как я добавляю больше к своему .vimrc, в конце концов, введя jj, вы пропустите курсор вперед на некотором, казалось бы, случайном коротком расстоянии (пару слов или пару строк) в дополнение к входу в обычный режим. Я не связывал это с какой-то конкретной вещью, которую я добавил в .vimrc - он просто в какой-то момент переходит от правильной работы к неисправности. Затем, если я удалю файл .vimmrc, начнем все заново с нового .vimrc, используя только это сопоставление, странные скачки исчезнут.

Есть какие-нибудь подсказки о том, что происходит?

редактировать:

мой полный ~ / .vimrc

set nocompatible
inoremap jj <esc>

Вот и все. Я переименовал / etc / vim / vimrc & / usr / share / vim / vimrc в vimrc.0 и аналогичным образом переместил ~ / plugins & ~ / ftplugins.

:imap & :inoremap оба показывают только i jj * <Esc>

Ответы [ 3 ]

7 голосов
/ 09 января 2012

Я знаю, что это было здесь в течение долгого времени, но все равно идет.

У вас нет никаких комментариев после сопоставления для "jj"? Как:

ino jj <Esc> " map jj to escape key

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

Если это так, я бы переместил комментарий над отображением, чтобы vim не думал, что вы печатаете escape, за которым следует куча пробелов или табуляций (которые будут перемещать ваш курсор вперед, казалось бы, случайным образом в зависимости от того, где вы находитесь) .

" map jj to escape key
ino jj <Esc>

Чтобы проверить, действительно ли проблема в форматировании вашего файла vimrc, вы можете просто набрать его в приглашении ex и посмотреть, исправит ли это проблему для текущего сеанса.

ino jj <Esc>

Если после этого ваше «jj» отображение работает так, как ожидалось, то это, вероятно, какой-то вариант того, что я описываю. Чтобы проверить форматирование вашего файла vimrc, выполните поиск пробельных символов, введя приведенный ниже код в командной строке ex (set hlsearch включает подсветку и / \ s ищет пробельные символы. Канал выполняет их последовательно.).

set hlsearch | /\s

На заметку. Один хороший трюк, который вы можете сделать, это следовать за отображением с одним пробелом и комментарием. Это приведет вас к позиции, которую вы редактировали.

ino jj <Esc> " map jj to escape key

Одна из жалоб начинающих пользователей заключается в том, что им не нравится, как позиция перемещается к персонажу слева от того места, где они редактируют, когда они нажимают клавишу escape. Например, если вы находитесь в режиме вставки, а курсор находится между символами «h» и «r», например:

one two th|ree

И вы нажмете escape, и вы окажетесь в обычном режиме над буквой "h". Трюк с пробелом после сопоставления поместит вас поверх буквы "r".

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

Возможно, вы захотите использовать inoremap вместо imap. Это предотвратит дальнейшую замену вашего отображения другими отображениями. Из vim wikia :

"Для простоты мы покажем :imap, но осторожные Vimmers имеют привычку использовать :inoremap, который не пытается интерпретировать результат отображения (с помощью команды :imap результат сканируется, чтобы увидеть содержит ли оно другое сопоставление). "

Однако, если другое отображение содержит j, оно все равно может появиться даже при использовании inoremap.

1 голос
/ 18 января 2010

Еще одна вещь, которую следует учитывать при отладке, - это наличие глобального файла vimrc, часто в /etc/vimrc

Возможно, у вас есть сопоставление в глобальном файле, которое конфликтует с вашим пользователем ~/.vimrc

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...