2011-11-10 2 views
7

Je suis récemment passé à l'utilisation d'un Mac au travail à partir de Linux. J'ai découvert MacVim (à partir de http://code.google.com/p/macvim/) et j'ai essayé de mettre en communication sur mes keymappings précédents.Certains mappages de touches ne fonctionnent pas dans MacVim

Les applications que je l'habitude d'avoir sont les suivants:

  • Ctrl-T: Nouveau onglet
  • Ctrl-W: Fermer l'onglet/fenêtre
  • Ctrl-1. Ctrl-0: Passer à l'onglet numéroté
  • Alt-Up: New onglet (comme Ctrl-T)
  • Alt-Gauche/Alt-Droite: Passez à l'onglet précédent/suivant
  • Ctrl-Alt-E: Open FuzzyFinder dans le fichier mode
  • Ctrl-Alt-B: Open FuzzyFinder en mode tampon
  • Ctrl-Alt-W: Effacer les espaces de fin de la mémoire tampon

Maintenant, pour rendre ces mappings plus 'Mac like', j'ai décidé de changer les deux premiers à utiliser l'option (ie. Apple logo), et tous les autres pour utiliser la touche de commande au lieu de Alt (par exemple Ctrl-Alt-E devient Ctrl-Commande-E). Je lis sur http://macvim.org/OSX/index.php que cette clé peut être mappée avec D (ie). Le nouveau contenu de mon .vimrc se présente comme suit:

nmap <D-t> :tabnew<cr> 
nmap <D-w> :close<cr> 
nmap <D-1> 1gt 
nmap <D-2> 2gt 
nmap <D-3> 3gt 
nmap <D-4> 4gt 
nmap <D-5> 5gt 
nmap <D-6> 6gt 
nmap <D-7> 7gt 
nmap <D-8> 8gt 
nmap <D-9> 9gt 
nmap <D-0> 10gt 

nmap <D-Up> :tabnew<CR> 
nmap <D-Right> :tabnext<CR> 
nmap <D-Left> :tabprevious<CR> 

"FuzzyFinder 
nmap <C-D-e> :FufFileWithFullCwd<CR> 
nmap <C-D-b> :FufBuffer<CR> 

"Whitespace remover 
nmap <C-D-w> :%s/\s\+$//<CR> 

Ainsi, après remappage les clés, certains travaillent maintenant et d'autres ne le font pas, sans logique clairement pourquoi.

Ce qui fonctionne:

  • Cmd-T et Cmd-W fonctionnent avec succès pour les onglets d'ouverture et de fermeture.
  • Cmd-1 ... Cmd-0 fonctionne avec succès pour la commutation des onglets.

Qu'est-ce qui ne fonctionne pas:

  • Cmd-Up pour ouvrir un onglet ne fonctionne pas.
  • Cmd-Left et Cmd-Right pour basculer les onglets ne fonctionne pas.
  • Ctrl-Cmd-E et Ctrl-Cmd-B pour l'ouverture FuzzyFinder ne fonctionne pas.
  • Ctrl-Cmd-W pour la compensation des espaces ne fonctionne pas (mais ne ni lui fermer l'onglet, comme il le ferait sans ctrl.
+0

vous pouvez accepter votre propre réponse si vous avez trouvé la solution vous-même. ;) – sjas

+0

Il y a une [raison] (http://learnvimscriptthehardway.stevelosh.com/chapters/05.html) de toujours utiliser '* nore (map | abbrev)' (par exemple 'nnoremap') et jamais' nmap'. – ZyX

+0

Merci ZyX pour le conseil. Je pense que je vais lire l'intégralité de 'Apprends Vim Script the Hard Way' quand j'en aurai l'occasion! –

Répondre

5

Donc, il s'avère qu'il y a un bu g dans Macvim (http://code.google.com/p/macvim/issues/detail?id=317), ce qui signifie qu'il n'est pas possible de mapper la clé ctrl. Au lieu de cela, j'ai cartographié la clé du leader (a.k.a. le backslash), et tout semble fonctionner maintenant.

+0

Salut @Joel Cross pourriez-vous me dire comment vous avez résolu ce problème plus précisément? J'essaie de mapper une clé à ctrl + commande + w. merci – bean

+0

Salut Joel, pourriez-vous me dire plus de détails comment mapper ctrl + commande + w? – bean

+0

Désolé je veux dire mappez une clé comme F à ctrl + commande + w, pas vice versa – bean

7

Enquêter sur la cause en faisant

:verbose map <D-Up> 

En outre, essayez d'activer de manière sélective vos autres plugins pour voir si les mappages sont effacés d'une façon ou d'une autre

+0

* Dernier jeu de /Applications/MacPorts/MacVim.app/Contents/Resources/vim/gvimrc –

+0

Il semblerait donc qu'un fichier global remplace ma config. Je suis surpris, car j'aurais pensé que ma configuration utilisateur aurait la priorité. –

+0

J'ai ajouté la ligne "let macvim_skip_cmd_opt_movement = 1" à mon fichier .vimrc et maintenant les onglets fonctionnent correctement. Les trois dernières commandes (celles utilisant la combinaison ctrl-cmd) ne fonctionnent toujours pas. –

Questions connexes