You are on page 1of 16
‘Lutorial de VIM para programar en C Luis Alberto Giménez algubetteleline.es 2 de junio de 2005 Indice 1, Introduccion LL. La ayuda de vim 2. Fimcionalidades internas 2.1. Resaltado de sintaxis, 2.2. Indentado de codigo 2.3. Paréntesis y Haves 24, Folding (plegado) de eédigo 2.5, Completado de cédigo 2.6, Identificadores 3. Fincionalidades externas on con gee 3.3. Compilacién con make 4, El archivo de configuracion 5. Resumen A. Referencia ALL. Opciones de configuraci6n A.2. Ordenes internas A.3. Ordenes externas u ul 12 13 14 ul i i 1 INPRODUCCION 2 1. Introduecién Vim es un editor de textos muy potente, nos permite hacer practicamente cualquier cosa y es extremadamente configurable. Proviene de una version mejorada del editor vi. Un punto a su favor es que esta presente en alguna de sus formas en todos los UNIX que existen actualmente. Este no es un tutorial de introduccién a vim. Aqui no se explicaran las ordenes bisieas de movimiento ni de edici6n, ya que eso viene explicado an pliamente en otros tutoriales disponbiles en la red. Kn este pequeiio tutorial nos centraremos en las posibilidades que nos brinda el editor de cara a la programacin en el lenguaje C 1.1, La ayuda de vim Hay que remarcar aqui que todo lo explicado se tha sacado del mannal de vim. Podremos acceder a él en cualquier momento pulsando la tecla FT 0, desde el modo comando introducir :help. Los dos puntos sirven para entrar en el modo ed y nos ayudan a ejecutar ciertas funciones no disponibles en el masta comando, Respecto a las palabras clave, érdenes y funciones que se comentan en este tutorial, diremos aqui que se puede acceder a su explicacion utilizando la orden :help palabra En el modo ed funciona el completado de nombres mediante la tecla del tabulador, de modo que si escribimos: she ¥ apretamos la tecla tabulador, vim iré completando ciclicamente todas las posibilidades que empiecen por “he”, Esto es muy titil si no recordamos exactamente alguna opcién de la que queramos recordar para qué sirve Aconsejamos echar un vistazo ala ayuda de vim ya que es extensisima y on ella se pueden encontrar trucos que a simple vista no son evidentes. Ade- nds incluye un manual de usuario completisimo y un manual de referencia fle todas sus fimciones 2. Funcionalidades internas Vim tiene una serie de funcionalidades preestablecidas para hacernos mas comoda la programacion en C, Bn la seccién 3 veremos algunas de las funcionalidades de este editor que necesitan de algiin programa externo, 2.1, Resaltado de sintaxis El resaltado de sintaxis (0 syntax highlighting) es una manera que tienen los editorres 0 visores de cédigo para ayudarnos a identificar las palabras clave del lenguaje, las constantes, etc. Vim es muy bueno en esto, ¥ no 2. PUNCIONALIDADES INTERNAS s6lo para el lenguaje C, reconociendo sintaxis y coloreando m sliferentes de archivos Para activar esta utilidad necesitamos hacerlo desde el modo ed: de 300 tipos syntax on Al momento se nos coloreard (0 segtin el tipo de terminal que tengamos, aplicaré. estilos de negrita, subrayado 0 cursiva) el cédigo. Podemos definir mo queremos que nos coloree vim el cédigo, las palabras que debe recon cer como claves, ete...en el archivo /usr/share/vin/vin61/syntax/c. vim, aunque viene ya con una definicién del lenguaje muy buena y no es algo trivial de modificar. A la hora de utilizar el resaltado de sintaxis no todas las terminales son iguales. Vim nos permite distinguir entre terminales de fondo oscuro ¥ de fondo claro, Esto ayuda al editor a elegir los colores que mas se adecuan al fondo que tengamos configurado en nuestra terminal. Para determinar el fondo de nuestra terminal utilizaremos la variable background: set background-color donde color seri dark cuando el fondo de nuestra terminal sea oscuro, para que sean utiliza. dos colores mis vivos y brillantes, light cuando nuestra terminal si mas asenras. clara, para que vim utilice unos colores 2.2. Indentado de cédigo El indentado de e6digo es algo muy importante, ya que aumenta la le sibilidad de nuestros programas ¥ nos facilita la identiticacién de bloques de cédigo, Vim acepta varios tipos de indentado, pero como no, tiene uno dedicado integramente a los archivos eseritos con el lenguaje C Para activar el identado podemos utilizar :set cindent, y para dlesac varlo, :set nocindent. Hay que decir que todos los pardmetros de indentado son configurables. Podemos también utilizar :set autoindent, que inde ta las Iineas con el indentado de las anteriores. Funciona igualmente bien (aunque utiliza internamente el indentado de C) A Ta hora de cerrar bloques con el cardcter *}’, vim automticamente quita un nivel de indentado al e6digo y mueve este cardcter a su ugar co- recto, haciendo innecesario el tener que borrar el supuesto tabulador extra que proviene del indentado automatico. Como vemos, con vim todo son facitidades Hay que decir que el indentado se apoya en la introduccién de ciertos cardcteres, como por ejemplo las Haves “{’, ‘}’, los paréntesis y algunos més, 2. PUNCIONALIDADES INTERNAS 4 Si nos equivocamos al poner éstos, puede ser que vim no nos indente ¢o- rrectamente el e6digo. De hecho, como veremos en la seccién 2.3, éste nos resaltaré los paréntesis desemparejados. Cuando esto ocurra, aunque corrijamos el eddigo, el editor no corregi- 4 automaticamente el indentado. Aquf es donde entra el comando =. Este operador (como précticamente todos los de vim) acepta un argumento de “rango”. Veamos un ejemplo: En este caso, utilizaremos un bloque if: Imaginemos que olvidamos el paréntesis que cierra la expresién de comparacién. Al abrir luna nueva linea, nos haré un doble indentado (porque se piensa que estamos continuando la expresién, en Iugar de escribiendo sentencias) if (expresion sentencia; Para corregirlo, debemos aiiadir el paréntesis que falta, cerrando la ¢ presin, ir a la linea de la sentencia, y, desde el modo comando, presionar Jo cual nos indentara correetamente la sentencia if (expresion) sentencia; Se puede pensar que hacer esto para cada linea que tengamos mal in- dentada puede ser muy trabajoso. Aqui es donde entran los argumentos de tango, Para facilitar el trabajo, podemos indicar al operador = que reindente n Iineas, todo un bloque entre ‘{’ y *}’, un bloque seleceionado en el mode visual o incluso el archivo entero facilmente. A modo de ejemplos: »j Corregiria el indentado de las siguientes dos lineas (j es intercam- biable por el cursor abajo). . { Reindenta todo el bloque entre | y f, va sea una funcién, un Bloque if, etc Reindenta hasta el final del fichero. Podemos movernos a la primera linea de éste para hacer que el indentado sea de todo el fichero. Dentro de esta seccién de indentado, es obligatorio hablar de los tabu- ladores. Hay varias corrientes entre los programadores: sustituir tabuladores por espacios, utilizar un eardcter tabulador, ete. Personalmente yo utilizo un carécter tabulador, me es més comodo y puedes configurar tu editor para visualizar el miimero de espacios que quie- ras. Ademds a la hora de borrar “tabuladores” es més simple que borrar “n espacios”, aunge esto sea automatico con vim (quien lo dudaba?) Para contigurar el nitmero de espacios que utiliza cada tabulador, ut lizaremos la variable tabstop, ¥ para definir el nimero de espacios que se 2. PUNCIONALIDADES INTERNAS insertarin por cada indentado (mediante indentado automético 0 con érde- hes a vim), utilizaremos shiftwidth, Es aconsejable dejar tabstop y shiftwidth a la misma cantidad de es- pacios que queramos ver. Asi mantendremos los tabuladores (no serén e pandidos a espacios). Para mejorar la legibilidad del e6digo es mejor que los tabuladores no estén representados por menos de 4 6 5 espacios. Como ejemplo, mi configuracién personal es: set tabstop=4 set shiftmidth=4 2.3. Paréntesis y Maves Los paréntesis y las laves son fundamentales en la programacion en C. Vim tiene funcionalidades para ayudarnos a no olvidar ningiin paréntesis, En primer lugar, tenemos el comando’%, que nos ayuda a encontrar las parejas de paréntesis o Haves. En conereto, busca el paréntesis que cierra ¢ abre al que tenemos bajo el cursor. Por ejemplo, en esta sentenci (Ub #6) # @) / (a+ £)); a Si colocamos el cursor sobre el primer paréntesis ‘(° y presionamos la tecla%, vim saltaré el cursor hasta el diltimo paréntesis, que es el que le cierra, Ksto es titil para encontrar paréntesis desemparejados, ya que en este caso el editor emitiré un pitido y no saltard a ningin lugar, Esta tecla es muy atil, pero a veces, a medida que introdueimos e6diga no Hevamos la cuenta de los paréntesis que levamos abiertos, 0 si ain no hemos cerrado el primero que abrimos.... Con el indentado que nos hace vim, si muestra sentencia ocupa mis de una linea nos podemos hacer una idea de si nos hemos equivocado con los paréntesis Hay otro método que nos proporciona vim para ayudamnos con los pa- réntesis. Se activa mediante :set showmatch. Cuando tenemos esta opcién activada, cada vez que cerremos tn paréntesis el cursor saltaré brevemente ala posicién del paréntesis al que éste cierra. Asi podremos comprobar que vamos cerrando correctamente nuestros paréntesis. Adicionalmente, si intro- ducimos un paréntesis de cierre extra, vim lo restaltaré indicénconos que esta desemparejado. ,Quién da mas? Cabe remarcar qne en esta seccién nos hemos referido a paréntesis, pero todo lo comentado funciona también para las Iaves ('{’, ‘}'}, los corchetes C7, ‘[) u otros cardcteres definibles por nosotros mismos (gracias a Ta gran configurabilidad de vim), 2.4, Folding (plegado) de cédigo Una de las cosas que la gente echa de menos en vim es el hecho de poder “cerrar” el cédigo de las funciones para mejorar la visibilidad de éste. Pues 2. PUNCIONALIDADES INTERNAS 6 vim lo hace, pero tenemos que decirselo explicitamente (recordad que no s6lo se usa para editar programas) ‘uando pleguemos un trozo de c6digo, seré sustituido por una séla linea resaltada con el niimero de Iineas que contiene y el contenido de la primera de las lineas que se han plegado. Con el plegado podemos trabajar como si lo hiciéramos con todas las que contiene a la vez (cortar, copiar, ...) int filter_mode (void) + 98 lines: 4 En este caso hemos plegado una funcién que ocupa 98 Iineas, y s6lo se thos muestra Ia Tlave de apertura de la funcién (su primera linea) Hay varios métodos para que vim reconozca e6mo debe plegar nuestra e6digo. Nos centraremos en los dos més faciles de usar: indent Utiliza los niveles de indentado en el e6digo para determinar qué lineas plegar. syntax Utiliza una definicién similar a la del resaltado de sintaxis para decidir e6mo plegar las lineas. EI mejor método es el segundo, ya que utiliza la definicién de sintaxis propia que utiliza vim para resaltar el cédigo, La contrapartida es que estas definiciones no son faciles de escribir, es necesario un cierto conocimiento de los ficheros de sintaxis. Una regla sencilla para utilizar en nuestros ficheros en C podria ser: syntax region myFold start="{" end="} set. foldmethod=syntax " transparent fold so definiria como codigo a plegar todo aquél que se encontrara entre los cardicteres ‘{” ¥ *f’, con lo que podriamos plegar funciones, bloques if, switch, te. Ademés, activa el método de sintaxis de plegado. Para utilizar el método indent, lo tnico que debemos hacer es: set foldmethod=indent Y a cada nivel de indentado, nos crearé un plegado. ‘Todas las érdenes de plegado tienen en comin su primer cardcter: 2. Fijaos que la 2 nos po- dria recordar tna hoja de papel doblada vista de lado ?. Una vez. activade correctamente el plegado, las érdenes basicas para trabajar con éste son: 20 Abre un nivel (el més externo) situado bajo el cursor. Por ejemplo, te- niendo el siguiente eédigo: "0 ese dice of mannal de View 2. PUNCIONALIDADES INTERNAS int mifuncion(void) 1 sentencii sentencia: if (expresion) { sentencias; sentencias: Af (expresion2) { sentencias: sentencias; t Si lo cerramos y desde el modo comando hacemos zo, obtendremos: int mifuncion(void) 20 Abre todos los niveles recursivamente. Por lo tanto, con esta orden ob- tendriamos el desplegado de toda la funcién. ze Cierra el plegado correspondiente al lugar donde tengamos el cursor. 2C Cierra todos los plegados bajo el cursor recursivamente. aR. Abre todos los plegados del fichero que estemos editando, 2M Cierra todos los plegados del fichero, 2.5. Completado de cédigo A estas alturas, no deberiamos dudar que vim soporta el completado de codigo (y no solo de cédigo), a pesar de ser una de las funcionalidades que inds choca ala gente (que no sabe que vim es més que un simple editor de textos) Para completar un nombre que tenemos comenzado, dentro del mismo modo inserci6n, tenemos estas dos drdenes: CONTROL-n Completa buscando concordancias hacia adelante en el fi- chero (volviendo al principio si llega al final). 2. PUNCIONALIDADES INTERNAS 8 CONTROL-p Completa buscando hacia atrés, El completado de cédigo funciona también con los ficheros que hay incluido, y los inchufdos en estos (recursivamente). Como comentario final, decir que estas dos Ordenes forman parte de un submodo dentro del modo in: sercién que sirve para completar ciertos elementos. Como ejemplo, podemos decir que eon: ‘CUNTRUL-x CONTRUL-£ Completarfamos un nombre de fichero. Para entrar en este modo util zamos la combinacion CONTROL-x desde dentro del mismo modo insercién, y saldremos de él con cualquier tecla 0 combinacién que no sea vilida en el modo de completado. Para ilustrar mejor el funcionamiento del completado veamos un ejemplo. Supongamos que tenemos el siguiente cédigo int funcion! (void) : int funcion2(void) ; int funcion3(void) int funcion(veid) 4 fun , Si estamos escribiendo fun y apretamos la combinacién CTRL-n, veremos que vim nos completa la siguiente coincidencia, y en la dltima linea nos sale un indicativo de que estamos en el modo de completado: int funciont (void) : int funcion2(void) : int funcion3(void) ; int funcion(void) 4 frmedont ? + Keyword completion (-W/-P) match 1 Si volvemos a apretar CTRL-n, nos saldré funcion2, y asi sucesivamente, hasta volver al texto original y vuelta a empezar, Podemos completar también las macros con CTRL-x CTRL-d. 3 FNCIONALIDADES EX'TERNAS 4 2.6. Iden cadares Muchas veces nos ha pasado que no recordamos de qué tipo es una varia- ble (;unsigned? ;1ong?), o que no recordamos los argumentos que le tenemos que pasar a cierta funcién o el orden de éstos. Podemos ir al fichero donde esta declarado, pero podrfamos perder el hilo de lo que estabamos haciendo o simplemente resultarnos incémodo. Vim tiene varias funcionalidades que nos ayudan en esta tarea En primer lugar tenemos las ordenes gd y gD (goto declaration), que saltan al lugar donde se declara una variable local o global, respectivamente, Podemos volver al Ingar que estébamos editando con la orden ”, que no s¢ explicard aqui pero podéis buscar informacién en la ayuda con :help ”. Estas drdenes son bastante limitadas, ya que no buscan en los ficheros inetuidos. Pero vim tiene una orden mas potente para la biisqueda de ide tificadores: (I. Cuando pulsemos esta combinacion cuando estemos encima de una palabra, nos aparecerd una lista de todas las coincidencias en el ar- chivo actual, los ineluidos, ete. ..junto con el nombre de archivo y Knea de la definicion. Como ejemplo veamos qué nos dice vim sobre muestra funcion2 del e6digo de ejemplo de la pagina 8: foldi.c 1: 2 int funcion2(void); Como vemos, nos ha encontrado la definicion de funcion2 en la linea 2 del archivo £0141 -6. Funcionalidades externas Hay muchas utilidades dentro de vim que necesitan de un programa externo para poder ser utilizadas. Algunas de ellas son basicas dentro de la programacién en C. En esta seccién hablaremos de las mas importantes: los tags, la ejecu- cién de érdenes del shell y la estrecha relacién que tiene vim con make, la herramienta para compilar nuestros programas facilmente. 3.1. ‘Lags Un tag es un identificador (como una etiqueta) que nos sirve para mover- thos a lo largo de nuestro programa. Podemos saltar de etiqueta en etiqueta, volver atras. Estas etiquetas, en lo cue nos respecta, serdn los nombres de funciones. variables, estructuras y demds elementos importantes del cédigo en C que estemos editando, por ejemplo, si tenemos el cédigo: 3 FNCIONALIDADES EX'TERNAS Ww int funcion(char string(I) { int nunero: rmunero = cuenta_repetides (string); return munero; y Y queremos saber cémo es la funcién cuenta_repetidos, podemos saltar ‘ella directamente, sin saber el fichero en Ia que esta escrita, ni siquera salir del editor Para generar estas etiquetas 0 fags necesitamos un programa extern llamado ctags 0 eruberant-ctags, una version mejorada del anterior. Queda fuera del ambito de este tutorial describir e6mo funciona este programa, pero deberia ser suficiente la orden: 8 ctags -R para generar tn fichero de tags de todos los ficheros fuente (*.c y *h) del directorio actual y los hijos, recursivamente. Una vez creado, podemos navegar por las tags mediante la combinacién de teclas CTRL-] (en modo comando), Para volver atras tenemos Ia combi- nnacién CTRL-T. Veamos un ejemplo, sacado del mismo manual de vim: void write.block(char 4s; int cnt) { int i: for (i = 0; i < enti +44) +>] write Line(sLid; 4-9 Ivoid write Line(char +s) 1 ra i | shite (es t= 0) i oTaL-T 1 write char(sse#); | n i Todas las tags por donde pasamos quedan guardadas en una “pila” que podemos ver en todo momento con :tags Si hay varias coincidencias (por ejemplo, la definicién de una funcién en tun fichero fuente y su declaracion en un fichero cabecera), vim asi nos lo indicara y podremos utilizar las ordenes :tnext y :tprevious para pasar a la siguiente y anterior coincidencias, respectivamente 3 FNCIONALIDADES EX'TERNAS u Hemos dicho ya anteriormente que el modo ed (al que se entra con los dos puntos ‘:”) soporta también completado, Io que también nos va a ayudar con las tags. Con la orden :tag ettqueta podemos saltar a la etiqueta que queramos directamente. El completado nos puede ayudar si no recordam el nombre completo de la etiqueta. Por ejemplo, teniendo en cuenta el codigo anterior, podriamos uti tag write_ y vim nos completarfa la etiqueta con write_line 3.2. Compilacién con gee Desde dentro de vim podemos ejecutar 6rdenes externas mediante la shell. Esto se hace mediante : orden, donde orden es la que queremos que sea ejecutada, Con ayuda de esa funcién podemos ejecutar el compilador con nuestro archivo 0 con cualquiera. Por ejemplo, para compilar nuestro archivo en un ejecutable llamado out, podemos hacer: tgec % -0 out Notese que utilizamos el comodin’ para referenciarnos al fichero actual. Hay que decir que éste no es un método muy Sptimo para compilar programas, sobretodo si éstos constan de varios ficheros y hay dependencias entre ellos. Aunque para pequefias pruebas puede ser ttil, es mejor utilizar lo que se explica en la signiente seecién: el uso de make junto con vim. 3.3. Compilacién con make Lo normal cuando se programa en C algo que conste de més de un par de ficheros es utilizar la herramienta make. Aqui no se va a explicar cémo fun- viona, ya que se supone que se sabe como escribir un Makefile para compilar tun programa. ‘Vim se integra perfectamente con la herramienta make. Reconoce los posibles errores que nos devuelve la compilacién y autométicamente abre el fichero en la linea que dio error. Podesos pasar también argumentos al programa (por si nos interesa compilar un objetivo en concreto) Para llevar a cabo tna compilacién utilizaremos la orden :make. Cuidado, tno hay que confundir esto, que es una orden interna de vim con una ejecucién externa del programa make (: !make) Una vez ejecutada la orden, veremos brevemente la salida de las 6rdenes correspondientes del Makefile, hasta que éstas acaben, con un error o bien con una compilacién correcta. Hin caso de tna compilacién correcta nos de- volverd al punto que estnvieramos editando. $i ha habido errores 0 avisos. 4 FI. ARCHIVO DE. CONFIGURACION 2 vim saltaré a la linea del archivo que lo provocd, mostréndonos el error en la linea de estado. Veamos un ejemplo: Fincludecetdio.n> void escribir nensaje(void) 4 printf("ola, mindo!\n' , int main (void) 4 escribirmensaje("hola"); return 0: En ese cédigo, la funcién escribir_mensaje no acepta pardmetros, con lo que al construir el ejecutable con :make, nos daré la salida de la ejecucién le make con el error: rain.e: Tn fomnetion ‘main? : main.c:9: too many argunents to function ‘escribir_nensaje? make: ##* [nain) Error 1 Ast EWTER or type comand to continue Si presionamos la tecla ENTER, volveremos al editor justo en la linea del error, pudiendo corregirla, y el error devuelto se mostraré en la Iinea de estado: (3 of 5): too many arguments to function ‘escribir_mensaje’ Ein ocasiones ocurre que todo el texto del error no cabe en una s6la linea, por lo que aparece cortado. Para verlo entero podemos usar la orden :¢¢. Cuando nuestro programa tenga més de un error podemos pasar de tino a otro con :cnext y :cprevious, respectivamente para el siguiente y el anterior Como vemos, compilar y depurar programas desde dentro de nuestro editor favorito es muy sencillo gracias a la gran potencia de vim. De hecho no s6lo estamos limitados a compilar archivos en C. Podemos indicar al editor el programa que queramos que se ejeeute cada vex que uusamos :make, ¢ incluso podemos indicarle cémo es el formato de la salida de éste para que identitique los errores y asi poder tener una funcionalidad similar a la que tenemos con el compilador gee, pero eso ya es otra historia, 4. El archivo de configuracién Durante gran parte de este tutorial se han visto ordenes de vim que modifican su comportamiento como por ejemplo :syntax on. Posiblemente 5) RESUMEN iF inichas de estas opciones las queremos utilizar a diario y nos es incbmode tener que introducirlas cada vex que abramos el editor. Para guardar estas opeiones por defecto tenemos el archivo .vimre de nuestro directorio home, donde las guardaremos tal y como las escribimos dentro del mismo vim, pero sin los dos puntos. Por ejemplo, el siguiente fichero .vimre: syntax on Ret, shoumateh aot. cindent: Haria que cada vez que abrieramos el editor se activaran las opciones de resaltado de sintaxis, emparejado de paréntesis y el indentado especial de védigo C. Resumen Como hemos visto, con vim tenemos muchas ayudas y caracteristicas bastante desconocidas que hacen de éste un editor muy potente, ffexible, v tmny superior a muchos otros disponibles. En resumen, vim es mas que un editor de textos. Ks Kl Kalitor De hecho, quedan muchisimas cosas en el tintero, pero se ha intentado teflejar en este tutorial las caracteristicas més importantes que tiene vim de cara a la programacion en el lenguaje C, Como se ha comentado en la seceion 1.1, podemos utilizar la muy extensa documentacién que trae el programa incorporada, que consta desde un manual de usuario (navegable mediante fags) hasta una completa referencia de todas las érdenes, opciones, variables, ete... De obligada consulta si queréis dominar un poco més este fantastico editor y descubrir funcionalidades que no se pueden ni imaginar otros programas similares A. REFFRENCIA A. Referencia Al. Orden Opciones de configuracién Significado reyatax on Activa el resaltado de sintaxis Especifica el conjunto de colores a usar respecto del fondo de nuestra terminal set _cindent/nocindent Activa/desactiva el indentado de © rset autoindent ‘Activa el indentado automatico (s- gue el de la anterior Kinea) Los tabuladores serdn de 4 espacios. Tos indentados seran de 4 espacios. rset foldnethod=syntax ‘Activa el mostrado de los paréntesis emparejados, ‘Activa el plegado de eédigo 5 sintaxis, “gin rset foldnethod=indent ‘Activa el plegado de eédigo sein in- dentado u A. REFFRENCIA A.2. Ordenes internas Orden Significado thelp ‘Abre una nueva ventana con la ayuda de vim Corrige el indentado de Ta Tinea actual Corrige el indentado de todo un bloque de codigo % Busca la pareja del paréntesis o Have ac- tual 20 Despliega un bloque 20 Despliega Tos bloques recursivamente ze Pliewit uu bloque 20, Pliega los bloques recursivamente 2 Despliega todos los bloques del fichero ac- tual 2H Pliega todos los bloques del fichero actual ‘CTRL-a ‘Completa la palabra buscando hacia de- ante ‘CTRL-p Completa Ta palabra buscando hacia atras CTRL-x CTAL-f | Completa un nombre de fichero GTRL-x CTRL-d | Completa una macro ed Salta a la definicion local del identificador 2 Salta a la definicin global del identifica- dor Tr Muestra Ta definieion del identificador (busca en ficheros inclufdos). A.3. Ordenes externas Orden Significado CTRL-] Saltar a la etiqueta bajo el cursor CTRL-T Volver de un salto a etiqueta rage ‘Muestra Ia pila de etiquetas rtag etiqueta Salta a una etiqueta determinada next Salta a la siguiente etiqueta coincidente rtprevious | Salta a la anterior etiqueta coincidente orden Ejecuta orden en una shell make Ejecuta la herramienta make analizando la salida, Ver un mensaje de error de compilacion entero (sino cabe en la Iinea de estado) Salta al siguiente mensaje de error Salta al anterior mensaje de error i

You might also like