Vim. Как воспрeпятствовать перемещению курсора на одну позицию назад при переходе в командный режим по ESC


masterx - Posted on 10 Март 2010

В связи с тем что попытка переопределить функцию клавиши ESC напрочь убивает стрелки в режиме вставки, пришлось переписать совет. Итак, для начала: а удобна ли клавиша ESC? Авторы вот этой статьи предлагают слепо-быстро-печатникам избавится от ESC, заменив ее на ii или ;;:

" Press i to enter insert mode, and ii to exit.
:imap ii <Esc>

Иногда бывает не совсем в тему отпрыгивание курсора на одну позицию влево при переходе в командный режим. Если так, тогда:

:imap ii <Esc>l
0
Ваша оценка: Ничего
..

а смысл?

а в чем?

Спосибище )))

При включении эта фишка работает, зато перестает работать сразу передвижение по тексту в insert mode

Серьёзный таки заглюк. Ремепинг ескейпа странным образом изменяет значения стрелок.
Подвесим тогда следующее на Ctr-c:

imap <C-c> <ESC>l

Вроде работает без глюка. Кстати ESC не самая удобная клавиша если быстро печатать вслепую. Вот статья по теме:
http://vim.wikia.com/wiki/Avoid_the_escape_key

То что перестают работать стрелки можно объяснить.

$ cat
^[[A

Тут я нажал стрелку вверх. Тоесть терминал видит нажатие стрелки как три символа <esc>,[ и A.
Так что фунциональные клавиши скорей всего тоже перестанут работать.
Вывод: нефиг использовать стрелки в vim Ж:-PP

PS у меня есть для esc такие кейбиндинги, правда я их не использую

imap ;l <esc>
imap j;kl <esc>
imap j;lk <esc>
imap jk;l <esc>
imap jkl; <esc>
imap jl;k <esc>
imap jlk; <esc>
imap kjl; <esc>
imap kj;l <esc>
imap kl;j <esc>
imap klj; <esc>
imap k;lj <esc>
imap k;jl <esc>
imap ;lkj <esc>
imap ;ljk <esc>
imap ;klj <esc>
imap ;kjl <esc>
imap ;jlk <esc>
imap ;jkl <esc>
imap l;jk <esc>
imap l;kj <esc>
imap lkj; <esc>
imap ljk; <esc>
imap lk;j <esc>
imap lj;k <esc>

Идея в том что при слепом наборе пальцы правой руки лежат на этих клавишах, и пожно просто нажать их одновременно для перехода в командный режим. Может кому то пригодится Ж:-)

угу, глюк! Щас поломаю голову как исправить.

Для редактирования можно вместо (i) использовать (a) переводит на 1 позицию в перед. :-)

Отправить комментарий

Google Friend Connect (leave a quick comment)
loading...
Содержание этого поля является приватным и не предназначено к показу.