Vim (Español)

Esta traducción de
Vim
fue revisada el
2022-11-08
. Si existen
cambios
puede
actualizarla
o avisar al
equipo de traducción
.
Artículos relacionados
List of applications/Documents#Vi-style text editors
Vim
es un editor de texto para terminal. Es la versión mejorada (la "m" de Vim) de
vi
con características adicionales como resaltado de sintaxis, un sistema de ayuda amplio,
scripting
nativo (Vim script), un modo de selección de texto visual, comparación de archivos (
vimdiff(1)
) y herramientas con características restringidas como
rview(1)
y
rvim(1)
.
Instalación
Instale
uno de los siguientes paquetes:
vim
— con soporte para los interpretes de Python 2/3, Lua, Ruby y Perl, pero no para GTK/X.
gvim
— provee lo mismo que el paquete de
vim
anterior, pero incluye soporte para GTK/X.
Nota
El paquete
vim
está compilado sin soporte para
Xorg
; esto desactiva la opción
+clipboard
, así que Vim no podrá operar con los
buffers
de selección
primary
y
clipboard
. El paquete
gvim
incluye la versión de consola compilada con
+clipboard
.
El repositorio no oficial
herecura
provee variantes de Vim/gVim como:
vim-cli
,
vim-gvim-common
,
vim-gvim-gtk
,
vim-gvim-qt
,
vim-rt
y
vim-tiny
.
Utilización
Para ver una introducción básica sobre como usar Vim, siga el tutorial ejecutando
vimtutor
(para la versión de consola) o
gvimtutor
(para la versión gráfica).
Vim incluye un amplio sistema de ayuda al que puede acceder con el comando
:h
tema
. Los temas abarcan desde comandos, opciones de configuración, atajos de teclado,
plugins
, etc. Puede usar el comando
:h
(sin especificar un tema) para obtener información acerca del sistema de ayuda y navegar entre estos.
Configuración
El archivo de configuración para cada usuario está en su carpeta
home
respectiva,
~/.vimrc
y otros archivos de Vim en
~/.vim/
. El archivo de configuración global está en
/etc/vimrc
. Los archivos globales para Vim como
defaults.vim
y
archlinux.vim
están en la carpeta
/usr/share/vim/
.
Nota
Un comportamiento por defecto esperado, como por ejemplo tener el resaltado de sintaxis habilitado, está definido en
defaults.vim
, el cual es cargado si no hay un
~/.vimrc
presente. Añada
let skip_defaults_vim=1
a
/etc/vimrc
para evitar que
defaults.vim
sea cargado.
[1]
. También puede hacer que
defaults.vim
sea cargado incluso si hay un
~/.vimrc
presente, véase
:h defaults
(configuración por defecto)
en Vim.
gVim carga su propio archivo de configuración junto con el de Vim; Vim solo carga el suyo.
Portapapeles
Las órdenes de Vim como
:yank
o
:put
normalmente funcionan con el registro sin nombre
""
. Si la característica
+clipboard
está disponible y su valor incluye
unnamed
, entonces las operaciones de extracción, eliminación, cambio y colocación de Vim que normalmente irían al registro sin nombre usarán el registro del portapapeles
"*
en su lugar, que es el búfer
PRIMARY
en X.
Para cambiar el buffer a
CLIPBOARD
(PORTAPAPELES)
, ejecute
:set clipboard=unnamedplus
que hará que se use el registro del portapapeles correspondiente (
"+
) en X. Cabe señalar que la opción
clipboard
se puede establecer en un valor delimitado por comas. Si
:set clipboard=unnamedplus,unnamed
, las operaciones de extracción también copiarán el texto extraído en el registro
"*
además del registro
"+
(sin embargo, las operaciones de eliminación, cambio y colocación solo funcionarán en el registro
"+
).
Para más información, véase
:help 'clipboard'
. Hay otros valores que se pueden establecer para la función
clipboard
. Puede utilizar
:help clipboard-unnamed
para ir al tema de ayuda para el primer valor válido que se puede establecer para esta función, seguido de la ayuda para todos los demás valores válidos.
Sugerencia
Puede establecer atajos de teclado alternativos para las operaciones de copiado y pegado, por ejemplo, véase
[2]
para usar
Ctrl+c
,
Ctrl+v
y
Ctrl+x
.
El portapapeles de X se vacía cuando sale de vim. Para que la selección de vim sea persistente dentro del portapapeles de X, necesita un
gestor de portapapeles
. Alternativamente, puede añadir
autocmd VimLeave * call system("echo -n $'" . escape(getreg(), "'") . "' | xsel --input --clipboard")
a su
.vimrc
(requiere el paquete
xsel
).
Resaltado de sintaxis
El resaltado de sintaxis está disponible para varios lenguajes de programación. Para activarlo, ejecute:
:filetype plugin on
:syntax on
Indentado
Para cargar los archivo de reglas de indentado para distintos tipos de archivos, ejecute:
:filetype indent on
Ajustado de líneas visual
La opción
wrap
(de 'wrap line': ajustar linea)
está habilitada por defecto, y esta hace que Vim rompa las líneas que sean más largas que el ancho de la ventana y que el resto de esta sea mostrada en la linea siguiente. Esta opción solo afecta como el texto es mostrado, sin modificar el texto en sí.
La ruptura normalmente se hace después del ultimo carácter que quepa en la ventana, incluso si es en medio de una palabra. Puede habilitar un comportamiento más inteligente con la opción
linebreak
(romper linea)
. Cuando esta opción es habilitada (con
set linebreak
), la linea se rompe después de los caracteres especificados en la cadena de la opción
breakat
(romper en)
, la que por defecto contiene un espacio y algunas formas de puntuación (véase
:help breakat
).
El resto de la linea se muestra en la linea siguiente sin ninguna indentación. La opción
breakindent
(indentado del resto de linea)
indica que se tiene que respetar el indentado establecido, haciendo que la linea use el indentado de la linea anterior. El comportamiento de esta opción puede ser personalizado con
breakindentopt
(opciones del indentado del resto de linea)
; por ejemplo, para que el resto de una linea quede 4 espacios más a la derecha que la anterior en archivos Python (véase
:help breakindentopt
para más detalles):
autocmd FileType python set breakindentopt=shift:4
Utilización del ratón
Se puede utilizar el ratón en Vim, pero solo en algunas terminales:
Emuladores de terminal basados en
xterm
o
urxvt
.
La consola Linux con
gpm
(véase más detalles en
GPM
).
PuTTY
.
Para habilitar esta característica, añada la siguiente linea a su
~/.vimrc
:
set mouse=a
Esta opción está establecida en
defaults.vim
.
Nota
Al copiar o pegar se va a usar el registro
"*
si se puede acceder a un servidor de X, véase la sección
#Portapapeles
. Puede hacer que xterm maneje la entrada de los botones del ratón manteniendo la
tecla mayús/shift
.
Moverse entre las líneas con las teclas de dirección
Por defecto, cuando presiona
←
al inicio de una linea o
→
al fina de esta, el cursor no se moverá a la linea anterior o a la siguiente.
Este comportamiento puede ser cambiado añadiendo
set whichwrap=b,s,<,>,[,]
a su archivo
~/.vimrc
.
Combinando archivos
Vim incluye un editor de diferencias (programa que muestra las diferencias entre dos o más archivos, y asiste en su combinación). Ejecute
vimdiff
para usar el editor de diferencias–solo tiene que especificar algunos archivos, p.ej:
vimdiff
archivo1
archivo2
. Aquí hay una lista de los comandos de
vimdiff
con sus descripciones:
Accion
Atajo
Siguiente cambio
]c
Cambio anterior
[c
Iguala el buffer actual al otro
do
Iguala el otro buffer al actual
dp
Abrir región
zo
Cerrar región
zc
Volver a cargar archivos
:diffupdate
Trucos y consejos
Números de linea
Para mostrar la columna con los números de linea, ocupe
:set number
(números)
. Por defecto muestra los números de linea absolutos; puede activar los números relativos con
:set relativenumber
(números relativos a la linea actual)
. Cuando se activan ambas opciones obtiene números de linea híbridos–la linea actual es absoluta y el resto son relativas a esta.
Puede saltar a una linea especifica usando
:
numero de linea
o
numero de linea
gg
. Los saltos son guardados en la "jump list"
(lista de saltos)
, véase
:h jump-motions
(saltos)
para más detalles.
Corrección ortográfica
Puede utilizar el corrector ortográfico ingresando:
set spell
Por defecto solo están instalados (en
/usr/share/vim/vim82/spell/
) los diccionarios para el idioma inglés. Puede encontrar más diccionarios en los
Repositorios oficiales
buscando
vim-spell
. También puede encontrar otros en el
Directorio FTP de Vim
[
enlace roto
2025-01-22]
. Si descarga manualmente diccionarios, tiene que ponerlos en la carpeta
~/.vim/spell/
y puede activarlos con el comando:
:setlocal spell spelllang=
en_us
(reemplazando
en_us
con el nombre del diccionario a usar).
Acción
Atajo
Siguiente error
]s
Error anterior
[s
Sugerencias para el reemplazo
z=
Añadir al diccionario global como correcto
zg
Añadir al diccionario de la sesión como correcto
zG
Añadir al diccionario global como incorrecto
zw
Añadir al diccionario de la sesión como incorrecto
zW
Aplicar reemplazo en todo el archivo
:spellr
Sugerencia
Para activar la corrección ortográfica en dos idiomas (por ejemplo, inglés y alemán), añada
set spelllang=
en,de
en su
~/.vimrc
o en
/etc/vimrc
y reinicie Vim.
Puede activar la corrección ortográfica en ciertos tipos de archivo (p.ej.
.txt
) usando el
plugin
FileType y una regla para detectar la extensión. Para activar la corrección ortográfica en archivos que terminen en
.txt
, cree el archivo
/usr/share/vim/vimfiles/ftdetect/plaintext.vim
con la siguiente linea:
autocmd BufRead,BufNewFile *.txt set filetype=plaintext
. Después, añada
autocmd FileType plaintext setlocal spell spelllang=
en_us
en su
~/.vimrc
o en
/etc/vimrc
y reinicie Vim. Sino, también puede añadir
autocmd BufRead,BufNewFile *.txt setlocal spell
a su
~/.vimrc
o en
/etc/vimrc
, y reiniciar Vim. Para cambiar la extensión tiene que editar esta linea (específicamente en
*.txt
) para incluir la o las extensiones en las que quiera corregir la ortografía automáticamente.
Para habilitar la corrección ortográfica solo en documentos LaTeX (o TeX), añada
autocmd FileType
tex
setlocal spell spelllang=
en_us
a su
~/.vimrc
o en
/etc/vimrc
y reinicie Vim.
Mantener el estado de ejecución
Normalmente, al salir de
vim
se descarta toda la información relacionada a la sesión, como los archivos abiertos, el historial de comandos, texto en los registros, etc. En las siguientes secciones se muestran varias formas de como preservar esta información.
Archivos
viminfo
Puede usar un archivo
viminfo
para guardar el historial de comandos, de búsqueda, de entrada, el contenido de los registros, marcas que apuntan archivos o ubicaciones especificas en estos, el ultimo patrón de búsqueda/sustitución (para usar con
n
y
&
dentro de la sesión), la lista de
buffers
y las variables globales que haya establecido. Para poder usar los archivos
viminfo
, su versión de
vim
instalada tiene que estar compilado con la opción
+viminfo
.
Para configurar lo que se va a guardar en su archivo
viminfo
, añada (por ejemplo) lo siguiente a
~/.vimrc
:
set viminfo='10,<100,:100,%,n~/.vim/.viminfo
En la cadena se establecen los parámetros con su identificadores:
'q  :
q
archivos editados recordados
<m  :
m
líneas guardadas por cada registro
:p  :
p
líneas del historial de comandos guardadas
%   : Se guarda y carga la lista de
buffers
n...: Ubicación de los archivos
viminfo
(una "
n
" seguida de la ruta, sin espacio en medio)
Véase la
documentación oficial de viminfo
para ver como un archivo
viminfo
existente es modificado al actualizarlo con la información de la sesión actual; por ejemplo, la información de los
buffers
de la sesión siendo cerrada.
Archivos de sesión
Los archivos de sesión son utilizados para guardar el estado de las sesiones a través del tiempo. Un archivo de sesión es utilizado para cada sesión o proyecto en el que trabaje. Para que estos archivos puedan ser utilizados, su versión de
vim
instalada tiene que estar compilada con la opción
+mksession
.
En una sesión, el comando
:mksession[!] [
nombre_de_la_sesion.vim
]
hará que Vim escriba un
vim-script
a
nombre_de_la_sesion.vim
en la carpeta actual, o escribirá a
Session.vim
por defecto si
no
especifica un nombre de archivo. Opcionalmente puede sobrescribir un archivo de sesión en la misma carpeta y con el mismo nombre añadiendo
!
.
Puede restaurar la sesión al iniciar
vim
desde una terminal añadiendo el siguiente argumento:
$ vim -S [
nombre_de_la_sesion.vim
]
O desde una sesión que se esté ejecutando con el comando:
:source
nombre_de_la_sesion.vim
Puede ver que es guardado específicamente o ver detalladamente las opciones de los archivos de sesión en
la documentación de Vim
.
Aquí
puede encontrar ejemplos con comentarios.
Restaurar la posición del cursor en un archivo
Véase
Restaurar la posición del cursor en un archivo de una sesión anterior
(en ingés)
en la wiki de Vim.
Reemplazar el comando vi con Vim
Cree un
alias
de
vi
a
vim
.
Si quiere que al ejecutar
sudo vi
se ejecute
vim
, instale
vi-vim-symlink
AUR
[
enlace roto
: package not found]
, el cual va a quitar
vi
y lo reemplazará con un enlace
vim
. También puede hacer usted este enlace y ponerlo en una ubicación superior para que tome precedencia a
/usr/bin
.
Retornos de carro de DOS/Windows
Si al final de cada linea del archivo que esté editando hay un
^M
, significa que es un archivo creado en MS-DOS o en Windows. En Linux solo se utiliza un carácter de salto de linea (LF:
Line Feed
), pero en sistemas Windows/MS-DOS se ocupa una secuencia de un carácter de retorno de carro (CR:
Carriage Return
) y uno de salto de linea (LF) para hacer lo mismo. Este retorno de carro se muestra como
^M
.
Para quitar todos los retornos de carro de un archivo, ejecute:
:%s/^M//g
El
^
que aparece es un carácter de control. Para ingresar la secuencia de control
^M
presione
Ctrl+v,Ctrl+m
.
También puede instalar el paquete
dos2unix
y ejecutar
dos2unix
archivo
para corregir el archivo.
Nota
Otra manera sencilla es cambiar la opción
fileformat
: Establezcala a
set ff=unix
para convertir archivos con finales de linea de DOS/Windows a los de Unix. Para hacer lo contrario, establezcala a
set ff=dos
para convertir archivos con finales de linea de Unix a los de DOS/Windows.
Corregir espacio vacío al final de las ventanas de gVim
Cuando usa un
gestor de ventanas
configurado para ignorar el tamaño establecido de la ventana, gVim llena las áreas no funcionales con el color de fondo del tema GTK.
Para solucionarlo tiene que ajustar el espacio que gVim reserva al final de las ventanas. Añada la siguiente linea a
~/.vimrc
:
set guiheadroom=0
Nota
Si establece esta opción a cero, no podrá ver la barra de desplazamiento de abajo.
Vim como pager
Usando scripts puede utilizar Vim como un
terminal pager
, pero con las características de Vim como por ejemplo, los temas de color.
Vim tiene incluido el script
/usr/share/vim/vim82/macros/less.sh
, el que usted puede utilizar creándole un
alias
. Tome en cuenta que este script no soporta ningún argumento descrito en
less(1) § OPTIONS
.
También puede instalar el script
vimpager
. Para cambiar el pager por defecto,
exporte
la variable de entorno
PAGER
. Este script no soporta todos los argumentos; la lista de los que están soportados está
disponible en su GitHub
.
Resaltar los resultados de búsqueda
Para resaltar la primera cadena coincidente al escribir la búsqueda, añada la siguiente linea a su
~/.vimrc
:
set incsearch
Para resaltar todas las cadenas coincidentes al escribir la búsqueda y después de haberla ejecutado, añada la siguiente linea a su
~/.vimrc
:
set hlsearch
Nota
Al establecer
hlsearch
se van a resaltar todas las cadenas coincidentes hasta que una búsqueda siguiente se ejecute. Esto puede ser innecesario u obstructor, así que puede desactivarlo temporalmente hasta que haga otra búsqueda ejecutando
:nohlsearch
. Si nota que lo ejecuta a menudo, considere asignarle un atajo.
El resalte también va a ser aplicado cuando se coincida con expresiones regulares en comandos que las utilicen, como
s
o
g
.
Plugins
El uso de plugins en Vim pueden incrementar su productividad al extender las características de este programa. Estos pueden alterar la interfaz de usuario, añadir nuevos comandos, habilitar soporte para completado de código, integrar otros programas y utilidades, añadir soporte para más idiomas, y más.
Sugerencia
Para obtener un lista de plugins populares, véase
Vim Awesome
.
Instalación
Con el gestor de paquetes integrado
Vim 8 añadió la posibilidad de cargar plugins de manera nativa. Esto se hace instalando los plugins en la carpeta
~/.vim/pack
. La estructura de esta carpeta difiere un poco de la usual en los gestores de plugins, que usualmente tienen una carpeta por cada plugin. Lo siguiente es un proceso de instalación común y una demostración de la estructura de la carpeta (con el
plugin vim-surround de Tim Pope
como ejemplo):
$ mkdir -p ~/.vim/pack/tpope/start
Debe tomar en cuenta que
~/.vim/pack/tpope
es el
package directory (directorio de plugin/s)
, lo cual es la definición vaga en la
Documentación de Vim
para una carpeta que contiene uno o más plugins. Note que a esta carpeta no debe descargar repositorios de plugins y su nombre es arbitrario. Usted puede instalar todos sus plugins en una sola carpeta; o como se muestra aquí, en una con el nombre del autor en Github:
tpope
.
Esta carpeta puede contener las siguientes subcarpetas:
start
-
(Inicio)
: Los plugins de esta subcarpeta son cargados automáticamente al inicio de Vim. Es el lugar de instalación más frecuente.
opt
-
(Opcional)
: Los plugins de esta subcarpeta son cargados al ejecutar el comando
:packadd
dentro de una sesión.
Ingrese a la carpeta
start
y clone el repositorio:
$ cd ~/.vim/pack/tpope/start
$ git clone
https://tpope.io/vim/surround.git
Se creará una subcarpeta adicional,
~/.vim/pack/tpope/start/surround
, donde están los archivos del plugin.
Después, actualize el indice de ayuda para comprobar si el plugin tiene archivos de ayuda:
$ vim -u NONE -c "helptags surround/doc" -c q
El plugin va a ser cargado automáticamente cuando inicie Vim. No necesita hacer cambios a su
~/.vimrc
, excepto por las opciones para plugin que necesite.
Con un gestor de plugins
Un gestor de plugins es (también) un plugin que instala, maneja y actualiza otros plugins para Vim. Puede ser más conveniente si está usando Vim en otras plataformas, y necesita una manera consistente de actualizar los plugins.
Vim-plug
es un gestor de plugins minimalista con varias características como la posibilidad de cargar plugins bajo demanda y actualizar varios al mismo tiempo; se puede instalar desde
vim-plug
AUR
o
vim-plug-git
AUR
.
Vundle
, disponible como
vundle
AUR
o
vundle-git
AUR
.
pathogen.vim
es un plugin simple para gestionar el
runtimepath
(directorio de archivos de inicio)
de Vim; se puede instalar desde
vim-pathogen
AUR
o
vim-pathogen-git
AUR
.
Dein.vim
es un gestor de plugins que reemplaza a
NeoBundle
, se puede instalar desde
vim-dein
AUR
o
vim-dein-git
AUR
.
Desde los repositorios oficiales
El grupo
vim-plugins
provee varios plugins; ejecute el comando
pacman -Sg vim-plugins
para mostrar los paquetes disponibles e
instalarlos
.
Plugins destacados
cscope
Cscope
es una herramienta para navegar proyectos. Después de poner el cursor en alguna palabra, símbolo o función, cscope puede encontrar al ser invocado (usualmente con atajo) otras funciones que llamen a la función, la definición de esta, y más.
Instale
el paquete
cscope
.
Copie el archivo con la configuración por defecto donde pueda ser leído automáticamente por Vim:
mkdir -p ~/.vim/plugin
wget -P ~/.vim/plugin
https://cscope.sourceforge.net/cscope_maps.vim
Nota
Probablemente tendrá que descomentar las siguientes líneas en
~/.vim/plugin/cscope_maps.vim
para que los atajos de teclado funcionen en Vim 7.x:
set timeoutlen=4000
set ttimeout
Cree un archivo que contenga una lista de los archivos que cscope deba indexar (este plugin soporta varios lenguajes, pero en el ejemplo solo se usaran los archivos
.c
,
.cpp
y
.h
, que son específicos para proyectos en C/C++):
$ cd
/ruta/a/la/carpeta/del/proyecto
$ find . -type f -print | grep -E '\.(c(pp)?|h)$' > cscope.files
Inicie la base de datos que va a usar cscope:
$ cscope -bq
Nota
Tendrá que navegar su proyecto desde esta ubicación o establecer y exportar la variable
$CSCOPE_DB
, que debe apuntar al archivo
cscope.out
generado.
Los atajos de teclado por defecto son:
Ctrl-\ con
      c: Buscar funciones que llamen esta función
      d: Buscar funciones llamadas por esta función
      e: Buscar con patrón egrep
      f: Buscar este archivo
      g: Buscar definición
      i: Buscar archivos que incluyan (con
#include
) este archivo
      s: Buscar símbolo
      t: Buscar texto
También puede cambiar los los atajos.
#Hace que se use ctrl-c para encontrar funciones que llamen esta función
nnoremap <C-c> :cs find c <C-R>=expand("<cword>")<CR><CR>
Taglist
Taglist
provee una forma de visualizar la estructura de varios archivos de código fuente en varios lenguajes y le permite navegar por estos de manera eficaz.
Instale
el paquete
vim-taglist
AUR
.
Algunas opciones útiles para añadir a su
~/.vimrc
:
let Tlist_Compact_Format = 1
let Tlist_GainFocus_On_ToggleOpen = 1
let Tlist_Close_On_Select = 1
nnoremap <C-l> :TlistToggle<CR>
Solución de problemas
gVim funciona lento
La interfaz visual de Vim en GTK 3 puede ser más lenta que la versión en GTK 2 (véase
FS#51366
). Como solución puede instalar
gvim-gtk2
AUR
.
Véase también
Información oficial
Pagina de Vim
Documentación
Wiki de Vim
Vim Scripts
Tutoriales
Tutorial de vim e introducción
Tutorial de vi y guía referencial
Hoja de referencia gráfica y tutorial
Introducción a Vim y tutorial
Open Vim
— colección de herramientas para el aprendizaje de Vim
Learn Vim Progressively
(Aprenda Vim progresivamente)
Learning Vim in 2014
(Aprenda Vim en el 2014)
Siete hábitos para editar texto efectivamente
Sugerencias básicas para Vim
[
enlace roto
2025-03-15]
Videos
Vimcasts
–Grabaciones de pantalla en formato
.ogg
.
Videos tutoriales para Vim
–Cubriendo desde lo básico hasta temas avanzados.
Hojas de referencia
https://devhints.io/vim
https://vim.rtorr.com/
–Una hoja de referencias compatible con navegadores móviles–
Fuentes
Juegos
Vim Adventures
(Aventuras en Vim)
VimGolf
Configuración
Configuración de nion
Configuración completa y detallada por Amir Salihefendic
Bart Trojanowski
Distrubución de plugins y recursos para Vim de Steve Francia
Vim Awesome
- Plugins para Vim
Configuración de Vim de W4RH4WK
Vimrc y tema de colores por askapache
Vimrc básico
Usevim
Colores
Vivify
Como personalizar el tema de colores de Vim