Guía avanzada del usuario

Comandos vi básicos

Las secciones siguientes explican varias categorías de comandos vi. Estas incluyen:

Cómo desplazarse por un archivo

En las secciones previas ha aprendido a crear, guardar, imprimir, y salir de un archivo vi. Ahora que ha creado un archivo, necesitará entender los conceptos necesarios para desplazarse por él. Abra el archivo de prácticas ahora, e intente probar cada uno de los comandos discutidos en esta sección.

Cómo mover el cursor

Cuando empiece vi, el cursor estará en la esquina superior izquierda de la pantalla de vi. En modo de comando, puede mover el cursor con varios comandos de teclado. Ciertas teclas de letras, las teclas de dirección, y la tecla Retorno, la tecla de retroceso (o Eliminar), y la Barra Espaciadora pueden utilizarse para mover el cursor cuando esté en modo de comando.


Nota -

La mayoría de los comandos vi distinguen entre letras mayúsculas y minúsculas, el "mismo" comando escrito en mayúscula y en minúscula puede tener efectos radicalmente diferentes.


Cómo moverse con las teclas de dirección

Si el sistema está equipado con teclas de dirección, pruébelas ahora. Debe ser capaz de mover el cursor libremente por la pantalla utilizando combinadas las teclas de flecha arriba, abajo, derecha, e izquierda. Observe que sólo puede mover el cursor sobre el texto ya existente o sobre los espacios de entrada.

Si usa vi desde un terminal remoto, las teclas de dirección podrían no funcionar correctamente. Esto dependerá de su emulador de terminal. Si en su caso las teclas de dirección no funcionan, puede sustituirlas por las siguientes:

Cómo moverse una palabra

Presione w ("word", palabra) para mover el cursor una palabra hacia la derecha.

Presione b ("back", hacia atrás) para mover el cursor una palabra hacia la izquierda.

Presione W o B para mover el cursor después del carácter de puntuación contiguo hasta el espacio en blanco siguiente o anterior.

Presione e ("end", al final) para mover el cursor hasta el último carácter de la palabra actual.

Cómo moverse al inicio o al final de una línea

Presione ^ para mover el cursor al inicio de la línea actual.

Presione $ para mover el cursor al final de la línea actual.

Cómo moverse una línea hacia abajo

Presione la tecla Retorno para mover el cursor al principio de la línea siguiente.

Cómo moverse hacia la izquierda

Presione la tecla de retroceso para mover el cursor un carácter hacia la izquierda.

Cómo moverse hacia la derecha

Presione la Barra espaciadora para mover el cursor un carácter hacia la derecha.

Cómo moverse hasta arriba

Presione H ("high", arriba) para mover el cursor hasta la parte de arriba de la pantalla.

Cómo moverse al centro

Presione M ("middle", centro) para mover el cursor hasta el centro de la pantalla.

Cómo moverse hasta la parte inferior

Presione L ("low", inferior) para mover el cursor a la parte inferior de la pantalla.

Cómo paginar y desplazarse

Si se mueve hacia abajo cuando el cursor está en la parte inferior de la pantalla, o hacia arriba cuando el cursor está en la parte superior de la pantalla, verá el texto desplazarse hacia arriba o hacia abajo. Esta puede ser una manera efectiva de mostrar más texto en un archivo muy corto, pero puede resultar tedioso el moverse de esta manera por un archivo largo.

Puede haber observado que moviendo el cursor hacia abajo una vez que se ha alcanzado la parte inferior de la pantalla, o bien hacia arriba una vez alcanzada la parte superior de la pantalla tiene el mismo efecto que desplazar texto hacia arriba o hacia abajo. Esto funcionará en un archivo corto, pero es una manera tediosa de moverse por un archivo largo.

Puede cambiar de página o desplazarse hacia adelante o hacia atrás a través de un archivo, avanzando o retrocediendo una o media pantalla cada vez (para intentar este comando en texto, deberá agregar el texto necesario para hacer el archivo lo suficientemente grande para que el comando tenga efecto).

Observe que hay una diferencia fundamental entre cambiar de página y desplazar. Desplazar, desplaza realmente el cursor hacia arriba o hacia abajo en el texto de línea en línea, como si se desplazase sobre papel. Paginar mueve el cursor hacia arriba o hacia abajo en el texto de pantalla en pantalla. En un sistema rápido, podría no notar la diferencia. De cualquier modo, si está trabajando en un terminal remoto o en alguna otra situación en la que el sistema trabaja más lento de lo habitual, esta diferencia se convertirá lamentablemente en evidente.

Cómo paginar hacia adelante una pantalla

Para desplazarse hacia adelante (moverse hacia abajo) una pantalla completa, presione Ctrl-F (mantenga presionada la tecla Control y presione la tecla F). El cursor se moverá a la esquina superior izquierda de la pantalla nueva.

Cómo desplazarse media pantalla hacia adelante

Para desplazarse hacia adelante media pantalla, presione Ctrl-D.

Cómo paginar hacia atrás una pantalla

Para desplazarse hacia atrás (es decir, moverse hacia arriba) una pantalla completa, presione Ctrl-B.

Cómo desplazarse media pantalla hacia atrás

Para desplazarse hacia atrás media pantalla, presione Ctrl-U.

Cómo insertar texto

vi ofrece muchos comandos para insertar texto. Esta sección le presenta los más útiles. Observe que cada uno de estos comandos sitúa a vi en modo de entrada. Para utilizar cualquiera de estos comandos, primero debe estar en modo de comando. Acuérdese de presionar Escape para asegurarse de que está en modo de comando.

Cómo agregar

Escriba a (agregar) para insertar texto a la derecha del cursor. Compruébelo moviendo el cursor a cualquier parte de una línea y escribiendo a, seguido del texto que quiera agregar. Presione Escape cuando haya terminado.

Escriba A para agregar texto al final de una línea. Para ver como funciona, sitúe el cursor en cualquier parte de una línea y escriba A. El cursor se moverá al final de la línea, donde podrá escribir el texto a agregar. Presione Escape cuando lo haya hecho.

Cómo insertar

Inserte texto a la izquierda del cursor escribiendo i desde el modo de comando.

Escriba I para insertar texto al principio de una línea (el comando moverá el cursor desde cualquier posición en la línea.). De nuevo, y al igual que todos los comandos en esta sección, presione Escape para volver al modo de comando después de escribir el texto deseado.

Cómo abrir líneas

Use estos comandos para abrir líneas nuevas, bien encima o debajo de la posición del cursor actual.

Escriba o para abrir una línea debajo de la posición del cursor actual. Para probarlo, escriba o seguido de un poco de texto. Puede escribir varias líneas de texto si lo desea. Presione Escape cuando haya terminado.

Escriba O para abrir una línea encima de la posición del cursor actual.

Cómo cambiar texto

Cambiar texto lleva consigo sustituir una parte de texto por otra. vi tiene varias formas de hacerlo, dependiendo de las circunstancias.

Cómo cambiar una palabra

Para reemplazar una palabra, sitúe el cursor al principio de la palabra que va a ser reemplazada. escriba cw, seguido de la palabra nueva. Para terminar, presione Escape.

Para cambiar parte de una palabra, sitúe el cursor en la palabra, a la derecha de la parte a guardar. Escriba cw, introduzca la correción, y presione Escape.

Cómo cambiar una línea

Para reemplazar una línea, sitúe el cursor en cualquier lugar de la línea y escriba cc. La línea desaparecerá, dejando una línea en blanco para el texto nuevo (que puede ser de cualquier longitud). Presione Escape para terminar.

Cómo cambiar parte de una línea

Para reemplazar parte de una línea, sitúe el cursor a la derecha de la parte a guardar. escriba C, introduzca la correción, y presione Escape. Esto cambiará la parte de la línea desde la posición actual del cursor hasta el final de la línea.

Cómo sustituir uno o varios caracteres

Para sustituir uno o más caracteres a partir del carácter bajo el cursor, escriba s, seguido por el texto nuevo. Presione Escape para volver al modo de comando.

Cómo reemplazar un carácter

Use este comando que sirve para reemplazar el carácter resaltado por el cursor por otro carácter. Sitúe el cursor sobre el carácter y escriba r, seguido de un único carácter de reemplazo. Después de la sustitución, vi volverá automáticamente al modo de comando (no es necesario presionar Escape).

Cómo transponer caracteres

Para corregir los caracteres transpuestos en vi sólo se necesita escribir dos veces. Suponga que escribió "lso" cuando lo que quería era "los". Haga la correspondiente corrección colocando el cursor sobre la primera letra que se quiere mover (en este caso, e), y escribiendo a continuación xp. La e y la h intercambiarán sus lugares - y vi volverá automáticamente al modo de comando.

Cómo partir o unir líneas

Para partir una línea sin que afecte al texto, mueva el cursor al espacio donde quiera partir la línea y escriba r (para "reemplazar") seguido de Retorno. Observe que si escribe r con el cursor sobre un carácter y a continuación presiona Retorno, ese carácter se reemplazará por Retorno.

Para unir dos líneas, sitúe el cursor en la línea superior y escriba una J mayúscula (no es necesario presionar Escape después de escribir J).

Cómo deshacer los cambios

Cuando edite texto y haga cambios en un archivo vi, podría ocurrir que en algún momento desease no haber hecho un cambio en el texto. Los comandos undo (deshacer) de vi le permitirán anular los efectos de una operación y continuar la edición desde el momento anterior.

Cómo deshacer los comandos anteriores

Si se equivocó en vi o si cambió de idea una vez que una operación se completó, puede deshacer el último comando presionando u inmediatamente después del comando (no es necesario presionar Escape después de escribir u). Si presiona u por segunda vez deshace la operación de deshacer.

Cómo deshacer cambios en una línea

Escriba U para deshacer todos los cambios que hizo en una línea. Este comando funcionará únicamente antes de mover el cursor a otra línea (no es necesario presionar Escape después de escribir U)).

Cómo eliminar texto

Estos comandos vi eliminan el carácter, la palabra o la línea que se indique. vi seguirá en modo de comando, por lo que cualquier inserción posterior de texto deberá ir precedida por algún comando que pase a modo de entrada.

Cómo eliminar un carácter

Para eliminar un carácter, sitúe el cursor sobre el carácter a borrar y escriba x.

El comando x también elimina el espacio que ocupaba el carácter -cuando en la mitad de una palabra se elimina una letra, las letras restantes se cerrarán, sin dejar un hueco. También puede eliminar los espacios en blanco de una línea con el comando x.

Para eliminar el carácter anterior al cursor (a su izquierda), escriba X (en mayúsculas).

Cómo eliminar una palabra o parte de una palabra

Para eliminar una palabra, sitúe el cursor al principio de la palabra y escriba dw. Se eliminarán la palabra y el espacio que ocupaba.

Para eliminar parte de una palabra, sitúe el cursor en la palabra a la derecha de la parte a guardar. escriba dw para eliminar el resto de la palabra.

Cómo eliminar una línea

Para eliminar una línea, sitúe el cursor en cualquier lugar de la línea y escriba dd. Se eliminarán la línea y el espacio que ocupaba.

Cómo eliminar parte de una línea

También puede eliminar parte de una línea.

Para eliminar todo lo que se encuentre a la derecha del cursor, sitúelo a la derecha de la parte de la línea que desee guardar, y escriba D.

Para eliminar todo lo que se encuentra a la izquierda del cursor, sitúelo a la derecha de la parte de la línea que quiera eliminar e introduzca d0 (d-cero).

Cómo eliminar hasta el final del archivo

Para eliminar todo el texto comprendido entre la línea actual y el final del archivo, escriba dG. También se eliminará la línea donde estaba el cursor.

Cómo eliminar desde el principio del archivo

Para eliminar todo el texto desde el principio del archivo hasta la línea actual, escriba d1G. También se eliminará la línea donde estaba el cursor.

Cómo copiar y mover texto -Tirar, eliminar y poner

Muchos procesadores de textos le permiten "copiar y pegar" y "cortar y pegar" líneas de texto. El editor vi también incluye estas características. El modo de comando de vi equivalente a "copiar y pegar" es tirar y poner; el equivalente a "cortar y pegar" es eliminar y poner.

Los métodos para copiar y mover pequeños bloques de texto en vi lleva consigo la utilización combinada de los comandos yank, delete y put.

Cómo copiar líneas

Para copiar una línea se necesitan dos comandos: yy o Y ("tirar") y p ("poner abajo") o P ("poner arriba"). Observe que Y hace lo mismo que yy.

Para tirar una línea, sitúe el cursor en cualquier lugar de la línea y escriba yy. Ahora mueva el cursor a la línea de arriba donde quiere colocar la línea tirada (copiada), y escriba p. Una copia de la línea tirada aparecerá en la línea nueva debajo del cursor.

Para situar la línea tirada en una línea nueva encima del cursor, escriba P.

El comando yy trabaja bien con un contador: para tirar 11 líneas, por ejemplo, basta con escribir 11yy. Once líneas, contando hacia abajo desde el cursor, se tirarán, y vi indica esto con un mensaje en la parte inferior de la pantalla: 11 lines yanked..

Puede utilizar también los comandos P o p inmediatamente después de cualquiera de los comandos de eliminación explicados anteriormente. Esto pone el texto que eliminó por encima o por debajo del cursor, respectivamente.


Precaución - Precaución -

GraphicUtilice únicamente los comandos de movimiento del cursor entre las operaciones de tirar o eliminar y poner. Si elimina o tira cualquier otro texto antes de poner el texto nuevo en su lugar, las líneas que tiró o eliminó se habrán perdido.


Cómo mover líneas

Mover líneas requiere también dos comandos: dd ("borrar") y p o bien P.

Para mover una línea, sitúe el cursor en cualquier lugar de la línea y escriba dd. Por ejemplo, para eliminar 5 líneas, escriba 5dd.

A continuación, mueva el cursor a la línea por encima donde quiere reinsertar la línea eliminada y escriba p. Esto inserta el texto en una línea nueva debajo del cursor.

Por otro lado, puede poner la línea eliminada por encima del cursor escribiendo P.

Uso de memorias intermedias con nombre

Para insertar repetidamente un grupo de líneas en varios lugares del documento, puede tirar (o eliminar) las líneas en una memoria intermedia con nombre. Puede especificar memoria intermedia con nombre haciendo preceder un comando de dobles comillas (") y un nombre para la memoria intermedia. Por ejemplo, para tirar cuatro líneas sobre la memoria intermedia de nombre a, escriba "a4yy. Puede utilizar varias memorias intermedias. Por ejemplo, podría eliminar texto a partir de una posición y agregarlo a otras varias. Para eliminar 12 líneas de la memoria intermedia de nombre b, escriba "b12dd.

Para insertar el texto, escriba el comando p o P con "n, donde n es la memoria intermedia con nombre. Por ejemplo, para insertar las líneas guardadas en la memoria intermedia b, introduzca "bP.

Puede sobrescribir memorias intermedias con nombre con líneas nuevas. Las memorias intermedias se guardan hasta que salga de vi.

Cuando use memorias intermedias con nombre, puede borrar y tirar otro texto con la seguridad de no afectar a las líneas que ya ha guardado en las memorias intermedias con nombre -a no ser, por supuesto, que sobrescriba intencionadamente esta memoria intermedia con nombre.

Uso de un contador para repetir comandos

Muchos comandos vi pueden ir precedidos por un factor de repetición (llamado contador) -un número que precede el comando y le indica cuantas veces debe repetir la operación.

La mayoría de los comandos de las secciones anteriores llevan contadores. Por ejemplo, 3dd repite el comando para eliminar una línea tres veces, por tanto elimina tres líneas. 2dw elimina dos palabras, y 4x elimina cuatro caracteres o espacios. También puede utilizar contadores junto con comandos para mover el cursor, como 3w y 2Ctrl-F. Esto se hará evidente a medida que aprenda los comandos de vi. En la sección, "Resumen de los comandos básicos de vi"" al final de este capítulo, cada comando que puede llevar un contador está indicado por "[count]" antes del nombre del comando.

Si escribe un punto (.) se repetirá el comando previo de cambio de texto. Por ejemplo, si únicamente ha eliminado una línea con dd, puede mover el cursor a otra línea y eliminarla escribiendo sólo un punto