Rileva se una chiave è associata a qualcosa in vim


88

Mi piacerebbe sapere se c'è un modo per capire se una chiave fa qualcosa in vim. So che posso usare :mapper vedere le mappature definite dall'utente, ma c'è qualcosa per le cose integrate?

Per esempio, ho sempre avuto CTRL- Wlegata alla stretta scheda, perché ho pensato che era inutilizzato. Dopo sei mesi, ho scoperto che ci sono alcune sequenze che lo usano, come CTRL- W CTRL- Sper spaccare la finestra, ed è stato un incubo riqualificarmi.


4
A proposito di collisioni accidentali di mappature definite dall'utente, è davvero una buona pratica usare mapleader
derenio

Risposte:


78

Se controlli la risposta suggerita da Randy Morris, la troverai

:help index 

ti darà la lista che desideri.


molto utile! Buono a sapersi che c'è un posto dove puoi andare a cercare se vuoi solo curiosare per imparare qualcosa di nuovo
JonnyRaa

40

Per controllare la mappatura predefinita:

:help index

Per altre mappature eseguite da utenti o plug-in:

:map
:map!

Da http://vim.wikia.com/wiki/Mapping_keys_in_Vim_- Tutorial (Parte_1) :

Il primo comando visualizza le mappe che funzionano in modalità normale, visuale e di selezione e attesa dell'operatore. Il secondo comando mostra le mappe che funzionano in modalità inserimento e riga di comando.

In genere l'output dei comandi precedenti si estenderà su diverse pagine. È possibile utilizzare la seguente serie di comandi per reindirizzare l'output al file vim_maps.txt:

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

A meno che le versioni più recenti di Vim non offrano improvvisamente un'alternativa migliore, questo sembra essere l'unico modo per cercare sia le mappe dei tasti incluse che quelle personalizzate. mapcheck(come menzionato in un'altra risposta ) copre anche solo le combinazioni di tasti personalizzate. La principale differenza tra l'output in un file di testo e il mapcheck è che l'output in un file di testo e / o l'utilizzo :help indexti consente /C-wdi trovare in Vim qualsiasi cosa usandoC-w
Zoe

33

Non è una risposta completa, ma potresti voler controllare :help map-which-keysun elenco di chiavi che vim ti consiglia di usare nelle tue mappe personalizzate.

Questa sezione della guida contiene una raccomandazione su come stabilire se una chiave specifica è mappata a un'azione.


19

Usa :map!e :mapper impostare manualmente le chiavi e :help 'char(-combination)'per scoprire quali chiavi sono già mappate in vim out-of-the-box (/ fuori dalle tue specifiche opzioni di compilazione). (Un po 'fuori tema ma comunque rispettabile (credo): utilizzare :scriptnamesper vedere quali file sono stati acquistati in quale ordine.)


Se vuoi cercare quali tasti attivano un determinato comando, puoi farlo:: redir keys.txt: map: redir end Quindi apri keys.txt e cerca quali comandi sono associati.
Christian Oudard

18

Ho sfogliato :help indexe fatto un elenco di alcune delle nmapchiavi inutilizzate :

  • Q (passa alla modalità "Ex")
  • Z tranne ZZ, ZQ
  • \
  • <Space>(come lnella modalità normale; la chiave più grande e più sottoutilizzata nella modalità normale)
  • gb, gc, gl, gx, gy, gz
  • gs (sleep)
  • 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 (riservato alle estensioni)
  • CTRL- \ A - Z (non utilizzato)

Si prega di aggiornare / commentare.


12

Puoi usare mapcheck.: -

Ad esempio, volevo mappare <CR> ,isu gg=Gun file rientrato. Per verificare se esiste già una mappatura per<CR> , i

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

... ma questo non rileva se la mappatura fa parte di una sequenza.


Ho provato a controllare se "o" è associato a qualcosa in modalità normale, con quanto segue: if mapcheck ("o", "N") == "" | echo "no mapping" ma segnala "no mapping", quando o è sicuramente vincolato a "open new line". Lo sto usando male?
K. Norbert

@ K.Norbert: Credo che questo per le mappature definite dall'utente
Moha l'onnipotente cammello
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.