Vim (Español)
Vim es un editor de texto de terminal. Es una versión extendida de vi con características adicionales. Incluye resaltado sintáctico, un sistema de ayuda completo, scripting nativo (vimscript), un modo visual para la selección de texto, comparación de archivos (vimdiff) y herramientas algo más limitadas como rview y rvim.
Instalación
Instale uno de los siguientes paquetes de pacman:
- vim — con soporte de intérpretes de Python 2/3, Lua, Ruby y Perl; sin soporte para GTK/X
- gvim — que viene a ser lo mismo que el anterior, pero con soporte para GTK/X
- El paquete vim está compilado sin soporte para Xorg. Específicamente, falta la característica
+clipboard
, por lo que Vim no podrá operar con primary y clipboard. El paquete gvim también proporciona la versión CLI de Vim con la función+clipboard
. - La AUR también proporciona una serie de variantes de Vim/gVim:
vim-cli
,vim-gvim-común
,vim-gvim-gtk
,vim-gvim-qt
,vim-rt
yvim-tiny
.
Utilización
Para obtener una visión general básica sobre cómo usar Vim, siga el tutorial de vim ejecutando vimtutor (para la versión de terminal) o gvimtutor (para la versión gráfica).
Vim incluye un amplio sistema de ayuda al que se puede acceder con el comando :h subject
. Los temas incluyen comandos, opciones de configuración, enlaces de teclas, plugins, etc. Utilice el comando :h
(sin ningún tema) para obtener información sobre el sistema de ayuda y para saltar de un tema a otro.
Configuración
El archivo de configuración específico de Vim se encuentra en : ~/.vimrc
y los archivos Vim del usuario actual se encuentran dentro de ~/.vim/
. El archivo de configuración global se encuentra en /etc/vimrc
. Los archivos Vim globales como defaults.vim
y archlinux.vim
se encuentran dentro de /usr/share/vim/
.
El comportamiento comúnmente esperado, como el resaltado de sintaxis, está habilitado en el archivo defaults.vim
, que se carga cuando no hay un ~/.vimrc
presente. Añada let skip_defaults_vim=1
a /etc/vimrc
para desactivar la carga de defaults.vim
completamente. [1]
defaults.vim
, incluso cuando ~/.vimrc
está presente, visite :h defaults
en vim. Portapapeles
Los comandos de Vim como :yank
o :paste
operan con el registro sin nombre, que por defecto corresponde al registro "*
. Si la función +clipboard
está disponible, el registro "*
se refleja en el búfer PRIMARIO
en X.
Para cambiar el registro predeterminado, puede colocar :set clipboard=unnamedplus
y utilizar el registro "+
en su lugar. El registro "+
corresponde al búfer CLIPBOARD
en X.
Para más información, vea el :help 'clipboard'
.
Ctrl+c
, Ctrl+v
y Ctrl+x
.Resaltado sintáctico
Para permitir el resaltado de sintaxis para muchos lenguajes de programación, escriba:
:filetype plugin on :syntax on
Sangrías
Actívelo con:
:filetype indent on
Limitación visual
La opción wrap
está activada por defecto, lo que le indica a Vim que limite las líneas más largas que el ancho de la ventana, para que el resto de la línea se muestre en la siguiente línea. La opción wrap
sólo afecta a la forma en que se muestra el texto, el texto en sí no se modifica.
La limitación normalmente se produce después del último carácter que se ajusta a la ventana, incluso cuando está en medio de una palabra. Se puede controlar una envoltura más inteligente con la opción linebreak
. Cuando se activa con set linebreak
, la limitación se produce después de los caracteres listados en la opción de cadena breakat
, que por defecto contiene un espacio y algunos signos de puntuación (ver :help breakat
).
Las líneas limitadas se muestran normalmente al principio de la siguiente línea, independientemente de cualquier sangría. La opción breakindent le indica a Vim que tenga en cuenta la sangría al envolver líneas largas, de modo que las líneas envueltas mantengan la misma sangría de la línea previamente mostrada. El comportamiento de breakindent
puede afinarse con la opción breakindentopt
, por ejemplo, para desplazar la línea envuelta otros cuatro espacios a la derecha para los archivos de Python (ver :help breakindentopt
para más detalles):
autocmd FileType python set breakindentopt=shift:4
Usando el ratón
Vim tiene la capacidad de hacer uso del ratón, pero sólo funciona en ciertas terminales:
Para habilitar esta función, añade esta línea a ~/.vimrc
:
set mouse=a
La opción ratón=a
se establece en defaults.vim
.
"*
si hay acceso a un servidor X (ver la sección #Portapapeles). El manejo de los botones del ratón puede ser usado manteniendo la tecla shift
pulsada.La línea transversal salta con las teclas de flecha
Por defecto, si se pulsa ←
al principio de una línea, o si se pulsa →
al final de una línea, no se permitirá que el cursor atraviese la línea anterior o siguiente.
El comportamiento por defecto puede ser cambiado añadiendo set whichwrap=b,s,<,>,[,]
en su archivo ~/.vimrc
.
== Fusión de archivos
Vim incluye un editor de diferencias (un programa que muestra las diferencias entre dos o más archivos y ayuda a fusionarlos convenientemente). Usa vimdiff para ejecutar el editor de diferencias - sólo especifica un par de archivos a él: vimdiff fichero1 fichero2
. Esta es la lista de comandos específicos de vimdiff:
Acción | Atajo |
---|---|
siguiente cambio |
]c
|
cambio previo |
[c
|
obtener diff |
do
|
colocar diff |
dp
|
abrir fold |
zo
|
cerrar fold |
zc
|
volver a escanear |
:diffupdate
|
Consejos y trucos
Números de línea
Para mostrar la columna de números de línea, use :set number
. Por defecto se muestran los números de línea absolutos, los números relativos se pueden habilitar con :set relativenumber
.
Se puede saltar a una línea específica con :número de línea
o número de líneagg
. Los saltos se guardan en una lista.
Corrección ortográfica
Vim tiene la capacidad de control ortográfico. Habilítelo con:
set spell
Por defecto, sólo se instalan los diccionarios en inglés. Se pueden encontrar más diccionarios en los official repositories buscando vim-spell
. Se pueden encontrar diccionarios adicionales en el archivo FTP de Vim. Los diccionarios adicionales pueden ser puestos en la carpeta ~/.vim/spell/
y habilitados con el comando: :setlocal spelllang=en_us
(reemplazando el en_us
con el nombre del diccionario necesario).
Action | Shortcut |
---|---|
siguiente |
]s
|
previo |
[s
|
recomendaciones |
z=
|
ortografía correcta, agregar |
zg
|
ortografía correcta, sesión |
zG
|
ortografía incorrecta, agregar |
zw
|
ortografía incorrecta, sesión |
zW
|
repetir en todo el archivo |
:spellr
|
- Para habilitar la ortografía en dos idiomas (por ejemplo inglés y español), agregue
set spelllang=en,es
en su~/.vimrc
o/etc/vimrc
y luego reinicie Vim. - Puede habilitar la revisión ortográfica para tipos de archivos arbitrarios (por ejemplo .txt) usando el plugin FileType y una regla personalizada para la detección de tipos de archivos. Para habilitar el control ortográfico para cualquier archivo que termine con .txt, cree el archivo
/usr/share/vim/vimfiles/ftdetect/plaintext.vim
e inserta la líneaautocmd BufRead,BufNewFile *.txt set filetype=plaintext
en ese archivo. A continuación, inserte la líneaautocmd FileType plaintext setlocal spelllang=en_us
en su~/.vimrc
o/etc/vimrc
y luego reinicie Vim. Alternativamente, uno puede simplemente insertar la líneaautocmd BufRead,BufNewFile *.txt setlocal spell
en su~/.vimrc
o/etc/vimrc
, y luego reiniciar Vim. Asegúrese de editar esta línea (específicamente*.txt
) para incluir el/los tipo(s) de archivo destinado(s) a la revisión de la ortografía. - Para activar la revisión ortográfica sólo para documentos LaTeX (o TeX), añada
autocmd FileType tex setlocal spelllang=en_us
en su~/.vimrc
o/etc/vimrc
y luego reinicie Vim.
Guardando el estado del runtime
Normalmente, al salir de vim
se descarta toda la información no esencial como los archivos abiertos, el historial de la línea de comandos, el texto arrancado, etc. La conservación de esta información puede configurarse de las siguientes maneras.
archivos viminfo
El archivo viminfo
también puede utilizarse para almacenar el historial de la línea de comandos, el historial de cadenas de búsqueda, el historial de líneas de entrada, el contenido de los registros, las marcas de los archivos, las marcas de localización dentro de los archivos, el último patrón de búsqueda/sustitución (que se utilizará en el modo de búsqueda con n
y &
dentro de la sesión), la lista de buffers y cualquier variable global que pueda haber definido. Para que la modalidad viminfo
esté disponible, la versión de vim
que usted instaló debe haber sido compilada con la función +viminfo
.
Configure lo que se mantiene en su archivo viminfo
, añadiendo, por ejemplo, lo siguiente en ~/.vimrc
:
set viminfo='10,<100,:100,%,n~/.vim/.viminfo
donde cada parámetro está precedido por un identificador:
'q : q, número de archivo editado recordado <m : m, número de líneas guardadas para cada registro :p : p, número de líneas cmd de historia recordadas % : guarda y restaura la lista de buffers n...: camino totalmente cualificado a los archivos viminfo (note que esto es un "n" literal)
Véase la documentación oficial viminfo documentation para obtener detalles sobre cómo se modifica un archivo viminfo
preexistente a medida que se actualiza con la información de la sesión actual como, por ejemplo, de varios buffers de la sesión actual de la que se está saliendo.
Archivos de sesión
Los archivos de sesión se pueden utilizar para guardar el estado de cualquier número de sesiones particulares a lo largo del tiempo. Se puede utilizar un archivo de sesión distinto para cada sesión o proyecto de su interés. Para que esa modalidad esté disponible, la versión de vim
que usted instaló debe haber sido compilada con la función +mksession
.
Dentro de una sesión, :mksession[!] [my_session_name.vim]
escribirá un vim-script a my_session_name.vim
en el directorio actual, o Session.vim
por defecto si elige "no" para proporcionar un nombre de archivo. El opcional !
sobrescribirá un archivo de sesión preexistente con el mismo nombre y ruta.
Una sesión puede ser reanudada cuando se inicia "vim" desde la terminal:
$ vim -S [mi_nombre_de_sesion.vim]
O en un buffer de sesión ya abierto ejecutando el comando vim:
:fuente mi_nombre_de_sesion.vim
Lo que exactamente se guarda y detalles adicionales sobre las opciones de los archivos de sesión se tratan ampliamente en la documentación de vim. Los ejemplos comentados se encuentran aquí.
Guardando la posición del cursor
Ver Restaurar el cursor a la posición de archivo en la sesión de edición anterior en la wiki de Vim.
Reemplaza el comando vi con Vim
Crear un alias para vi
a vim
.
Alternativamente, si usted desea escribir sudo vi
y obtener vim
, instale vi-vim-symlinkAUR que eliminará vi
y lo reemplazará con un enlace simbólico a vim
.
Retornos de carro en DOS/Windows
Si hay un ^M
al final de cada línea, significa que estás editando un archivo de texto que fue creado en MS-DOS o Windows. Esto se debe a que en Linux sólo se utiliza un carácter de avance de línea (LF) para el salto de línea, pero en los sistemas Windows/MS DOS están utilizando una secuencia de un retorno de carro (CR) y un avance de línea (LF) para el mismo. Y estos retornos de carro se muestran como ^M
.
Para eliminar todos los retornos de carro de un archivo, escriba:
:%s/^M//g
Observe que hay una letra de control. Para introducir la secuencia de control, pulse ^M
.
Alternativamente, instale el paquete dos2unix y ejecute dos2unix file
para arreglar el archivo.
Espacio vacío en la parte inferior de las ventanas de gVim
Al usar un window manager (Español) configurado para ignorar los atajos sobre el tamaño de las ventanas, gVim llenará el área no funcional con el color de fondo del tema GTK.
La solución es ajustar cuánto espacio reserva gVim en la parte inferior de la ventana. Ponga la siguiente línea en ~/.vimrc
:
set guiheadroom=0
Vim como un pager
Usando scripts, Vim puede ser usado como un terminal pager, para de esta forma obtener varias características de Vim, como, por ejemplo, esquemas de color.
Vim viene con el script /usr/share/vim/vim82/macros/less.sh
, para el cual puede crear un alias. Tenga en cuenta que este script no soporta ninguna de las flags de línea de comandos mencionadas en less(1) § OPTIONS.
Alternativamente, también está el vimpager. Para cambiar el pager por defecto, exporte la variable de entorno PAGER
. Tenga en cuenta que no todas las flags de la línea de comandos están soportadas; la lista de flags soportadas está disponible en GitHub.
Resaltando los resultados de la búsqueda
Para resaltar la primera cadena que será emparejada en una búsqueda mientras escribe, añada la siguiente línea a su ~/.vimrc
:
set incsearch
Para resaltar todas las cadenas que coincidan en una búsqueda mientras se escribe la búsqueda y después de que la búsqueda se haya ejecutado, añada la siguiente línea a su ~/.vimrc
:
set hlsearch
Plugins o extensiones
Agregar plugins a Vim puede aumentar su productividad al extender las características de Vim. Los plugins pueden alterar la interfaz de usuario de Vim, agregar nuevos comandos, habilitar el soporte de finalización de código, integrar otros programas y utilidades con Vim, agregar soporte para idiomas adicionales y más.
Instalación
Usando el gestor de paquetes incorporado
Vim 8 añadió la posibilidad de cargar plugins de terceros de forma nativa. Es posible utilizar esta funcionalidad almacenando los paquetes de terceros en la carpeta ~/.vim/pack
. La estructura de esa carpeta es un poco diferente a la de un gestor de plugins típico, donde normalmente contiene un directorio por cada plugin. Pasemos por un procedimiento de instalación típico y una estructura de directorios tomando El plugin vim-surround de Tim Pope como ejemplo:
$ mkdir -p ~/.vim/pack/tpope/start
Es importante señalar que ~/.vim/pack/tpope
es un directorio de paquetes que se define vagamente como un directorio que contiene uno o más plugins en la documentación de Vim. Sin embargo, este no es el lugar adecuado para el repositorio de plugins de git clone
. El nombre del directorio del paquete puede ser arbitrario. Puedes elegir mantener todos tus plugins en un único directorio de paquetes o, como en nuestro ejemplo, usar el nombre del autor de GitHub tpope
.
El directorio del paquete puede contener las siguientes subcarpetas:
-
inicio
- Los plugins de esta subcarpeta se cargarán automáticamente cuando se inicie Vim. Esta es la ubicación más utilizada. -
opt
- los plugins de esta subcarpeta pueden ser cargados bajo demanda emitiendo el comando:packadd
dentro de Vim.
Ahora, diríjase a la carpeta creada start
y revise el repositorio de plugins:
$ cd ~/.vim/pack/tpope/start $ git clone https://tpope.io/vim/surround.git
Esto crea una subcarpeta adicional en start ~/.vim/pack/tpope/start/surround
y ahí es donde se colocan los archivos y directorios del plugin vim.
Luego, actualice el índice, si es que contiene archivos de ayuda:
$ vim -u NINGUNO -c "helptags surround/doc" -c q
Ahora puedes iniciar Vim y el plugin se cargará automáticamente. No es necesario hacer cambios en el archivo de configuración de ~/.vimrc
a menos que quieras personalizar las opciones específicas del plugin.
Usando un gestor de plugins
Un gestor de plugins es un plugin que instala, administra y actualiza los plugins de Vim. Esto puede ser útil si también utiliza Vim en otras plataformas que no sean Arch Linux y quiere un método consistente de actualización.
- Vundle es actualmente el gestor de plugins más popular para Vim, disponible como vundleAUR o vundle-gitAUR.
- Vim-plug es un gestor minimalista de plugins de Vim con muchas características, como la carga de plugins bajo demanda y la actualización paralela. Está disponible como vim-plugAUR o vim-plug-gitAUR.
- pathogen.vim es un plugin simple para manejar la runtimepath de Vim, disponible como vim-pathogenAUR o vim-pathogen-gitAUR.
- Dein.vim es un administrador de plugins que reemplaza a NeoBundle, disponible como vim-deinAUR o vim-dein-gitAUR.
Desde los repositorios de Arch
El grupo vim-plugins proporciona varios plugins. Use el comando pacman -Sg vim-plugins
para listar los paquetes disponibles que puede instalar con pacman.
Plugins notables
cscope
Cscope es una herramienta para navegar por un proyecto. Navegando a una palabra/símbolo/función y llamando a cscope (normalmente con teclas de atajo) puede encontrar funciones que llaman a la función, la definición de la función y más.
Instale el paquete cscope.
Copie el archivo por defecto de cscope (donde será leído automáticamente por Vim):
mkdir -p ~/.vim/plugin wget -P ~/.vim/plugin http://cscope.sourceforge.net/cscope_maps.vim
Cree un archivo que contenga la lista de archivos que desea que cscope junte (cscope puede manejar muchos lenguajes, pero este ejemplo encuentra archivos .c, .cpp y .h, específicos para un proyecto C/C++):
cd /ruta/proyecto/ find . -tipo f -print | grep -E '\.(c(pp)?|h)$' > cscope.files
Crear archivos de base de datos que el cscope leerá:
cscope -bq
Atajos de teclado predeterminados:
Ctrl-\ y c: Encontrar las funciones que llaman a esta función d: Encontrar las funciones llamadas por esta función e: Encuentra este patrón de egrep f: Encuentra este archivo g: Encuentra esta definición i: Encontrar los archivos #incluyendo este archivo s: Encuentra este símbolo de la C t: Encontrar asignaciones para
Siéntase libre de cambiar los atajos.
#Mapas ctrl-c para encontrar funciones que llamen a la función nnoremap <C-c> :cs find c <C-R>=expandir("<cword>")<CR><CR>
Lista de etiquetas
Lista de etiquetas ofrece una visión general de la estructura de los archivos de código fuente y permite navegar eficientemente por los archivos en diferentes lenguajes de programación.
Instale el paquete vim-taglistAUR.
Opciones útiles para poner en ~/.vimrc
:
let Tlist_Compact_Format = 1 let Tlist_GainFocus_On_ToggleOpen = 1 let Tlist_Close_On_Select = 1 nnoremap <C-l> :TlistToggle<CR>
Véase también
Oficial
Tutoriales
- vim Tutorial y Primer
- vi Tutorial y Guía de Referencia
- Graphical vi-Vim Cheat Sheet and Tutorial
- Open Vim - colección de herramientas de aprendizaje de Vim
- Aprende Vim progresivamente
- Aprendiendo Vim en 2014
- Siete hábitos de edición efectiva de textos
- Consejos básicos de Vim
Videos
- Vimcasts - screencasts en formato .ogg.
- Vim Tutorial Videos - cubriendo desde lo básico hasta temas avanzados.
Hojas de trucos
Juegos
Configuración
- nion's
- Una configuración detallada de Amir Salihefendic
- Bart Trojanowski
- Steve Francia's Vim Distribution
- Vim Awesome - Vim Plugins
- Configuración de Vim de W4RH4WK
- Vimrc rápido/esquema de colores de askapache
- Vimrc básico
- Usevim