отображение JJ для выхода в Macvim работает, но не в терминале VIM

599
Kev

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

inoremap jj <ESC> 

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

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

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

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

inoremap jj :hello 

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

0

3 ответа на вопрос

0
Corey W

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

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

Извините, я не уточнил! В настоящее время я использую yosemite, НО проблема также существует в maverics, а также проблема существует в терминале OSX Kev 9 лет назад 0
0
Pak

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

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

Если я запускаю imap, он показывает раскладку клавиш, я подтверждаю, что macvim использует тот же vimrc, что и терминал vim Kev 9 лет назад 0
0
Kev

I have found the answer! A while back I added a small bit into my vimrc to remove the insert leave delay:

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

I removed this and now jj works!