Могу ли я вообще использовать клавишу `<cmd>` в терминале Vim?

22

Исходя из моего другого недавнего вопроса: Как мне сопоставить <cmd> - <shift> -f для запуска плагина Ack в Vim?

Можно ли вообще использовать <cmd>ключ в Vim?

Если Vim не распознает ключ, возможно ли переназначить ключ вне Vim (каким-то образом?) На что-то другое и отобразить этот ключ в Vim?

Я использую iTerm 2 на Lion с Vim 7.3.

Благодарность!

jordelver
источник

Ответы:

12

<D-> работает только в MacVim.

Быстрый Google вернет кучу хаков и сторонних решений. Все известные мне решения работают либо для всей системы, либо для конкретных приложений: если вы переназначаете Cmdтолько в iTerm2, как вы собираетесь открыть новое окно или новую вкладку? С ... с ... мышей?

Я не могу представить себе вескую причину переназначить Cmdключ к чему-либо на Mac. Это было бы безумно.

Vim не TextMate или любой другой редактор, который вы использовали раньше. Нет способа передать все ваши старые привычки без проблем, в упор.

Вместо того, чтобы тратить свое время на попытки превратить Vim и ваш терминал во что-то, чем они не являются и не могут быть, вы должны научиться мудро использовать и настраивать Vim. Все ваши Cmd+ Shift+ Ctrl+ Altкомбо никуда вас не приведут. Особенно в терминале, где Altчасто проблематично и Cmdнепригодно.

Рассмотрите возможность использования <leader>( :help leader):

  • это портативно на любой платформе
  • он менее подвержен конфликтам с вашей ОС или эмулятором терминала
  • это открывает много легко запоминающихся возможностей
romainl
источник
Хаха, спасибо тебе, теперь стало намного чище.
romainl
Спасибо за ответ. Я слышал о, <leader>но я не был уверен, как это следует использовать. Я согласен с вашей точкой зрения о мобильности, это одна из причин, по которой я перехожу на Vim. Благодарю.
jordelver
Вы можете переназначить , Cmdчтобы Controlв iTerm2, а затем в том же окне, добавить ярлыки , чтобы открыть новую вкладку с ^tи т.д. , то все работает!
Шон Кларк Хесс
5

Я обнаружил, что у iterm2 есть опция в настройках клавиатуры, чтобы делать подобные вещи. Для примера ниже я сопоставил команду-enter следующим образом: wq

введите описание изображения здесьвведите описание изображения здесь

Нил МакГилл
источник
Спасибо за это решение. Это именно то, что я искал. Я знаю о <Leader>, но я думаю, что некоторые вещи, такие как сохранение файла, должны быть универсальными.
Дмитрий Билецкий
4

Для простых команд есть решение путем отправки соответствующего шестнадцатеричного кода на терминал. Например, я хотел сохранить в vim, нажав cmd-s. Я сопоставил cmd-siterm2, чтобы отправить шестнадцатеричный код, для 0x13которого это код ctrl-s, а затем сопоставил его ctrl-sс :wqvim.

jhickner
источник
Как именно вы делаете такую ​​вещь? Благодарю.
nunos
У меня не работает шестнадцатеричный код 0x13
michalzuber
Чтобы узнать, как это сделать, см. Фото ниже - спасибо @jhickner за идею посмотреть на iTerm2
Нил МакГилл,
3

Решение 2016 года состоит в том, чтобы использовать программу с открытым исходным кодом Karabiner, которая позволяет вам переназначить модификатор и другие ключи с очень тонкой детализацией , например

  • Перекартируйте только влево ⌘ Cmd или Optionклавишу.
  • Переназначить ключ только для определенных приложений, например, только внутри Terminal, Emacs или виртуальной машины.

Например, вот как переназначить левую ⌘ Cmdклавишу, чтобы она действовала как Ctrl только внутри Терминала (и оставила правую без изменений, чтобы вы могли использовать, например, ⌘ Cmd + Tabдля переключения между приложениями):

карабин-скриншот

dorserg
источник
Потрясающие. Теперь я могу использовать это в Vim правильно, хотя (левая) команда + вкладка не «alt tab». Я могу использовать правильную команду, но в любом случае, чтобы это сохранить?
meder omuraliev