2010-03-20 3 views
63

Je voudrais savoir s'il existe un moyen de savoir si une clé fait quelque chose dans vim. Je sais que je peux utiliser :map pour voir les mappages définis par l'utilisateur, mais y a-t-il quelque chose pour les choses intégrées?Détecter si une clé est liée à quelque chose dans vim

Par exemple, je l'avais toujours CTRL - W lié à fermer l'onglet, parce que je pensais qu'il était utilisé. Après une demi-année, j'ai découvert qu'il ya des séquences qui l'utilisent, comme CTRL - WCTRL - S pour diviser la fenêtre, et ce fut un cauchemar pour me reconvertir.

+4

En parlant de collisions accidentelles de mappages définis par l'utilisateur, c'est vraiment une bonne pratique d'utiliser [_pleader_] (http://vimdoc.sourceforge.net/htmldoc/map.html#mapleader) – derenio

Répondre

60

Si vous cochez la réponse proposée par Randy Morris, vous trouverez que

:help index 

vous donnera la liste que vous voulez.

+0

très utile! bon à savoir il ya un endroit où vous pouvez aller chercher si vous voulez juste fouiner pour apprendre quelque chose de nouveau –

27

Pas une réponse complète, mais vous voudrez peut-être vérifier :help map-which-keys pour une liste de clés que vim vous recommande d'utiliser dans vos cartes personnalisées.

Cette section d'aide a une recommandation sur la façon de dire si une clé spécifique est mappée à une action.

14

Utilisez ": map!" et ": map" pour les clés définies manuellement et ": help" char (-combination) '"pour savoir quelles clés sont déjà mappées dans vim out-of-the-box (/ out de vos options de compilation spécifiques). (légèrement hors-sujet, mais encore regardable (je pense): utiliser. « : Scriptnames » pour voir quels fichiers ont été source dans quel ordre)

Respectueusement, S.

+0

Si vous voulez rechercher quelles touches déclenchent une certaine commande, vous pouvez le faire: : redir keys.txt : carte : redir fin Puis ouvrez keys.txt et recherchez les commandes liées. –

27

Pour vérifier le mappage par défaut :

:help index 

Pour les autres mapping qui se fait par des utilisateurs ou des plug-in:

:map 
:map! 

de http://vim.wikia.com/wiki/Mapping_keys_in_Vim_-Tutorial(Part_1):

La première commande affiche les cartes fonctionnant en modes normal, visuel et select et operator en attente. La deuxième commande affiche les cartes qui fonctionnent en mode insertion et ligne de commande.

Généralement, la sortie des commandes ci-dessus s'étend sur plusieurs pages. Vous pouvez utiliser l'ensemble des commandes suivantes pour rediriger la sortie vers le fichier vim_maps.txt:

:redir! > vim_maps.txt 
:map 
:map! 
:redir END 
4

Vous pouvez utiliser mapcheck: -.

Par exemple, je voulais carte <CR> ,i à gg=G pour indenter un fichier. Pour vérifier s'il y a une correspondance déjà <CR> , i

if mapcheck("\<CR>", "I") == "" |echo "no mapping" 

...mais cela ne détectera pas si le mappage fait partie d'une séquence.

+0

J'ai essayé de vérifier si "o" est lié à quelque chose en mode normal, avec ce qui suit: if mapcheck ("o", "N") == "" | echo "no mapping" mais il signale "no mapping", quand o est définitivement lié à "open new line". Est-ce que je l'utilise mal? –

+0

@ K.Norbert: Je crois que cela pour les mappages définis par l'utilisateur –

8

I écrémé par :help index et fait une liste de quelques-uns des nmap inutilisés clés:

  • Q (passez en mode "Ex")
  • Z sauf ZZ, ZQ
  • \
  • gb, gc, gl, gx, gy, gz
  • zp, zq, zu, zy
  • cd, cm, co, cp, CQ, CR, CS, Cu, cx, cy
  • dc, dm, faire, dp, dq, dr, ds, du, dx, dy
  • gA, gB, gC, gG, gK, gL, gM, gO, gS, gx, gY, gZ
  • zB, zI, zJ, zK, zP, zQ, zP, zS, zT, zU, zV, zY, zZ
  • ] a,] b,] e,] g,] h,] j,] k,] l,] n,] o,] q,] r,] t,] u,] v,] w,] x,] y
  • [a, [b, [e, [g, [h, [ j, [k, [l, [n, [t, [q, [v, [w, [x, [y
  • CTRL-G, CTRL-K
  • CTRL- \ a - z (réservé aux extensions)
  • CTRL- \ A - Z (non utilisé)

Veuillez mettre à jour/commenter.

Questions connexes