I want to be able to switch buffers (:bn! / :bp!) in MacVim, using shortcuts like

Alt (Option) - Left Arrow Key/Right Arrow Key

So far I wasn't able to do that.

Here's my mapping for the keys, which works perfectly fine in Linux, but not on MacOS:

map <M-Right> :bn!<CR>
map <M-Left> :bp!<CR>

Vim initialization files are processed in this order (simplified; see :help initialization):

  1. $VIM/vimrc
  2. $HOME/.vimrc
  3. $VIM/gvimrc
  4. $HOME/.gvimrc

The problem is that MacVim maps M-Right and M-Left (and several other key combinations) in its $VIM/gvimrc (i.e. …/MacVim.app/Contents/Resources/vim/gvimrc); this will override any mappings you have made on those key combinations in $HOME/.vimrc.

If you examine this startup file (i.e. :view $VIM/gvimrc), you will find that these particular mappings can be inhibited by setting the special variable macvim_skip_cmd_opt_movement (to any value) in your $HOME/.vimrc.

let macvim_skip_cmd_opt_movement = 1

This will inhibit ten default MacVim mappings (Command and Option for each of Left, Right, Up, Down, and BS).

Alternatively, you could just put your mappings in your $HOME/.gvimrc (where they will override the default MacVim mappings even if you have not inhibited them with macvim_skip_cmd_opt_movement).

  • Chris, you are awesome!!! Thank you so much!!! – Art Jul 18 '11 at 2:37

Try putting this in your .vimrc file:

" Set left and right option/alt keys to be meta keys
set macmeta

Then try those mappings again and see if they work. If you want to reverse it simply do :set nomacmeta.

If you also use this .vimrc file on computers without MacVim on them use this instead:

" Set left and right option/alt keys to be meta keys
if has("gui_macvim")
    set macmeta
  • I get 'Invalid argument macmeta=rl' error message. If I do ':set macmeta rl' it turns all the text into right-to left view – Art Jul 14 '11 at 6:51
  • Well you don't want to do ':set macmeta rl' because that is essentially two commands ':set macmeta' and ':set rl' (which you figured out does right to left text). I realize I made a mistake in my original answer now (I couldn't test it because I don't have MacVim). I'll edit it, and see if the new solution works for you. – lyallcooper Jul 14 '11 at 6:56
  • "set macmeta" unfortunately does not fix it, pressing alt-'->' just makes cursor jump to next word – Art Jul 14 '11 at 23:28
  • Thanks for the has("gui_macvim") though! – Art Jul 19 '11 at 3:05

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.