Карта не можетв Vim - PullRequest
       24

Карта не можетв Vim

5 голосов
/ 22 марта 2011

У меня появился первый Mac за выходные, и я пытаюсь привыкнуть. Эта строка в моем vimrc, которая работала на моих окнах, не будет работать с vim через iTerm

inoremap <S-CR> <Esc>

Я хочу, чтобы Shift-Enter действовал как Escape в режиме вставки. Я пытался использовать Enter и Return, но для этого мне нужно использовать клавишу Fn на моем Macbook, которая так же раздражает, как и клавиша ESC.

Ценю помощь!

Ответы [ 3 ]

15 голосов
/ 25 августа 2012

Проблема здесь в эмуляции терминала.Большинство терминалов не могут различить непечатаемые клавиши [1] и те клавиши, которые объединены с клавишами-модификаторами.

Однако вы все равно можете заставить работать желаемую комбинацию, если ваше терминальное приложение имеет возможность переназначать комбинации клавиш (как iTerm2, например, делает).Сопоставьте комбинацию приложения терминала с каким-нибудь символом Unicode, который вы никогда не будете использовать, затем сопоставьте этот ключ в Vim с желаемым эффектом, и вы можете обойти это ограничение.

Для этого примера в iTerm2 откройте ключиПанель настроек, добавьте глобальную комбинацию клавиш, введите shift и return, дайте ей действие Set Text, а затем поставьте ✠ (мальтийский крест, но вы можете использовать любой случайный символ Юникода, который вряд ли будет использоваться) в качестве его значения.,В вашем .vimrc добавьте следующие строки:

" Map ✠ (U+2720) to <Esc> as <S-CR> is mapped to ✠ in iTerm2.
inoremap ✠ <Esc>

Или:

inoremap <S-CR> <Esc>
" Map ✠ (U+2720) to <S-CR>, so we have <S-CR> mapped to ✠ in iTerm2 and
" ✠ mapped back to <S-CR> in Vim. 
imap ✠ <S-CR>

Ввод <S-CR> в Vim в iTerm2 теперь в конечном итоге приведет к <Esc> в Vim по желанию.

[1]: Например, пробел, табуляция, ввод, удаление, управление, alt, escape.

6 голосов
/ 22 марта 2011

Это потому, что для iTerm совпадает с , введите Ctrl + V Return затем Ctrl + V Shift + Возврат , и вы увидите, что в обоих случаях вставляется один и тот же символ.

Итак, когда вы набираете , Vim получает , и ваше отображение не запускается.

2 голосов
/ 22 марта 2011

MacVim является эквивалентом GVim: графический интерфейс для Vim. Вы не запускаете MacVim через iTerm. Вы либо запускаете версию GUI (MacVim.app), либо версию CLI ($ vim).

Вы можете запустить графический интерфейс из интерфейса командной строки, но настройки iTerm никак не влияют на настройки MacVim.

В MacVim ваше отображение работает отлично.

Насколько мне известно, все или большинство "терминалов" трактуют так же, как . Может быть, вам следует попробовать другую последовательность, например j j ?

...