¿Cómo agregar un comando en vim editor?

84

Si supongamos que mi nombre de archivo de código fuente es "foo.c". Mientras edito y depuro siempre ejecuto este comando: -

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

¿Puedo agregar un comando personalizado a Vim de modo que si escribo ": debug" se ejecute el comando anterior? ¿Cómo lo logro?

Abhijeet Rastogi
fuente

Respuestas:

99

Sí. Documentación de Vim, sección 40.2, Asignaciones de línea de comandos :

El editor Vim le permite definir sus propios comandos. Ejecuta estos comandos como cualquier otro comando del modo de línea de comandos. Para definir un comando, use el comando ": comando" de la siguiente manera:

: comando DeleteFirst 1delete

Ahora cuando ejecuta el comando ": DeleteFirst" Vim ejecuta ": 1delete", que elimina la primera línea.

Nota: Los comandos definidos por el usuario deben comenzar con una letra mayúscula. No puede usar ": X", ": Siguiente" e ": Imprimir". ¡El guión bajo no se puede usar! Puede usar dígitos, pero esto no se recomienda.

Ponga esa línea en su ~/.vimrc(menos la inicial, :por supuesto) y se definirá cada vez que inicie vim. Además, use %:tpara hacer referencia al archivo que se está editando (la escritura ! gcc %:tse reemplaza por ! gcc foo.c).

Si solo desea que se defina para un archivo, o para ciertos archivos, desea un comando automático.

James Polley
fuente
4
si está reemplazando un comando existente, debe usarlo command!.
phyatt
14

Vim ya tiene soporte para Makefiles (: make). Si crea uno para su fuente, puede especificar en él lo que desea hacer. Además, a través de ctags, Vim podrá iterar a través de cualquier error encontrado durante la compilación.

Jeremy L
fuente
5

Agregue un comando de editor vi definido por el usuario:

Esto hará que cuando el usuario escriba :Legenden modo normal, se agregue un bloque de texto debajo del cursor.

Paso 1: ponga esta línea en un archivo llamado ~ / legend_header.txt`

this text will be added

Paso 2: ponga este comando en su archivo ~ / .vimrc (si el archivo no existe, créelo):

"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

Paso 3: reinicie vi para que los cambios surtan efecto. Ya terminaste

Pruébalo

Paso 1: abra un nuevo archivo en vi. Estar en el "modo normal" predeterminado en vi. Tipo:Legend

Paso 2: El contenido de ~/legend_header.txtdebe agregarse donde está el cursor.

Eric Leschinski
fuente
0

Uso este comando en mi .vimrc para compilar y ejecutar el código c:

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

, pero para sus necesidades podría poner:

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

Puede estar seguro de que el nombre del archivo exec será el nombre de origen sin la extensión .c.

Juan Miguel AR
fuente