MacVim: переназначить комбинации клавиш, например <df>

17

Я могу переназначить неиспользуемые комбинации как <d-1>(Cmd + 1) в MacVim, но есть много комбинаций , как <d-f>, <d-o>или <d-b>которые уже связаны с пунктами меню MacVim. Если я попытаюсь переназначить их внутри моего .vimrc, ничего не изменится.

Есть ли способ, которым я могу переназначить эти комбинации внутри MacVim или не дать MacVim назначать их элементам меню, чтобы они правильно передавались ядру Vim?

Джо Лисс
источник

Ответы:

21

Найдено: Command-T рекомендует использовать следующий фрагмент:

if has("gui_macvim")
  macmenu &File.New\ Tab key=<nop>
  map <D-t> :CommandT<CR>
endif

Таким образом, в основном вы отменяете отображение соответствующего пункта меню, а затем вы можете сопоставить ярлык, который пытались сопоставить. (Я не уверен, что делает амперсанд; он работает с ним и без него.)

Это должно быть помещено в ~ / .gvimrc, а не в ~ / .vimrc! (Очевидно, ~ / .vimrc читается слишком рано, поэтому (не) сопоставления будут перекрыты, если вы поместите их туда.)

Джо Лисс
источник
3
Я попробовал это на текущей версии MacVim (7.3), и это не сработало. Я закончил тем, что вошел в $ VIMRUNTIME / menu.vim, выполняя поиск <D-и помещая && 0в конец окружающего оператора if. Затем я скопировал содержимое в мой .gvimrc и заменил <D-[^>]*>на <nop>.
дэш-том-бэнг
1
@ dash-torn-bang Хм, мой код выше, кажется, все еще работает хорошо с 7.3 снимком 62 на Lion. Мне не пришлось редактировать MacVim menu.vim. Я не уверен, почему это работает для меня, но не для вас ...
Джо Лисс
1
Я смог заставить его работать без амперсанда:macmenu File.Print key=<nop>
romaninsh
Благодарность! Работал на меня. Хотя с небольшой модификацией:macmenu File.Close key=<nop>
Halil Özgür