web-dev-qa-db-fra.com

Détecter si une clé est liée à quelque chose dans vim

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 trucs intégrés?

Par exemple, j'ai toujours eu CTRL-W lié à fermer l'onglet, parce que je pensais qu'il n'était pas utilisé. Après six mois, j'ai découvert qu'il y avait des séquences qui l'utilisaient, comme CTRL-WCTRL-S de fendre la fenêtre, et c'était un cauchemar de me recycler.

80
K. Norbert

Si vous consultez la réponse suggérée par Randy Morris, vous constaterez que

:help index 

vous donnera la liste que vous souhaitez.

72
skeept

Pour vérifier le mappage par défaut:

:help index

Pour les autres mappages effectués par les utilisateurs ou le plugin:

:map
:map!

De http://vim.wikia.com/wiki/Mapping_keys_in_Vim_- Tutoriel (Part_1) :

La première commande affiche les cartes qui fonctionnent en mode normal, visuel et sélection et opérateur en attente. La deuxième commande affiche les mappes qui fonctionnent en mode insertion et en ligne de commande.

En règle générale, la sortie des commandes ci-dessus s'étendra sur plusieurs pages. Vous pouvez utiliser l'ensemble de commandes suivant pour rediriger la sortie vers le fichier vim_maps.txt:

:redir! > vim_maps.txt
:map
:map!
:redir END
36
Hieu

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 contient une recommandation sur la façon de savoir si une clé spécifique est mappée à une action.

30
Randy Morris

Utilisez :map! Et :map Pour définir manuellement les clés et :help 'char(-combination)' pour savoir quelles clés sont déjà mappées dans vim prêt à l'emploi (/ hors de votre compilation spécifique options). (Légèrement hors sujet mais toujours respectable (je pense): utilisez :scriptnames Pour voir quels fichiers ont été obtenus dans quel ordre.)

17
shindojin

J'ai parcouru :help index et fait une liste de certaines des clés nmap inutilisées:

  • Q (switch to "Ex" mode)
  • Z sauf ZZ, ZQ
  • \
  • <Space> (identique à l en mode normal; la clé la plus grande et la plus sous-utilisée en mode normal)
  • gb, gc, gl, gx, gy, gz
  • gs (sommeil)
  • zp, zq, zu, zy
  • cd, cm, co, cp, cq, cr, cs, cu, cx, cy
  • dc, dm, do, 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, [o, [q, [r, [t, [u, [v, [w, [x , [y
  • CTRL-G, CTRL-K
  • CTRL-\a - z (réservé aux extensions)
  • CTRL-\A - Z (non utilisé)

Veuillez mettre à jour/commenter.

14
Michal Čizmazia

Vous pouvez utiliser mapcheck.:-

Par exemple, je voulais mapper <CR> ,i à gg=G pour mettre un fichier en retrait. Pour vérifier s'il existe déjà un mappage pour <CR> , i

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

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