Durchsuchen Sie die Werte aller Variablen in Emacs

9

Ich möchte herausfinden, welche Variablen einen bestimmten Wert enthalten.

Gibt es eine Möglichkeit, eine Regex-Suche durch die Werte jeder Variablen in Emacs durchzuführen?

izkon
quelle

Antworten:

12

Tut apropos-valuewas Sie suchen?

(apropos-value PATTERN &optional DO-ALL)

Show all symbols whose value’s printed representation matches PATTERN.
PATTERN can be a word, a list of words (separated by spaces),
or a regexp (using some regexp special characters).  If it is a word,
search for matches for that word as a substring.  If it is a list of words,
search for matches for any two (or more) of those words.
Genehack
quelle
3

Icicles Befehl icicle-apropos-valueVerstärkt Vanille-Befehl apropos-value, indem es Ihnen gleichzeitig die Variable übereinstimmen Name und Wert gegen regexps (oder Teil oder andere Muster). Sie müssen nicht beide zuordnen, aber Sie können beide zuordnen.

Und (wie bei allen Eiszapfen) können Sie den Namen oder den Wert oder beides schrittweise abgleichen, dh mehrere Muster schrittweise verwenden. Dies ist besonders wichtig für den Fall, dass Sie, wie Sie sagen, zunächst mit allen Variablen in Emacs übereinstimmen. Das heißt, Sie möchten nicht mit Namen übereinstimmen. Sie möchten nur Werte abgleichen.

Um sowohl Name als auch Wert abzugleichen C-M-j, beenden Sie einfach das Namensmuster und beginnen Sie mit dem Wertemuster. Um nur mit Werten übereinzustimmen, beginnen Sie mit C-M-jdem Wertemuster und geben es ein, da das Namensmuster leer ist.

So zeigen Sie beispielsweise alle Variablen an, deren aktueller Wert übereinstimmt nil( S-TABÜbereinstimmungen anzeigen):

M-x icicle-apropos-value RET

SYMBOL C-M-j VALUE: C-M-j nil S-TAB

So zeigen Sie alle Variablen an, deren aktueller Wert mit regulärem Ausdruck übereinstimmt .*plist:

SYMBOL C-M-j VALUE: C-M-j .*plist S-TAB

Übereinstimmende Variablen und ihre Werte werden *Completions*als Abschlusskandidaten im Puffer angezeigt . Mit den vertikalen Pfeiltasten können Sie zwischen den Kandidaten wechseln und jeden nacheinander auf den neuesten Stand bringen : <down> <down> <down>....

Die erste Dokumentzeichenfolge für den aktuellen Abschlusskandidaten wird in der Moduszeile von angezeigt *Completions*.

Sie können eine vollständige (dh C-h v) Beschreibung des aktuellen Kandidaten erhalten, indem Sie einen Hilfeschlüssel verwenden: C-M-mouse-2oder C-M-RET. Um nacheinander Hilfe zu jedem Kandidaten zu erhalten, wechseln Sie mit den Pfeiltasten C-M-(z C-M-<down>. B. Wiederholen ).

Siehe Wertbewusste Variable-Apropos-Mehrfachbefehle .

C-h f icicle-apropos-value sagt dies:

icicle-apropos-valueist eine interaktive kompilierte Lisp-Funktion in icicles-cmd1.el.

Es ist gebunden menu-bar help-menu apropos icicles icicle-apropos-value, menu-bar help-menu apropos apropos-var-value, menu-bar help-menu search-documentation find-option-by-value.

(icicle-apropos-value)

Wählen Sie eine Variable, eine Funktion oder eine andere Symbolbeschreibung.

Dies ähnelt dem Befehl vanilla apropos-value, Sie können jedoch gleichzeitig den Variablennamen und den gedruckten Wert abgleichen.

Standardmäßig ist jeder Abschlusskandidat eine Mehrfachvervollständigung, die sich aus einem Variablennamen und seinem Wert zusammensetzt. Sie sind standardmäßig durch icicle-list-join-string( "^G^J") getrennt.

Mit einem Präfix arg sind Kandidaten verschiedene Arten von Symbolen:

  • <0: Funktionen und ihre Defs (aber bytekompilierte Defs werden übersprungen)
  • > 0: Symbole und ihre Listen
  • = 0: Variablen und ihre Werte, Funktionen und ihre Definitionen sowie andere Symbole und ihre Listen

  • plain ( C-u): Verwenden Sie die zuletzt berechnete ( zwischengespeicherte ) Gruppe von Kandidaten

Sie können C-$während des Abschlusses die Filterung der Domäne der Erstkandidaten gemäß dem Präfixargument wie folgt umschalten:

  • keine: nur Benutzeroptionen (+ Werte)
  • <0: nur Befehle (+ Definitionen)
  • > 0: nur Gesichter (+ Plisten)
  • = 0: nur Optionen (+ Werte), Befehle (+ Defs), Gesichter (+ Plisten)

Siehe auch:

  • icicle-apropos-vars-w-val-satisfying, icicle-describe-vars-w-val-satisfying- Werte erfüllen ein Prädikat
  • icicle-plist - ähnlich diesem Befehl mit positivem Präfix arg
  • icicle-vardoc, icicle-fundoc, icicle-doc- Spiel Name & doc
  • icicle-apropos-options-of-type, icicle-describe-option-of-type- Übereinstimmungsname & benutzerdefinierter Typ

Da Sie diesen Befehl häufig in Kontexten verwenden, die zu vielen, vielen Abschlusskandidaten führen, ist Folgendes für diesen Befehl standardmäßig deaktiviert:

  • Unvollständiger Modus. Sie können dies mit umschalten M-i M-#.
  • Inkrementelle Fertigstellung der Eiszapfen. Sie können dies mit radeln M-i #.

Lesen Sie die Eingabe und rufen Sie icicle-doc-actionan, um darauf zu reagieren.

Der Abschluss des Eingabekandidaten und das Radfahren sind verfügbar. Während des Radfahrens sind diese Tasten mit Präfix C-aktiv:

C-mouse-2, C-return- Gesetz über die aktuellen Vervollständigungskandidaten nur C-down, C-wheel-down- Zum nächsten Vervollständigungskandidaten und handelt C-up, C-wheel-up- Verschieben zum vorherigen Vervollständigungskandidaten und handeln C-next - Zum nächsten apropos-Vervollständigungskandidaten und handeln C-prior- Zum vorherigen apropos-Vervollständigungskandidaten und handeln C-end - Zum nächsten Präfix-Vervollständigungskandidat und -handlung C-home - Zum vorherigen Präfix-Vervollständigungskandidaten wechseln und handeln C-! - Alle Kandidaten nacheinander (vorsichtig!) behandeln.

Wenn Kandidatenaktion und Radfahren kombiniert werden (z. B. C-next), icicle-act-before-cycle-flagbestimmt die Benutzeroption , welche zuerst auftritt.

Mit Präfix C-M-statt C-, die gleichen Tasten ( C-M-mouse-2, C-M-RET, C-M-down, usw.) bieten Hilfe über die Kandidaten.

Verwenden Sie mouse-2, REToder, S-RETum endgültig einen Kandidaten auszuwählen oder um C-gzu beenden.

Drew
quelle