Comenzando con vim

Saliendo de Vim

Para salir de Vim, primero asegúrese de estar en modo Normal presionando Esc.

  • :q Enter (le impedirá salir si tiene cambios sin guardar - abreviatura de :quit)

Para descartar los cambios y salir de Vim:

  • :q! Enter para forzar la salida y descartar cambios (abreviatura de :quit!, que no debe confundirse con :!q),
  • ZQ es un atajo que hace lo mismo que :q!,
  • :cq Enter salir y devolver el error (descartar todos los cambios para que el compilador no vuelva a compilar este archivo)

Para guardar los cambios y salir de Vim:

  • :wq Enter (abreviatura de :write y :quit),
  • :x Enter (igual que :wq, pero no escribirá si el archivo no se modificó),
  • ZZ es un atajo que hace lo mismo que :x (Guardar espacio de trabajo y salir del editor),
  • :[rango]wq! Enter (escribe las líneas en [rango])

Para cerrar varios búferes a la vez (incluso en varias ventanas y/o pestañas), agregue la letra a a cualquiera de los Comandos anteriores (los que comienzan con :). Por ejemplo, para escribir y salir de todas las ventanas, puede usar:

  • :wqa Introducir o
  • :xa Intro — Escriba todos los búferes cambiados y salga de Vim. Si hay búferes sin nombre de archivo, que son de solo lectura o que no se pueden escribir por otro motivo, Vim no se cerrará.
  • :xa! Intro — Escriba todos los búferes modificados, incluso los que son de solo lectura, y salga de Vim. Si hay búferes sin nombre de archivo o que no se pueden escribir por otro motivo, Vim no se cerrará.
  • :qa Intro — intente salir, pero deténgase si hay archivos sin guardar;
  • :qa! Intro — salir sin guardar (descartar los cambios en cualquier archivo no guardado)

Si ha abierto Vim sin especificar un archivo y desea guardar ese archivo antes de salir, recibirá el mensaje “E32: Sin nombre de archivo”. Puede guardar su archivo y salir usando:

  • :wq filename Entrar o;
  • :x nombre de archivo Entrar

Explicación:

La combinación de teclas : en realidad abre el modo Comando. El comando q es una abreviatura de quit, w, de write y x, de exit (también puede escribir :quit, :write y :exit si usted quiere). Los accesos directos que no comienzan con : como ZZ y ZQ se refieren a asignaciones de teclas de modo Normal. Puedes pensar en ellos como atajos.

La combinación de teclas ! a veces se usa al final de un comando para forzar su ejecución, lo que permite descartar cambios en el caso de :q!. Colocar el ! al comienzo del comando tiene un significado diferente. Por ejemplo, uno puede escribir mal :!q en lugar de :q! y vim terminaría con un error 127.

Una manera fácil de recordar esto es pensar en ! como una forma de insistir en ejecutar algo. Al igual que cuando escribes: “¡Quiero dejar de fumar!”

Conceptos básicos

Ejecute tutoriales vim interactivos tantas veces como sea necesario para sentirse cómodo con los conceptos básicos.

Vim presenta varios modos, p. modo normal, modo de inserción y modo de línea de comandos.

Modo normal es para editar y navegar texto. En este modo h, j, k y l corresponden a las teclas de cursor , , y . La mayoría de los comandos en modo normal pueden tener el prefijo “contar”, p. 3j baja 3 líneas.

Modo Insertar es para insertar el texto directamente, en este modo vim es similar a otros editores de texto más simples. Para ingresar al modo de inserción, presione i en el modo normal. Para salir pulsa <ESC> (tecla de escape).

El modo de línea de comandos es para ejecutar comandos más complejos, como guardar el archivo y salir de vim. Presione : para iniciar el modo de línea de comandos. Para salir de este modo también puede pulsar <ESC>. Para guardar los cambios en el archivo, use :w (o :write). Para salir de vim sin guardar los cambios, use :q! (o :quit!).

Estos son algunos de los comandos más útiles en vim:

Comando Descripción
yo (insertar) ingresa al modo de inserción antes de la posición actual del cursor
Yo ingresa al modo de inserción antes del primer carácter imprimible de la línea actual
a (añadir) ingresa al modo de inserción después de la posición actual del cursor
A ingresa al modo de inserción después del último carácter imprimible de la línea actual
x eliminar carácter en la posición actual del cursor
X eliminar el carácter a la izquierda de la posición actual del cursor
w pasar a la siguiente palabra
b pasar a la palabra anterior
0 mover al principio de la línea
$ mover al final de la línea
r reemplazar: ingresa al modo de reemplazo para un carácter. El siguiente carácter que escriba reemplazará al carácter debajo del cursor.
R entra en modo de reemplazo indefinidamente. Cada carácter que escriba reemplazará el carácter debajo del cursor y avanzará el cursor en uno.
s sustituto: elimina el carácter en la posición actual del cursor y luego ingresa al modo de inserción
S elimine la línea actual en la que se encuentra el cursor e ingrese al modo de inserción
<Esc>, <C-c> sale del modo de inserción y vuelve al modo normal
u deshacer
<C-r> rehacer
dd, dw, dl, d$ corta la línea actual, desde el cursor hasta la siguiente palabra, o el carácter, desde la posición actual hasta el final de la línea actual respectivamente, nota: D es el equivalente de d$
cc, cw, cl cambiar la línea actual, del cursor a la siguiente palabra, o el carácter, respectivamente
yy, yw, yl, y$ tirar (“copiar”) la línea actual, desde el cursor hasta la siguiente palabra, o el carácter, la posición actual hasta el final de la línea actual, respectivamente
p, P poner (“pegar”) después o antes de la posición actual, respectivamente
o, O para crear una nueva línea vacía, después o antes de la actual y entrar en el modo de inserción
:w escribir el búfer actual en el disco
:q!, ZQ salir sin escribir
:x, :wq, ZZ escribir y salir
:ayuda abre una ventana con el archivo de ayuda
:ayuda {asunto} mostrar ayuda para un tema específico
qz comience a grabar acciones para registrar z, q para finalizar la grabación, @z para reproducir las acciones. z puede ser cualquier letra: q a menudo se usa por conveniencia. Leer más: Macros

1: https://www.wikiod.com/es/vim/comenzando-con-vim#Tutoriales interactivos de Vim (como vimtutor)

Guardar un archivo de solo lectura editado en Vim

A veces, podemos abrir un archivo que no tenemos permiso para escribir en Vim sin usar sudo.

Use este comando para guardar un archivo de solo lectura editado en Vim.

:w !sudo tee > /dev/null %

Que podría mapear a :w!! en su .vimrc:

cmap w!! w !sudo tee > /dev/null %

Se le presentará un aviso como se muestra en la imagen.

Presione ENTER o escriba el comando para continuar. [O]K, (L)cargar archivo:.

Presione O y el archivo se guardará. Permanece abierto en vi/vim para más edición o lectura y puede salir normalmente escribiendo :q! ya que el archivo todavía está abierto como de solo lectura.

Comando Explicación

:w ............................ isn't modifying your file in this case, 
   ............................ but sends the current buffer contents to 
   ............................ a substituted shell command
   !sudo ...................... call the shell 'sudo' command
         tee .................. the output of the vi/vim write command is redirected 
                                using the 'tee' command
             > /dev/null ...... throws away the standard output, since we don't need 
                                to pass it to other commands
                         % .... expands to the path of the current file

Fuentes:

Tutoriales interactivos de Vim (como vimtutor)

vimtutor es un tutorial interactivo que cubre los aspectos más básicos de la edición de texto.

En un sistema similar a UNIX, puede comenzar el tutorial con:

$ vimtutor

En Windows, “Vim tutor” se puede encontrar en el directorio “Vim 7.x” en “Todos los programas” en el menú de Windows.

Ver :help vimtutor para más detalles.

Otros tutoriales interactivos incluyen estos basados ​​en navegador:

  • Vim Adventures: una versión de juego interactivo de vimtutor disponible en la web. Solo los primeros niveles son gratuitos.
  • Open Vim – Una terminal interactiva que te enseña los comandos básicos con retroalimentación.
  • Vim Genius – Otra terminal interactiva que también incluye lecciones intermedias y avanzadas, incluidas macros y arglist.

Instalación

El Vim en su máquina, si lo hay, es muy probable que sea una compilación “pequeña” que carece de características útiles como compatibilidad con portapapeles, resaltado de sintaxis o incluso la capacidad de usar complementos.

Esto no es un problema si todo lo que necesita es una forma rápida de editar archivos de configuración, pero pronto encontrará varios obstáculos si tiene la intención de hacer de Vim su editor principal.

Por lo tanto, generalmente se recomienda instalar una compilación completa.

Instalación en Linux/BSD

En esos sistemas, el truco es simplemente instalar la versión GUI que viene con un comando gvim para iniciar la GUI y un comando vim para iniciar la TUI.

Distribuciones Arch y basadas en Arch

$ sudo pacman -R vim
$ sudo pacman -S gvim

Debian y distribuciones basadas en Debian

$ sudo apt-get update
$ sudo apt-get install vim-gtk

Gentoo y distribuciones basadas en Gentoo

$ sudo emerge --sync
$ sudo emerge app-editors/gvim

RedHat y distribuciones basadas en RedHat

$ sudo yum check-update
$ sudo yum install vim-X11

Fedora

$ sudo dnf check-update
$ sudo dnf install vim-X11

Slackware y distribuciones basadas en Slackware

$ sudo slackpkg update
$ sudo slackpkg install-new vim-gvim

Distribuciones basadas en OpenBSD y OpenBSD

$ sudo pkg_add vim-x11

Distribuciones basadas en FreeBSD y FreeBSD

$ sudo pkg install editors/vim

Instalación en Mac OS X

La estrategia es similar a la de Mac OS X: instalamos la versión GUI para obtener tanto la GUI como la TUI. Al final, deberíamos ser capaces de:

  • haga doble clic en el icono de MacVim en el Finder,
  • haga clic en el icono de MacVim en el Dock,
  • emita $ mvim en el shell para abrir la GUI de MacVim,
  • emita $ mvim -v en el shell para abrir la TUI de MacVim.

Instalación regular

Descargue e instale una instantánea oficial como lo haría con cualquier otra aplicación de Mac OS X.

Coloque el script mvim que viene incluido con MacVim en algún lugar de su $PATH.

Gerente de empaquetación

Puertos Mac:

$ sudo port selfupdate
$ sudo port install macvim

Cerveza casera:

$ brew install macvim

Para hacer que MacVim sea la consola Vim predeterminada:

$ brew install macvim --with-override-system-vim

Instalación en Windows

No hay Vim en los sistemas Windows de forma predeterminada. Puede descargar e instalar Vim desde el sitio de Tuxproject para obtener compilaciones más actualizadas y completas, o puede descargar e instalar Vim desde el sitio de Vim oficial.

Chocolatoso

> choco install vim

Construyendo Vim desde la fuente

Si los métodos anteriores no se ajustan a sus necesidades, aún es posible crear Vim usted mismo, con solo las opciones que necesita.

Este tema será discutido en su propia sección (actualmente en borrador).

Suspendiendo vim

Al usar vim desde la línea de comandos, puede suspender vim y volver a su indicador, sin salir de vim. Por lo tanto, más tarde podrá recuperar su sesión vim desde el mismo indicador.

Cuando esté en modo normal (si no, presione esc para llegar allí), emita cualquiera de estos comandos:

:stingresar

:susingresar

:deteneringresar

:suspenderingresar

Alternativamente, en algunos sistemas, cuando está en modo Normal o Visual, emitir Ctrl+Z tendrá el mismo efecto.

Nota: Si se configura autowrite, se escribirán los búferes con cambios y nombres de archivos. Agregue un ! antes de enter para evitar, p. :st!ingresar.

Más tarde, cuando desee volver a su sesión de vim, si no ha suspendido ningún otro trabajo, emitir lo siguiente restaurará vim como su trabajo de primer plano.

fgingresar

De lo contrario, deberá encontrar el ID de trabajo de sus sesiones vim emitiendo jobsenter y luego destacando los trabajos coincidentes fg %[job ID]enter, por ejemplo. fg %1ingresar.

Qué hacer en caso de accidente

Vim guarda todas sus ediciones no guardadas en un archivo de intercambio, un archivo adicional que se elimina una vez que se confirman los cambios al guardar. El nombre del archivo de intercambio suele ser el nombre del archivo que se está editando precedido por un . y con un sufijo .swp (puede verlo con :sw).

Entonces, en caso de que su proceso vim finalice antes de que haya tenido la oportunidad de guardar sus ediciones, puede recuperar su trabajo aplicando los cambios contenidos en el archivo de intercambio a su archivo actual usando la opción de línea de comando -r. Por ejemplo, si myFile es el archivo que estaba editando, use:

$ vi -r myFile

para recuperar los cambios no confirmados.

Si existe un archivo de intercambio, vim debería solicitarle opciones de recuperación de todos modos

$ vi myFile
E325: ATTENTION
Found a swap file by the name ".myFile.swp"
...
Swap file ".myFile.swp" already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (D)elete it, (Q)uit, (A)bort:

Si elige (R) recuperar, se aplican los cambios del archivo swp pero el archivo de intercambio no se eliminará, así que no olvide eliminar el archivo de intercambio después si está satisfecho con la recuperación.