Looking for vim Answers? Try Ask4KnowledgeBase
Looking for vim Keywords? Try Ask4Keywords

vimEmpezando con vim


Observaciones

Vim (o "Vi IMproved") es un editor de texto multimodo ( modal ) basado en consola. Se usa ampliamente y está disponible de forma predeterminada en todos los sistemas Unix, Linux y Apple OS X. Vim tiene una gran comunidad activa y una amplia base de usuarios. El editor es compatible con todos los lenguajes de programación populares, y muchos complementos están disponibles para ampliar sus funciones.

A los desarrolladores les gusta el editor por su velocidad, muchas opciones de configuración y una potente edición basada en expresiones. En el modo "comando", el editor está controlado por los comandos del teclado, por lo que el usuario no se distrae con una GUI o el puntero del mouse.

Vim se basa en el anterior editor "vi" de Unix creado en los años setenta y ha estado en continuo desarrollo desde 1991. Con las macros y los complementos, el editor ofrece la mayoría de las características de un IDE moderno. También tiene una capacidad única para procesar grandes cantidades de texto con su lenguaje de scripting (vimscript) y expresiones regulares.

Temas principales:

Vim mensaje de inicio estándar

Versiones

Versión Fecha de lanzamiento
8.0 2016-09-12
7.4 2013-08-10
7.3 2010-08-15
7.2 2008-08-09
7.1 2007-05-12
7.0 2006-05-07
6.0 2001-09-26
5.0 1998-02-19
4.0 1996-05-29
3.0 1994-08-12
2.0 1993-12-14
1.14 1991-11-02

Lo esencial

Ejecute tutoriales interactivos de vim tantas veces como sea necesario para sentirse cómodo con lo básico.

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

El 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 el modo normal se pueden prefijar con un "conteo", por ejemplo, 3j baja 3 líneas.

El modo de inserción 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 dejarlo presione <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 comando. Para salir de este modo también puede presionar <ESC> . Para guardar los cambios en el archivo use :w (o :write ). Para salir de vim sin guardar tus cambios usa :q! (o :quit! ).

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

Mando Descripción
i (insertar) ingresa al modo de inserción antes de la posición actual del cursor
I 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 caracteres en la posición actual del cursor
X Eliminar el carácter a la izquierda a 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 personaje. El siguiente carácter que escriba reemplazará el 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 borre la línea actual en la que se encuentra actualmente el cursor e ingrese al modo de inserción
<Esc> , <Cc> Salir del modo insertar y volver al modo normal.
u deshacer
<Cr> rehacer
dd , dw , dl , d$ corte 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, nota: D es el equivalente de d$
cc , cw , cl cambiar la línea actual, desde el 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 e ingresar al modo de inserción
:w escribe el búfer actual en el disco
:q! , ZQ dejar de fumar sin escribir
:x :wq , ZZ escribe y deja
:help abrir una ventana con el archivo de ayuda
:help {subject} 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 se usa a menudo por conveniencia. Leer más: Macros

Saliendo de Vim

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

  • :q Ingresar (evitará que salga si tiene cambios no guardados, abreviatura de: salir)

Para descartar cambios y salir de Vim:

  • :q! Entrar para forzar la salida y descartar los cambios (abreviatura de :quit! No debe confundirse con :!q ),
  • ZQ es un atajo que hace lo mismo que :q! ,
  • :cq Ingrese quit y devuelva el error (descarte 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 Ingrese (igual que :wq , pero no escribirá si el archivo no se modificó),
  • ZZ es un acceso directo que hace lo mismo que :x (Guardar espacio de trabajo y salir del editor),
  • :[range]wq! Ingrese (escriba las líneas en [rango])

Para cerrar varios buffers 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 Entrar o
  • :xa Enter - Escribe todos los buffers modificados y sale de Vim. Si hay buffers sin un nombre de archivo, que son de solo lectura o que no se pueden escribir por otra razón, Vim no se cerrará
  • :xa! Ingresar : escriba todos los búferes modificados, incluso los que son de solo lectura, y salga de Vim. Si hay buffers sin un nombre de archivo o que no se pueden escribir por otra razón, Vim no se cerrará
  • :qa Enter : intente salir, pero deténgase si hay archivos no guardados;
  • :qa! Ingresar - salir sin guardar (descartar los cambios en los archivos no guardados)

Si ha abierto Vim sin especificar un archivo y desea guardar ese archivo antes de salir, recibirá un mensaje E32: No file name . Puedes guardar tu archivo y salir usando:

  • :wq filename Entrar o;
  • :x filename Introduzca

Explicación:

La pulsación de tecla : 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 lo desea). Los accesos directos que no comienzan con : como ZZ y ZQ refieren a las asignaciones de teclas del modo Normal . Puedes pensar en ellos como atajos.

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

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

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 soporte del 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 llegará a una serie de muros si pretende 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 de GUI que viene con un comando gvim para iniciar la GUI y un comando vim para iniciar la TUI.

Distribuciones basadas en arco y arco.

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

Distribuciones basadas en Debian y Debian

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

Distribuciones basadas en Gentoo y 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
 

Distribuciones basadas en Slackware y 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 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

MacPorts:
$ sudo port selfupdate
$ sudo port install macvim
 
Homebrew
$ brew install macvim
 

Para hacer de MacVim la consola predeterminada Vim:

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

Instalación en Windows

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

Chocolatey

> choco install vim
 

Construyendo Vim desde la fuente

Si los métodos anteriores no satisfacen sus necesidades, todavía es posible crear Vim usted mismo, con solo las opciones que necesita.

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

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 iniciar 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 interactiva del juego de vimtutor disponible en la web. Solo los primeros niveles son gratuitos.
  • Open Vim : un terminal interactivo que le enseña los comandos básicos con comentarios.
  • Vim Genius : otro terminal interactivo que también incluye lecciones intermedias y avanzadas que incluyen macros y arglist.

Guardando 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 .

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

:w !sudo tee > /dev/null %
 

Que puedes mapear a :w!! en tu .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) oad File: .

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

Explicación del comando

: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:

Suspendiendo vim

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

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

:st enter

:sus enter

:stop entrar

:suspend entrar

Alternativamente, en algunos sistemas, cuando se encuentra en modo Normal o Visual , la emisión de Ctrl + Z tendrá el mismo efecto.

Nota: Si se establece la autowrite se autowrite búferes con cambios y nombres de archivos. Añadir un ! antes de entrar para evitar, por ejemplo. :st! entrar

Más adelante, 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.

fg enter

De lo contrario, tendrá que encontrar el ID de trabajo de las sesiones de vim emitiendo los jobs ingresados y, luego, poniendo en primer plano los trabajos coincidentes fg %[job ID] ingrese, por ejemplo. fg %1 entrar .

Qué hacer en caso de accidente.

Vim guarda todas sus ediciones no guardadas en un archivo de intercambio , un archivo adicional que se borra una vez que se comprometen 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 (se puede ver con :sw ).

Entonces, en caso de que su proceso de 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 comandos -r . Por ejemplo, si myFile es el archivo que estaba editando, use:

$ vi -r myFile
 

Para recuperar los cambios no comprometidos.

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

$ 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) ecover, se aplicarán los cambios del archivo swp pero el archivo de intercambio no se eliminará, así que no olvide eliminar el archivo de intercambio posteriormente si está satisfecho con la recuperación.