Wie füge ich einen Befehl in vim editor hinzu?

87

Angenommen, mein Quellcode-Dateiname lautet "foo.c". Während des Editierens und Debuggens führe ich immer diesen Befehl aus: -

:! gcc -g foo.c -o foo; gdb foo

Kann ich Vim einen benutzerdefinierten Befehl hinzufügen, sodass der obige Befehl ausgeführt wird, wenn ich ": debug" eingebe? Wie erreiche ich das?

Abhijeet Rastogi
quelle

Antworten:

103

Ja. Vim-Dokumentation, Abschnitt 40.2, Befehlszeilenzuordnungen :

Mit dem Vim-Editor können Sie Ihre eigenen Befehle definieren. Sie führen diese Befehle wie alle anderen Befehle im Befehlszeilenmodus aus. Verwenden Sie zum Definieren eines Befehls den Befehl ": command" wie folgt:

: Befehl DeleteFirst 1delete

Wenn Sie nun den Befehl ": DeleteFirst" ausführen, führt Vim ": 1delete" aus, wodurch die erste Zeile gelöscht wird.

Hinweis: Benutzerdefinierte Befehle müssen mit einem Großbuchstaben beginnen. Sie können ": X", ": Next" und ": Print" nicht verwenden. Der Unterstrich kann nicht verwendet werden! Sie können Ziffern verwenden, aber davon wird abgeraten.

~/.vimrcFügen Sie diese Zeile in Ihre ein ( :natürlich ohne die Anfangszeile ) und sie wird bei jedem Start von vim definiert. Verwenden Sie %:tdiese Option auch, um auf die zu bearbeitende Datei zu verweisen (das Schreiben ! gcc %:twird durch ersetzt ! gcc foo.c).

Wenn Sie möchten, dass es nur für eine Datei oder für bestimmte Dateien definiert wird, möchten Sie einen automatischen Befehl.

James Polley
quelle
4
Wenn Sie einen vorhandenen Befehl ersetzen, müssen Sie verwenden command!.
Phyatt
14

Vim unterstützt bereits Makefiles (: make). Wenn Sie eine für Ihre Quelle erstellen, können Sie darin angeben, was Sie tun möchten. Durch ctags kann Vim außerdem alle Fehler durchlaufen, die während der Kompilierung festgestellt wurden.

Jeremy L
quelle
5

Fügen Sie einen benutzerdefinierten vi-Editor-Befehl hinzu:

Dies bewirkt, dass beim Eingeben :Legendim normalen Modus ein Textblock unter dem Cursor eingefügt wird.

Schritt 1: Fügen Sie diese Zeile in eine Datei mit dem Namen ~ / legend_header.txt` ein

this text will be added

Schritt 2: Fügen Sie diesen Befehl in Ihre ~ / .vimrc-Datei ein (falls die Datei nicht existiert, erstellen Sie sie):

"The following command puts the contents of ~/legend_header.txt 
"under the cursor when the user types ":Legend" in normal mode.
command Legend :r ~/legend_header.txt

Schritt 3: Starten Sie vi neu, damit die Änderungen wirksam werden. Sie sind fertig.

Probier es aus

Schritt 1: Öffnen Sie eine neue Datei in vi. Seien Sie in der Standardeinstellung "normaler Modus" in vi. Art:Legend

Schritt 2: Der Inhalt von ~/legend_header.txtsollte dort hinzugefügt werden, wo sich der Cursor befindet.

Eric Leschinski
quelle
0

Ich benutze diesen Befehl in meinem .vimrc, um den c-Code zu kompilieren und auszuführen:

:command Gcc !set $1 `echo "%" | sed 's/\.c//g'` ;gcc -o $1 "%" ; chmod o+x $1; $1

, aber für Ihre Bedürfnisse könnten Sie sagen:

:command Gdb !set $1 `echo "%" | sed 's/\.c//g'` ;gcc -o $1 "%" ; gdb $1

Sie können sicher sein, dass der Name der exec-Datei der Quellenname ohne die Erweiterung .c ist.

Juan Miguel AR
quelle