Привязки «M-» в vim на iTerm2 / Terminal не работают - PullRequest
17 голосов
/ 22 ноября 2011

Я заметил, что iTerm2 предлагает очень удобную функцию использования "Option key as + ESC" (или как мета, но, очевидно, это устарело).

Я попробовал их оба, и клавиша опции работает, как и ожидалось, в Bash (режим set -o emacs) и Emacs, но не в Vim.Таким образом, я не могу использовать какие-либо "M-" привязки.Я обнаружил, что:

  • , если я установлю опцию на "+ ESC", vim просто понимает клавишу ESC + и не имеет ни малейшего представления, что я на самом деле имел в виду мета-ключ.
  • если я установил option на «meta», ключи, модифицированные с помощью «option», ведут себя так же, как и без модификатора (не знаю, как формально проверить, что vim понимает из комбинации клавиш, которую я набираю).

Отображения «M-» прекрасно работают в MacVim (7.3.53), но это выходит за пределы консоли и не входит в сферу этого вопроса.

Меня интересует, как заставить эти сопоставления работать в Vim, под iTerm2 или Terminal.

Мои спецификации :

  • MACOS X Lion 10.7.2
  • iTerm2 1.0.0.20111020
  • vim @ 7.3.107_0 + python26 [хотя MacPorts]

Ответы [ 2 ]

9 голосов
/ 22 ноября 2011

Я скачал последнюю версию iTerm2 и попытался посмотреть, что она отправила / что было напечатано Vim (i<C-v><M-a>) со следующими настройками:

  • Опция как опция:

    Vim печатает æ, что нормально и ожидается на моей французской клавиатуре

  • Опция как мета:

    Вим остается там, ожидая, что что-то случится. Ничего не напечатано. Если я нажимаю Option и a последовательно, я просто получаю a. Нажатие Option и a в случайном порядке может вывести á, что странно и совершенно неожиданно.

  • Опция как + ESC:

    Vim печатает ^[a, что означает «Escape-символ, за которым следует символ a».

Из этих тестов выясняется, что Vim никогда не получит <M-> без какой-либо гипотетической черной магии.

Если вы придерживаетесь "Option as + ESC" , кажется, что вам придется изменить все ваши пользовательские сопоставления <M-something> на <Esc>something. Это может сработать, но это затруднит написание любой прозы на любом неанглийском языке.

Что я делаю: я оставляю клавишу Option как есть, чтобы легко набирать символы, такие как œ…«», и использую <Leader> (сопоставленный с ,, см. :help mapleader) для всех своих пользовательских сопоставлений.

Некоторые люди здесь любят резервировать его для плагинов и отстаивают несколько более простой и потенциально более безопасный подход.

inoremap <leader>, <C-x><C-o> "my way (copied elsewhere)
inoremap ,, <C-x><C-o>        "another way
4 голосов
/ 28 апреля 2012

Я оставил свой ключ выбора, чтобы он действовал как Нормальный, и обнаружил, что Vim видит их как <T- привязки.Так, например, у меня есть такая настройка отображения в моем .vimrc для перемещения в конец слова в режиме вставки:

noremap! <T-Right> <C-o><Right>;
...