Was ist Vim-Aufnahme und wie kann sie deaktiviert werden?

761

Ich sehe die recordingNachricht unten in meinem gVim 7.2-Fenster.

Was ist das und wie schalte ich es aus?

vehomzzz
quelle
55
map q <Nop>Fügen Sie Ihrer .vimrc-Datei etwas hinzu , um die vim-Aufnahme endgültig zu deaktivieren.
Joey Adams
4
Ich kann nicht glauben, dass Sie die Aufnahme ausschalten wollen! Ich würde ein wirklich nerviges Popup zeigen. "Bist du sicher?" wenn man es ausschalten möchte (oder wahrscheinlich Optionen wie das Windows 10-Update geben möchte).
0xc0de
Verwandte: Wie beende ich den Vim-Editor?
Peter Mortensen

Antworten:

1054

Sie beginnen die Aufnahme mit q<letter> und können sie beenden, indem Sie qerneut tippen .

Die Aufnahme ist eine sehr nützliche Funktion von Vim.

Es zeichnet alles auf, was Sie eingeben. Sie können es dann einfach durch Eingabe wiedergeben @<letter>. Datensatzsuche, Bewegung, Ersatz ...

Eines der besten Features von Vim IMHO.

Jogsototh
quelle
109
Wie an anderen Orten zu sehen ist, folgt q, gefolgt von einem Register. Ein wirklich cooler (und möglicherweise nicht intuitiver) Teil davon ist, dass dies dieselben Register sind, die von Dingen wie Löschen, Ziehen und Setzen verwendet werden. Dies bedeutet, dass Sie Text aus dem Editor in ein Register ziehen und dann als Befehl ausführen können.
Cascabel
68
Eine weitere Sache, die Sie beachten sollten, ist, dass Sie eine beliebige Zahl vor dem @ drücken können, um die Aufnahme wiederzugeben, die Ihre Aktionen so oft wie (100 @ <letter>) 100 Mal
abspielt
7
Sie können es anschließend hinzufügen, indem Sie das Register mit put / yank bearbeiten. Aber ich weiß nicht, warum Sie die Aufnahme als Teil eines Makros ein- oder ausschalten möchten. ('q' beeinflusst nichts, wenn es im Einfügemodus eingegeben wird.)
anisoptera
3
@ Wade "- es heißt das Standardregister.
Cascabel
4
and how to turn offwar auch die Frage
n611x007
103

Geben Sie ein :h recording, um mehr zu erfahren.

                           * q *  * Aufzeichnung * 
q {0-9a-zA-Z "} Geben Sie eingegebene Zeichen in das Register {0-9a-zA-Z"} ein.
                        (Großbuchstaben zum Anhängen). Der Befehl ' q ' ist deaktiviert
                        während der Ausführung eines Registers , und es funktioniert nicht im Inneren
                        eine Zuordnung . {Vi: keine Aufnahme}

q                        Stoppt die Aufnahme . (Implementierungshinweis: Das ' q ' das
                        stoppt die Aufzeichnung wird nicht im Register gespeichert , es sei denn,
                         es war das Ergebnis einer Zuordnung ) {Vi: keine Aufzeichnung}


                                                        * @ *
@ {0-9a-z ". = *} Führe den Inhalt des Registers {0-9a-z". = *} [Count] 
                        mal aus. Beachten Sie, dass Register ' % ' (Name des aktuellen
                        Datei) und ' # ' (Name der alternativen Datei) können nicht sein
                        benutzt. Für " @ = " werden Sie aufgefordert, einen Ausdruck einzugeben
                         . Das Ergebnis des Ausdrucks ist dann
                        hingerichtet. Siehe auch | @: |. {Vi: nur benannte Register}
kurzlebig
quelle
31

Durch Eingabe wird qdie Makroaufzeichnung gestartet, und die Aufzeichnung wird beendet, wenn der Benutzer qerneut trifft .

Um die Aufnahme zu deaktivieren, fügen Sie, wie Joey Adams erwähnte, die folgende Zeile .vimrcin Ihr Home-Verzeichnis ein:

map q <Nop>
Mitchus
quelle
11
Beantworten Sie nur einen Teil der Frage zum Ausschalten. Nun, es macht die Aufnahme unzugänglich und schaltet sie effektiv aus - zumindest erwartet niemand, dass vi einen separaten Thread für diesen Code hat, denke ich, einschließlich mir.
n611x007
25

Wie andere gesagt haben, handelt es sich um eine Makroaufnahme, die Sie mit q ausschalten. Hier ist ein schöner Artikel darüber, wie und warum es nützlich ist.

JeffH
quelle
15

Dies bedeutet, dass Sie sich im Modus "Makro aufzeichnen" befinden. Dieser Modus wird durch Eingabe qgefolgt von einem Registernamen aufgerufen und kann durch erneutes Eingeben verlassen qwerden.

John Millikin
quelle
Es wird tatsächlich durch Eingabe qgefolgt von einem beliebigen Registernamen eingegeben , der 0-9, az, AZ und ".
Ephemient
3
Eigentlich ist es q {0-9a-zA-Z "} - Sie können ein Makro in jedes Register aufnehmen (benannt nach Ziffer, Buchstabe,"). Falls Sie es tatsächlich verwenden möchten ... führen Sie den Inhalt eines Registers mit @ <register> aus. Sehen Sie :help qund :help @wenn Sie daran interessiert sind, es zu verwenden.
Cascabel