В моем vimrc у меня есть:

inoremap jj <ESC>

Используя последний macvim, я могу нажать jj, и я перейду из режима вставки в командный режим, но используя тот же vimrc с обычным vim в iterm2, он просто вставляет два 'j's ...

Есть ли настройка для vim или iterm, которую мне нужно установить, чтобы она работала?

В настоящее время я использую Yosemite, но проблема существовала и в Maverics. Кроме того, сопоставление клавиш также не работает в Terminal.app для OSX.

Дополнительные исследования, кажется, показывают, что vim не распознает двойное нажатие любой клавиши для меня. даже если я сделаю:

inoremap jj :hello

Я до сих пор не вижу, как это работает.

3 ответа3

0

Я нашел кое-что на github, говорящем о проблеме iTerm в Йосемити. Вот проблема, описанная через проблемы Homebrew.

Вы используете Yosemite? Правильно ли работают привязки клавиш в Терминале? Согласно этому вопросу, кажется, что-то с iTerm в Йосемити.

0

С терминала vim попробуйте запустить :imap . Это должно перечислить все отображения режима вставки. Отображается ли jj mapping? Если нет, попробуйте определить сопоставление вручную из этого vim и посмотреть, работает ли оно.

Я предполагаю, что ваш терминал работает с другой версией vim, которая читает vimrc из другого места. Попробуйте :echo $MYVIMRC из терминала vim и macvim, чтобы увидеть, ссылаются ли они на один и тот же файл. Если они отличаются, вы можете просто добавить отображение в vimrc, которое использует терминал vim. Тем не менее было бы лучше согласовать различия в версиях vim, чтобы вам не приходилось поддерживать два файла конфигурации.

0

Я нашел ответ! Некоторое время назад я добавил немного в свой vimrc, чтобы убрать задержку вставки:

if ! has('gui_running')
  set ttimeoutlen=10
  augroup FastEscape
    autocmd!
    au InsertEnter * set timeoutlen=0
    au InsertLeave * set timeoutlen=1000
  augroup END
endif

Я удалил это, и теперь JJ работает!

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .