Jak dodać polecenie w edytorze vim?

86

Załóżmy, że nazwa mojego pliku kodu źródłowego to „foo.c”. Podczas edycji i debugowania zawsze wykonuję to polecenie: -

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

Czy mogę dodać niestandardowe polecenie do Vima, aby po wpisaniu „: debug” wykonano powyższe polecenie? Jak to osiągnąć?

Abhijeet Rastogi
źródło

Odpowiedzi:

102

Tak. Dokumentacja Vima, sekcja 40.2, Odwzorowania wiersza poleceń :

Edytor Vim umożliwia definiowanie własnych poleceń. Wykonujesz te polecenia tak jak każde inne polecenie w trybie wiersza poleceń. Aby zdefiniować polecenie, użyj polecenia „: polecenie” w następujący sposób:

: polecenie DeleteFirst 1 usuń

Teraz po uruchomieniu polecenia „: DeleteFirst” Vim wykonuje „: 1delete”, który usuwa pierwszy wiersz.

Uwaga: Polecenia zdefiniowane przez użytkownika muszą zaczynać się wielką literą. Nie można używać „: X”, „: Dalej” i „: Drukuj”. Podkreślenia nie można użyć! Możesz używać cyfr, ale jest to odradzane.

Umieść tę linię w swoim ~/.vimrc(minus :początkowe, oczywiście), a zostanie ona zdefiniowana za każdym razem, gdy uruchomisz vima. Użyj również, %:taby odwołać się do edytowanego pliku (zapis ! gcc %:tzostanie zastąpiony przez ! gcc foo.c).

Jeśli chcesz, aby był zdefiniowany tylko dla jednego pliku lub dla niektórych plików, potrzebujesz komendy automatycznej.

James Polley
źródło
4
jeśli zastępujesz istniejące polecenie, musisz użyć command!.
phyatt
14

Vim ma już wsparcie dla Makefiles (: make). Jeśli utworzysz taki dla swojego źródła, możesz określić w nim, co chcesz zrobić. Ponadto za pomocą ctagów Vim będzie mógł iterować po błędach wykrytych podczas kompilacji.

Jeremy L.
źródło
5

Dodaj zdefiniowane przez użytkownika polecenie edytora vi:

Sprawi to, że gdy użytkownik napisze :Legendw trybie normalnym, pod kursorem zostanie dodany blok tekstu.

Krok 1: Umieść tę linię w pliku o nazwie ~ / legend_header.txt`

this text will be added

Krok 2: Umieść to polecenie w pliku ~ / .vimrc (jeśli plik nie istnieje, utwórz go):

"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

Krok 3: Uruchom ponownie vi, aby zmiany zaczęły obowiązywać. Jesteś skończony.

Sprawdź to

Krok 1: Otwórz nowy plik w vi. Wejdź w domyślny „tryb normalny” w vi. Rodzaj:Legend

Krok 2: Zawartość ~/legend_header.txtnależy dodać w miejscu, w którym znajduje się kursor.

Eric Leschinski
źródło
0

Używam tego polecenia w moim .vimrc do kompilacji i wykonania kodu c:

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

, ale na twoje potrzeby możesz umieścić:

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

Możesz być pewien, że nazwa pliku exec będzie nazwą źródła bez rozszerzenia .c.

Juan Miguel AR
źródło