Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

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>
share|improve this question
add comment

2 Answers

up vote 7 down vote accepted

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).

share|improve this answer
    
Chris, you are awesome!!! Thank you so much!!! –  Art Jul 18 '11 at 2:37
add comment

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
endif
share|improve this answer
    
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
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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