24

Following on from my other recent question: How do I map <cmd>-<shift>-f to run Ack plugin in Vim?

Is is possible to use the <cmd> key in Vim at all?

If Vim doesn't recognise the key, is it possible to remap the key outside of Vim (somehow?) to something else and map that key within Vim?

I'm using iTerm 2 on Lion with Vim 7.3.

Thanks!

0

4 Answers 4

15

<D-> only works in MacVim.

A quick google will return a bunch of hacks and third party solutions. All the solutions I know either work system-wide or are application-specific: if you remap Cmd in iTerm2 only, how are you going to open a new window or a new tab? With… with… the… MOUSE?

I can't imagine a good reason to remap the Cmd key to anything on a Mac. That would be insane.

Vim is not TextMate or whatever other editor you have used before. There is no way to transfer all your old habits seamlessly, point blank.

Instead of wasting your time trying to make Vim and your terminal into something that it's not and can't be you should learn how to use and customize Vim wisely. All your Cmd+Shift+Ctrl+Alt combos won't lead you anywhere. Especially in a terminal where Alt is often problematic and Cmd unusable.

Consider using <leader> (:help leader):

  • it's portable on every platform
  • it's less prone to conflicts with your OS or terminal emulator
  • it opens a lot of easy to remember possibilities
3
  • 1
    Haha, thank you grawity, it's much cleaner now.
    – romainl
    Feb 9, 2012 at 14:14
  • 1
    Thanks for the reply. I had heard of the <leader> but I wasn't sure how it should be used. I agree with your point about portability, this is part of the reason I am moving to Vim. Thanks.
    – jordelver
    Feb 10, 2012 at 23:39
  • You can remap Cmd to Control in iTerm2, and then in the same window, add shortcuts to open a new tab with ^t, etc. Then everything works! Feb 19, 2016 at 12:04
9

I found that iterm2 has an option in the keyboard settings to do this kind of thing. For ex below I mapped command-enter to be :wq

enter image description hereenter image description here

2
  • Thank you for this solution. This is just what i was looking for. I know about <Leader>, but i think that some things like saving a file should be universal. Feb 16, 2018 at 17:04
  • 1
    Thanks for this. Was looking all over for how to map enter and it's \n Jul 18, 2020 at 23:25
6

For simple commands there is a solution via sending the appropriate hex code to the terminal. For instance, I wanted to save in vim by pressing cmd-s. I mapped cmd-s in iterm2 to send the hex code 0x13 which is the code for ctrl-s, then I mapped ctrl-s to :wq in vim.

3
  • How exactly do you do such a thing? Thanks.
    – nunos
    Mar 31, 2015 at 0:59
  • Did not work for me the 0x13 hex code :/ imgur.com/RjxOoLY Sep 29, 2015 at 11:32
  • For the how to do this, see the pics below - thanks @jhickner for the idea to look at iTerm2
    – Goblinhack
    Sep 2, 2017 at 21:38
6

The 2016 solution is to use Karabiner open-source program which allows you to remap modifier and other keys with very fine granularity, for example

  • Remap only the left ⌘ Cmd or Option key.
  • Remap a key only for specific applications, e.g. only inside Terminal, Emacs, or virtual machine.

For example, here's how to remap left ⌘ Cmd key to act as Ctrl only inside Terminal (and leave the right one unaffected so that you could still use e.g. ⌘ Cmd + Tab to switch between apps):

karabiner-screenshot

1
  • Awesome. Now I can use that in Vim properly, though (left) command+tab doesn't "alt tab". I can use right command but is there anyway to keep that somehow? May 10, 2017 at 21:49

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .