it-swarm.dev

Come aggiungere un comando nell'editor di vim?

Se supponiamo che il nome del mio codice sorgente sia "foo.c". Durante la modifica e il debug, eseguo sempre questo comando: -

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

Posso aggiungere un comando personalizzato a Vim in modo tale che se scrivo ": debug", il comando sopra venga eseguito? Come lo realizzo?

82

Sì. Documentazione di Vim, sezione 40.2, Mappature della riga di comando :

L'editor Vim ti consente di definire i tuoi comandi. Esegui questi comandi proprio come qualsiasi altro comando in modalità riga di comando. Per definire un comando, utilizzare il comando ": comando", come segue:

: comando DeleteFirst 1delete

Ora quando esegui il comando ": DeleteFirst" Vim esegue ": 1delete", che cancella la prima riga.

Nota: i comandi definiti dall'utente devono iniziare con una lettera maiuscola. Non è possibile utilizzare ": X", ": Successivo" e ": Stampa". Il carattere di sottolineatura non può essere utilizzato! È possibile utilizzare le cifre, ma questo è scoraggiato.

Metti quella riga nel tuo ~/.vimrc (meno il codice : ovviamente) e sarà definita ogni volta che avvii vim. Inoltre, usa %:t per fare riferimento al file che si sta modificando (scrivendo ! gcc %:t viene sostituito da ! gcc foo.c).

Se ti piacerebbe solo che fosse definito per il singolo file, o per determinati file, vuoi un autocomando.

98
James Polley

Vim ha già il supporto per Makefiles (: make). Se ne crei uno per la tua fonte, puoi specificare cosa vuoi fare. Inoltre, attraverso ctags, Vim sarà in grado di scorrere tutti gli errori trovati durante la compilazione.

14
Jeremy L

Aggiungi un comando di editor vi definito dall'utente:

Questo farà sì che quando l'utente digita :Legend in modalità normale, viene aggiunto un blocco di testo sotto il cursore.

Passo 1: Metti questa linea in un file chiamato ~/legend_header.txt`

this text will be added

Passaggio 2: Inserisci questo comando nel tuo file ~/.vimrc (se il file non esiste, crearlo):

"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

Passaggio 3: riavviare vi per rendere effettive le modifiche. Hai finito.

Provalo

Passaggio 1: aprire un nuovo file in vi. Essere nella "modalità normale" predefinita in vi. Digita :Legend

Passo 2: Il contenuto di ~/legend_header.txt dovrebbe essere aggiunto dove si trova il cursore.

5
Eric Leschinski

Io uso questo comando nel mio .vimrc per compilare ed eseguire il codice c:

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

, ma per le tue esigenze potresti mettere:

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

Puoi essere sicuro che il nome del file exec sarà il nome sorgente senza estensione .c.

0
Juan Miguel AR