Objetivo:
Aprender a copiar y pegar líneas, palabras y porciones de frase en vi/vim (yy, p, P, yw, y$, y0), a cortar texto reutilizando los comandos de borrado, y a buscar patrones dentro de un documento con /, ?, n y N.
Escenario:
- Herramientas: Terminal de Linux y un sistema Debian o basado en Debian, con el editor
vioviminstalado. - Conceptos clave: copiar (yank), pegar (paste), búfer de copia, cortar texto, búsqueda hacia adelante y hacia atrás, coincidencias de patrones.
Instrucciones:
Fase 1: Copiar y pegar una línea
- Abre con
viun fichero de texto de varias líneas (puedes reutilizar uno de los ficheros de prácticas anteriores): - En modo comando, sitúa el cursor sobre una línea cualquiera y copia esa línea con:
- Sitúa el cursor en otra línea distinta y pega el contenido copiado justo debajo con:
- Vuelve a pegar la misma línea copiada en otra posición para comprobar que el contenido permanece disponible en el búfer.
- Pega ahora esa misma línea, pero por encima del cursor, utilizando:
vi practica_vi.txt
yy
p
P
Fase 2: Copiar varias líneas a la vez
- Sitúa el cursor al principio de un bloque de tres líneas consecutivas y cópialas todas de una sola vez anteponiendo el número al comando:
- Comprueba en la parte inferior del editor el mensaje que indica cuántas líneas se han seleccionado para copiar.
- Sitúa el cursor en otra posición y pega el bloque completo con
p.
3yy
Fase 3: Copiar porciones de palabras y de frases
- Sitúa el cursor en mitad de una palabra y copia desde esa posición hasta el final de la palabra con:
- Pega esa porción de palabra en otra línea con
py comprueba que solo aparece la parte final de la palabra original. - Sitúa el cursor en mitad de una frase larga y copia desde esa posición hasta el final de la línea con:
- Pega esa porción de frase en otra línea y comprueba que corresponde a la segunda mitad de la frase original.
- Sitúa el cursor en el mismo punto de la frase y copia ahora desde el principio de la línea hasta esa posición con:
- Pega esa porción y comprueba que corresponde a la primera mitad de la frase original.
yw
y$
y0
Fase 4: Cortar palabras y líneas
- Sitúa el cursor al principio de una palabra que quieras mover a otra parte del documento y córtala con:
- Comprueba que la palabra ha desaparecido de su posición original y pégala en otro lugar con
p. - Sitúa el cursor al principio de una línea completa que quieras mover y córtala con:
- Pégala en otra posición del documento con
py comprueba que ha desaparecido de su lugar original. - Prueba también a cortar solo la segunda mitad de una frase con
d$y la primera mitad cond0, pegando cada resultado en una línea distinta.
dw
dd
Fase 5: Búsqueda de texto
- En modo comando, inicia una búsqueda hacia adelante escribiendo la barra seguida de una palabra que aparezca varias veces en tu texto, y pulsa
Enter: - Pulsa la tecla
nvarias veces y observa cómo el cursor va saltando a las siguientes coincidencias de esa palabra. - Pulsa
N(mayúscula) y observa cómo la búsqueda retrocede hacia la coincidencia anterior. - Inicia ahora una búsqueda hacia atrás con el signo de interrogación:
- Comprueba que, si el cursor se encuentra antes de todas las apariciones de esa palabra en el texto, el editor muestra un mensaje indicando que no ha encontrado ninguna coincidencia en esa dirección.
- Busca una palabra que no exista en absoluto en tu texto y comprueba el mensaje de patrón no encontrado.
/palabra
?palabra
Preguntas de reflexión:
- ¿Qué comando se utiliza para copiar la línea completa en la que se encuentra el cursor?
- ¿Qué diferencia existe entre pegar con
py pegar conP? - ¿Qué efecto tiene anteponer un número al comando
yy, como en3yy? - ¿Qué diferencia existe entre
yw,y$ey0a la hora de copiar parte de un texto? - ¿Cómo se puede cortar texto en
visi no existe un comando específico llamado "cortar"? - ¿Qué diferencia hay entre cortar una palabra con
dwy cortar una línea completa condd? - ¿Qué carácter se utiliza para iniciar una búsqueda hacia adelante y cuál para iniciar una búsqueda hacia atrás?
- ¿Qué diferencia existe entre pulsar
ny pulsarNdespués de haber realizado una búsqueda? - ¿La búsqueda de un patrón en
vilocaliza únicamente palabras completas o también coincidencias parciales dentro de una palabra? - ¿Qué mensaje muestra el editor cuando el patrón buscado no existe en el documento, o no se encuentra en la dirección de búsqueda indicada?
Haz clic aquí para ver las soluciones y explicaciones
1. ¿Qué comando copia la línea completa?
El comando yy copia la línea completa en la que se encuentra el cursor, independientemente de la posición horizontal dentro de esa línea.
2. ¿Diferencia entre p y P?
p (minúscula) pega el contenido del búfer justo debajo de la línea donde está el cursor, mientras que P (mayúscula) lo pega justo encima.
3. ¿Qué efecto tiene 3yy?
Copia tres líneas seguidas a partir de la posición del cursor, en lugar de una sola, y el editor suele mostrar un mensaje indicando cuántas líneas se han seleccionado.
4. ¿Diferencia entre yw, y$ e y0?
yw copia desde la posición del cursor hasta el final de la palabra actual. y$ copia desde la posición del cursor hasta el final de la línea. y0 copia desde el principio de la línea hasta la posición del cursor.
5. ¿Cómo se corta texto en vi?
Reutilizando los mismos comandos de borrado (dw, dd, d$, d0, etc.), ya que al borrar, el texto eliminado se almacena igualmente en el búfer y puede recuperarse después con p o P, funcionando de facto como un cortar y pegar.
6. ¿Diferencia entre dw y dd?
dw corta solo la palabra (o la parte de la palabra) desde la posición del cursor, mientras que dd corta la línea completa en la que se encuentra el cursor.
7. ¿Qué caracteres inician las búsquedas?
La barra (/) inicia una búsqueda hacia adelante, desde la posición actual del cursor hasta el final del documento, y el signo de interrogación (?) inicia una búsqueda hacia atrás, desde la posición actual hasta el principio del documento.
8. ¿Diferencia entre n y N?
n repite la búsqueda en la misma dirección en la que se inició, mientras que N la repite en la dirección contraria.
9. ¿Busca palabras completas o coincidencias parciales?
La búsqueda localiza coincidencias parciales en cualquier punto de una palabra, no solo palabras completas ni únicamente desde su inicio.
10. ¿Qué mensaje aparece cuando no se encuentra el patrón?
El editor muestra un mensaje indicando que el patrón no se ha encontrado, ya sea porque no existe en absoluto en el documento o porque no hay ninguna coincidencia en la dirección de búsqueda indicada desde la posición actual del cursor.
Ficha de Laboratorio: Copiar, Cortar, Pegar y Buscar Texto en vi/vim
Instrucciones de entrega:
- Rellena los campos y responde en este formulario desde tu navegador.
- Pulsa el botón de imprimir al final de la página.
- Selecciona "Guardar como PDF" en el diálogo de impresión.
- Entrega el archivo PDF en el aula virtual.
Alumno/a: Fecha:
Grupo:
Completa la ficha realizando las siguientes actividades:
- Copia una línea con yy y pégala con p y con P.
Escribe los comandos utilizados:
Explica la diferencia entre el resultado de p y el de P:
- Copia un bloque de tres líneas de una sola vez con 3yy.
Escribe el comando utilizado:
Copia aquí el mensaje que mostró el editor tras copiar:
- Copia porciones de palabra y de frase con yw, y$ e y0.
Explica qué obtuviste al pegar el resultado de cada uno de los tres comandos:
- Corta una palabra con dw y una línea completa con dd, y pégalas en otra posición.
Escribe los comandos utilizados:
Explica cómo comprobaste que el texto original había desaparecido de su posición inicial:
- Busca una palabra que se repita varias veces en tu texto con / y navega con n y N.
Escribe el comando de búsqueda utilizado:
Explica qué diferencia notaste entre usar n y usar N:
- Realiza una búsqueda hacia atrás con ? y busca también una palabra inexistente.
Escribe los comandos utilizados:
Copia aquí el mensaje mostrado cuando la palabra no fue encontrada: