переназначить ключ по умолчанию в vim

Я слышал, что нет внутренней функции для вызова при наборе комбинации клавиш в vim, в отличие от emacs. Итак, я хочу переназначить Ctrl-A на ^ (например, nnoremap ‹ C-A> ^); однако исходная функция Ctrl-A также привлекательна, поэтому я хочу сопоставить ее с некоторыми другими клавишами, скажем, Ctrl-S. Как я могу сделать это с помощью vim?

Этот вопрос мог быть задан, но я искал вокруг и не нашел ничего близкого. Заранее спасибо.

PS: глупая война vim-emacs рассылает спам повсюду, и нигде я не могу найти реальное решение, которое заставляет желаемую функцию работать в другой среде.


person eafit    schedule 18.09.2014    source источник
comment
Пожалуйста, поясните свой пост. Вы имеете в виду, что хотите связать ключи в Emacs или в Vim? Какие функции/функции вы пытаетесь связать?   -  person Dan    schedule 18.09.2014
comment
независимо от того, какой редактор вы используете, постарайтесь привыкнуть к его клавишам. отображать ctrl-a -> ^ в vim не очень хорошая идея, вы можете отображать c-a a to do number+1 однако, когда вы находитесь на экране, tmux (с префиксом c-a), вам нужно нажать ctrl -a a a, чтобы сделать номер +1. И вам нужно отобразить ctrl-k, ctrl-f, ctrl-e,ctrl-w ...., а затем просто использовать emacs, надеюсь, вы не отобразите hjkl в emacs.   -  person Kent    schedule 18.09.2014
comment
о, говоря о путанице ключей, в большинстве случаев попытка скопировать что-то на Mac заканчивается закрытием этого окна :-|   -  person eafit    schedule 19.09.2014


Ответы (1)


Следует сделать следующее:

nnoremap <C-A> ^
nnoremap <C-A>A <C-A>

Это работает, потому что noremap говорит vim не применять никакого другого сопоставления, таким образом, правая часть второго сопоставления выше является значением по умолчанию <Ctrl-A>.

Вы заметите, что первое сопоставление выполняется с задержкой, потому что vim ждет некоторое время, чтобы позволить вам ввести второе сопоставление. Vim-FAQ 20.16 может помочь, если вас это беспокоит.

Но я бы не советовал менять сопоставление по умолчанию, потому что, как объяснено здесь, у vim есть много сопоставлений по умолчанию, которые могут показаться глупыми, когда вы начинаете использовать его. Когда вы поймете это лучше, вам будет трудно найти другой ключ для его сопоставления или привыкнуть к старым сопоставлениям/сопоставлениям по умолчанию.

person mMontu    schedule 18.09.2014
comment
у меня не заработало... у меня был vim 7.3. Кроме того, говоря об идеальном ключевом клише, ^ действительно недоступен по своей частоте; или я думаю, что я действительно должен привыкнуть к комбо 0w? - person eafit; 19.09.2014
comment
Он должен работать на vim 7.3. Без более подробной информации трудно оказать какую-либо помощь. - person mMontu; 19.09.2014
comment
даже если у меня просто nnoremap ‹C-S› ‹C-A› или nmap ‹C-S› ‹C-A›, ничего не происходит, когда я нажимаю C-S. Это единственная строка в .vimrc, а папки .vim нет. Я использую Mac, если это может быть проблемой. - person eafit; 19.09.2014
comment
Постарайтесь сузить свою проблему: она вызвана «откуда» или «до»? Например: попробуйте сопоставить ‹C-S› чему-то другому, как nnoremap <C-S> iabc, чтобы войти в режим вставки и вставить 'abc'; или попробуйте сопоставить какую-либо другую клавишу с ‹C-A›. Также проверьте Vim-FAQ в специальных записях 20.4 и 20.5. - person mMontu; 20.09.2014
comment
я думаю, что проблема в этом: во-первых, ‹C-A›a должен отображаться, а не ‹C-A›A, а во-вторых, ‹C-S› не означает Ctrl-S. Но в остальном ваше решение работает. и комментарий был довольно хорош для отладки. Спасибо! - person eafit; 20.09.2014