відображення jj для втечі в macvim працює, але не в терміналі vim


0

У своєму vimrc я маю:

inoremap jj <ESC>

Використовуючи останній macvim, я можу натиснути jj, і я перейду з вставки в командний режим, але використовуючи той самий vimrc із звичайним vim в iterm2, він просто вставляє два 'j' ...

Чи є установка для vim чи iterm, яку мені потрібно встановити, щоб вона працювала?

Зараз я використовую Yosemite, але проблема існувала і в Maverics. Також ключове відображення не працює в Osx's Terminal.app.

Більше досліджень, схоже, показує, що vim isnt розпізнає подвійне натискання будь-якої клавіші для мене. навіть якщо я роблю:

inoremap jj :hello

Я все ще не бачу, як це працює.

Відповіді:


0

Я знайшов дещо - що на GitHub говорити про проблему Iterm в Йосеміті. Ось питання, описане через випуски Homebrew .

Ви використовуєте Yosemite? Чи правильно спрацьовують ключі в Терміналі? Відповідно до цього питання, схоже, щось із iTerm в Yosemite.


Вибачте, я не вказав! Я зараз використовую йосеміт, Але проблема існувала і в мавериках, також проблема існує і в терміналі osx
Kev

0

З терміналу vim спробуйте запустити :imap. Тут слід перелічити всі відображення режиму вставки. Чи jjвідображається відображення? Якщо ні, спробуйте визначити відображення вручну з цього vim і переконатися, що воно працює.

Я думаю, що ваш термінал працює з іншою версією vim, яка читає vimrc з іншого місця. Спробуйте :echo $MYVIMRCяк термінал vim, так і macvim, щоб дізнатися, чи відносяться вони до одного файлу. Якщо вони різні, ви можете просто додати відображення до vimrc, який використовує термінальний vim. Однак було б краще вирівняти відмінності версій vim, щоб вам не довелося підтримувати два файли конфігурації.


Якщо я запускаю imp, він показує, що відображається клавіша, я підтвердив, що macvim використовує той самий vimrc, що і термінальний vim
Kev

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 працює!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.