Vim (Español)

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

Esta traducción de Vim fue revisada el 2022-11-08. Si existen cambios puede actualizarla o avisar al equipo de traducción.

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 grafica).

Vim incluye un amplio sistema de ayuda al que puede acceder con el comando . Los temas abarcan desde comandos, opciones de configuración, atajos de teclado, plugins, etc. Puede usar el comando (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, y otros archivos de Vim en . El archivo de configuración global está en /etc/vimrc. Los archivos globales para Vim como defaults.vim y están en la carpeta .

Portapapeles

Las órdenes de Vim como o normalmente funcionan con el registro sin nombre . Si la característica 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 (PORTAPAPELES), ejecute que hará que se use el registro del portapapeles correspondiente () en X. Cabe señalar que la opción se puede establecer en un valor delimitado por comas. Si , 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 . Hay otros valores que se pueden establecer para la función . 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.

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 (romper linea). Cuando esta opción es habilitada (con ), la linea se rompe después de los caracteres especificados en la cadena de la opción (romper en), la que por defecto contiene un espacio y algunas formas de puntuación (véase ).

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 (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 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 (véase más detalles en GPM).
  • PuTTY.

Para habilitar esta característica, añada la siguiente linea a su :

set mouse=a

Esta opción está establecida en defaults.vim.

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 a su archivo .

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 diferenciassolo tiene que especificar algunos archivos, p.ej: vimdiff archivo1 archivo2. Aquí hay una lista de los comandos de vimdiff con sus descripciones:

AccionAtajo
Siguiente cambio
Cambio anterior
Iguala el buffer actual al otro
Iguala el otro buffer al actual
Abrir región
Cerrar región
Volver a cargar archivos:diffupdate

Trucos y consejos

Números de linea

Para mostrar la columna con los números de linea, ocupe (números). Por defecto muestra los números de linea absolutos; puede activar los números relativos con (números relativos a la linea actual). Cuando se activan ambas opciones obtiene números de linea híbridosla linea actual es absoluta y el resto son relativas a esta.

Puede saltar a una linea especifica usando o numero de lineagg. Los saltos son guardados en la "jump list" (lista de saltos), véase (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 ) los diccionarios para el idioma inglés. Puede encontrar más diccionarios en los Repositorios oficiales buscando . También puede encontrar otros en el Directorio FTP de Vim. Si descarga manualmente diccionarios, tiene que ponerlos en la carpeta y puede activarlos con el comando: (reemplazando en_us con el nombre del diccionario a usar).

AcciónAtajo
Siguiente error
Error anterior
Sugerencias para el reemplazo
Añadir al diccionario global como correcto
Añadir al diccionario de la sesión como correcto
Añadir al diccionario global como incorrectozw
Añadir al diccionario de la sesión como incorrecto
Aplicar reemplazo en todo el archivo

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

Para configurar lo que se va a guardar en su archivo viminfo, añada (por ejemplo) lo siguiente a :

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 .

En una sesión, el comando hará que Vim escriba un vim-script a en la carpeta actual, o escribirá a 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 a vim.

Si quiere que al ejecutar sudo vi se ejecute vim, instale , el cual va a quitar 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 .

Retornos de carro de DOS/Windows

Si al final de cada linea del archivo que esté editando hay un , 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 .

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

También puede instalar el paquete y ejecutar 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 :

set guiheadroom=0

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 , el que usted puede utilizar creándole un alias. Tome en cuenta que este script no soporta ningún argumento descrito en .

También puede instalar el script vimpager. Para cambiar el pager por defecto, exporte la variable de entorno . 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 :

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 :

set hlsearch

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.

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

  • - (Inicio): Los plugins de esta subcarpeta son cargados automáticamente al inicio de Vim. Es el lugar de instalación más frecuente.
  • - (Opcional): Los plugins de esta subcarpeta son cargados al ejecutar el comando dentro de una sesión.

Ingrese a la carpeta y clone el repositorio:

$ cd ~/.vim/pack/tpope/start
$ git clone https://tpope.io/vim/surround.git

Se creará una subcarpeta adicional, , 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 , 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 o vim-plug-gitAUR.
  • Vundle, disponible como o .
  • pathogen.vim es un plugin simple para gestionar el (directorio de archivos de inicio) de Vim; se puede instalar desde o vim-pathogen-gitAUR.
  • Dein.vim es un gestor de plugins que reemplaza a NeoBundle, se puede instalar desde o .

Desde los repositorios oficiales

El grupo provee varios plugins; ejecute el comando para mostrar los paquetes disponibles e instalarlos.

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 .

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

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

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 .

Algunas opciones útiles para añadir a su :

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

Véase también

Información oficial

Tutoriales

Videos

Hojas de referencia

Juegos

Configuración

Colores

gollark: - remote-learning stuff already battle-tested somewhat last academic year
gollark: - in-person school is going to be quite restrictive and not the same anyway
gollark: - not actually going in is going to be waaaay better than any mitigations they could come up with
gollark: - sixth form is allegedly meant for independent learning anyway, so it would make sense to actually have some partly
gollark: Rough idea for what to say:
This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.