Probablemente, no sea el único que uso Vi como editor de textos cuando no tengo interfaz gráfica disponible, en tal caso prefiero usar Geany. Aunque en un comienzo prefería utilizar nano (y hace mucho, cuando empecé a manejarme en entornos UNIX pico), con el tiempo me acostumbré a usar Vi (y su secuela Vim, de Vi iMproved, es decir, Vi mejorado) y sinceramente, creo que si lo dominas medianamente es mucho más eficaz que los anteriores.
Aprendamos a usarlo a lo largo de este tutorial dividido en una serie de entradas.
Modos
La primera vez que usas Vim, la primera rareza que te encuentras es el hecho de que para escribir, tengas que cambiar de modo. El hecho de que existan diferentes modos, le da un toque diferente y ahí pueden empezar las confusiones.
Sin embargo, cuando los dominas, son una de las grandes bondades del programa.
- Modo comandos: aparece por defecto. En este modo podremos efectuar acciones como copiar/pegar y formatear el texto. Desde cualquier modo se puede acceder a él pulsando dos veces la tecla “Escape”.
- Modo inserción: todo lo que teclee aparecerá en pantalla y se convertirá en parte integrante de su buffer de archivo.
- Modo ex: para grabar un archivo o abrir otro y operaciones relacionadas.
- Modo visual: permite cortar, copiar y pegar expeditivamente grandes porciones de texto mediante teclado o ratón.
Como la interfaz se basa en consola, la interacción con el teclado es vital. Veamos para qué sirve cada tecla, dividiendo su funcionalidad en grupos.
Movimiento del cursor
- h: mover izquierda
- j: mover abajo
- k: mover arriba
- l: mover derecha
- w: salta de palabra en palabra al comienzo de las mismas (la puntuación es considerada palabra)
- W: salta de palabra en palabra (al espacio entre ellas)
- e: salta de palabra en palabra al final de las mismas (la puntuación es considerada palabra)
- E: salta al final de las palabra (sin considerar puntuación)
- b: salta hacia atrás entre palabras (considerando la puntuación)
- B: salta hacia atrás entre palabras (sin considerar puntuación)
- 0: al comienzo de la línea
- ^: primer carácter no blanco de la línea
- $: final de la línea
- G: comando ir a
Modo inserción (insertando/añadiendo texto)
- i: empieza modo inserción donde está el cursor
- I: empieza modo inserción al comienzo de la línea
- a: añade donde está el cursor
- A: añade al final de línea
- o: añade nueva línea en blanco, bajo la línea actual
- O: añade nueva línea en blanco, sobre la línea actual
- ea: añade al final de la palabra
- Esc: sale del modo
Edición
- r: reemplaza un único carácter
- J: une la línea de abajo con la actual
- cc: reemplaza una línea entera
- cw: reemplaza hasta el final de la palabra
- c$: reemplaza hasta el final de la línea
- s: borra el carácter que indica el cursor y substituye el texto
- S: borra la línea y substituye el texto (lo mismo que cc)
- xp: transpone dos letras (primero corta, luego pega)
- u: deshace (undo)
- .: repite el último comando
Marcando texto (modo visual)
- v: comenzar modo visual
- V: comenzar modo visual lineal
- o: moverse a otra área marcada
- Control+v: comenzar bloque de modo visual
- O: moverse a la esquina de otro bloque marcado
- aw: marcar una palabra
- ab: marca un bloque delimitado por paréntesis (del inglés braces)
- aB: marca un bloque delimitado por llaves (del inglés brackets)
- ib: marca dentro de un bloque delimitado por paréntesis
- iB: marca dentro de un bloque delimitado por llaves
- Esc: salir del modo visual
Comandos visuales
- >: corre el texto hacia la derecha
- <: corre el texto hacia la izquierda
- y: copia el texto marcado
- d: borra el texto marcado
Cortar y pegar
- yy: copia una línea
- 2yy: copia dos líneas
- yw: copia una palabra
- y$: copia hasta el final de la línea
- p: copia el contenido del portapapeles, tras el cursor
- P: ídem pero antes del cursor
- dd: borra una línea
- dw: borra una palabra
- x: corta el carácter actual
Salir
Todas llevan dos puntos al comienzo, los del final son de separación pero no del comando en sí. Esto mismo pasará en los siguientes apartados.
- :w: guarda el fichero pero no sale
- :wq: guarda el fichero y sale
- :q: intenta salir. Si hay cambios da error, en caso contrario, sale
- :q!: sale sin guardas y aunque haya habido cambios
Buscar y reemplazar
- /pattern: busca un patrón
- ?pattern: busca un patrón hacia atrás
- n: repite la búsqueda en la misma dirección
- N: repite la búsqueda en la dirección opuesta
- :%s/viejo/nuevo/g: reemplaza todo lo que encuentra definido por “viejo” por “nuevo”
- :%s/viejo/nuevo/gc: lo mismo, pero con confirmaciones
Trabajar con múltiples ficheros
- :e nombreFichero: edita un fichero en un nuevo buffer
- :bnext (o :bn): se dirige al siguiente buffer
- :bprev (o :bp): se dirige al bufer anterior
- :bd: borra un buffer
- :sp nombreFichero: abre un fichero en un nuevo buffer y lo divide
- Control+ws: divide la ventana
- Control+ww: intercambia la ventana
- Control+wq: cierra una ventana
- Control+wv: divide la ventana horizontalmente
Todo este listado de comandos, es una adaptación y traducción de una hoja muy popular de chuletas que uso muy frecuentemente con Vim y que encontré en Muy Linux.
Ver comentarios
¡Excelente tutorial Carazo!
¡Esta vez sí le voy a dar una oportunidad a este editor de texto!
Excelente y necesario para los que nos gusta cacharrear con este editor.
Gracias por la aportación.
Sencillamente genial. Propongo la creación de un PDF en plan CHEAT SHEET.
Sinceramente VIM es un editor que cuando lo sabes usar, REALMENTE te ahorra mucho tiempo editando.. además hay que recordad que se puede usar el GVIM ....
Muy buen tuto, y como dijeron antes, en X a usar gvim ;)
No olviden de hacer el vimtutor :D