vim Tutorial
Empezando con vim
Buscar..
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:
- instalación
- modos de edición
- navegación
- edición básica
- edición avanzada
- configuración
- plugins
- vimscript
- macros
- comunidad
- Proyectos relacionados
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 |
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).
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!"
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.
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 .
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 |
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.