Was bedeutet 'g'?

10

Hinweis: Diese Frage hat zwei Arten von Antworten auf StackOverflow, aber ich dachte, vielleicht würde eine bessere Antwort von hier kommen, und wenn nicht, wird zumindest dokumentiert, wo sie sein sollte:


Was ist die semantische Bedeutung des Buchstabens gin Befehlen im normalen Modus? Ich habe das Heck aus verwendet gg, Gund <n>G, aber bis heute, ich hätte nie gedacht , um herauszufinden , was die Semantik gin dem größeren ist Zen von Vi .

Heute musste ich eine Reihe von Konstanten in meinem Code in Kleinbuchstaben schreiben, und ich dachte, es müsste einen besseren Weg als Zeichen für Zeichen geben (da <n>~dies aus irgendeinem Grund, den ich nicht kenne, nicht funktioniert). Ich habe es g~speziell in gefunden g~iw.

Dies führte mich dazu, die verknüpften Antworten zu finden, aber sie haben weniger als zufriedenstellende Erklärungen und befinden sich auf StackOverflow und nicht auf vi.SE, um zu booten.

Damit,

Was ist die vi-semantische Bedeutung von g?

Unter vi-semantischer Bedeutung erwarte ich, dass die Menschen verstehen, ciwwas Wortänderung bedeutet, also cVeränderung ibedeutet, inneres Textelement wbedeutet und Wort bedeutet, das durch Leerzeichen oder Interpunktion ausgeschlossen ist _.

PS, wie tagge ich das?

Malan
quelle

Antworten:

12

gist ein bisschen ein seltsamer Schlüssel in vim. Viele andere Schlüssel haben ein bestimmtes Wort, um ihre Kategorie zu beschreiben:

  • h, j, k, l, }, {, w, e, Etc. sind alle Bewegungen . Sie weisen Ihren Cursor an, sich zu bewegen.

  • d, c, yUsw. sind alle Betreiber . Sie ändern den Text, mit dem sie arbeiten, auf eine bestimmte Art und Weise, und Sie teilen ihnen mit, welchen Text sie bearbeiten sollen, indem Sie einen Antrag stellen .

ghat keinen solchen Namen. Wenn ich mir einen Namen einfallen lassen müsste, würde ich ihn einen Namespace nennen . Bram Moolenaar und Bill Joy Ich bin sicher, dass es viele nützliche Vorgänge gab (z. B. Anfang / Ende der Datei oder Gehe zu [line]), die sinnvoll sind, um eine Verknüpfung für Standard-Vim zu erstellen, aber sie werden nicht verwendet oft genug, um eine Verknüpfung mit einer Taste zu rechtfertigen, da diese für nützlichere / häufig verwendete Dinge wie hjkloder dund reserviert sind pund nur 95 Tasten zur Auswahl stehen. Es gibt unzählige Tastaturkürzel, mit denen alle beginnen g. Was haben Sie gemeinsam? Absolut gar nichts. Sie sind einfach nützliche Dinge, für die es sich nicht lohnt, eine Verknüpfung mit einer Taste anzugeben.

Also wirklich, ggist eine Bewegung genau wie alle anderen Bewegungen, die ich aufgelistet habe, es wird einfach eine Zwei-Tasten-Sequenz verwendet. g~ist ein Operator, genau wie alle anderen Operatoren, die ich aufgelistet habe. Es wird nur eine Zwei-Tasten-Sequenz verwendet.

Es gibt mehrere andere "Namespace" -ähnliche Schlüssel in vim. Suchen Sie beispielsweise in der Hilfe nach

  • :h z (Befehle, die mit 'z' beginnen)
  • :h [ (Befehle, die mit '[' beginnen)
James
quelle
2
Ist galso wie ein Systemleiter im Gegensatz zu einem Benutzerleiter. Ich muss mir nur die Combos merken. Vielen Dank.
Malan
7
g und z und mögen wirklich Namespaces für das nächste Zeichen. Das liegt daran, dass uns langsam die Tasten auf einer Tastatur ausgehen, sodass nützliche Befehle zu diesen Tasten hinzugefügt wurden
Christian Brabandt
1
@ChristianBrabandt Ja, der Namespace ist ein großartiges Wort dafür.
James
1
IMHO diese Antwort sollte nicht das Wort Führer seit führend Schlüssel in vim existiert und nicht verwechselt werden darf g, z, [, ], und <C-w>. Ich würde namespace keywie vorgeschlagen verwenden.
Hotschke
1
Noch wichtiger ist , gund zwaren zwei Tasten nicht durch im normalen Modus vi . Angesichts der wenigen verfügbaren Tasten war die Verwendung dieser Tasten als Präfixe für Vim-spezifische Befehle wirklich die einzige Möglichkeit, viele neue Befehle im normalen Modus hinzuzufügen, ohne auf Chording zurückgreifen zu müssen.
Jamessan