Проблема здесь с эмуляцией терминала. Большинство терминалов не могут отличить непечатаемые клавиши [1] от клавиш, объединенных с клавишами-модификаторами.
Однако вы все равно можете заставить работать желаемую комбинацию, если ваше терминальное приложение имеет возможность переназначать комбинации клавиш (как это делает, например, iTerm2). Сопоставьте комбинацию терминального приложения с некоторым символом Unicode, который вы никогда не будете использовать, затем сопоставьте эту клавишу в Vim с желаемым эффектом, и вы сможете обойти это ограничение.
Для этого примера в iTerm2 откройте панель «Настройки клавиш», добавьте глобальную горячую клавишу, введите сдвиг и возврат, задайте для нее действие «Установить текст», а затем поставьте ✠ (мальтийский крест, но вы можете использовать любой случайный маловероятно -be-used символ Unicode) в качестве его значения. В вашем .vimrc добавьте следующие строки:
" Map ✠ (U+2720) to <Esc> as <S-CR> is mapped to ✠ in iTerm2.
inoremap ✠ <Esc>
Or:
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]: например. пробел, вкладка, ввод, удаление, контроль, альт, выход.
person
Tadhg
schedule
24.08.2012