Vim (Español)

From ArchWiki
Jump to navigation Jump to search

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
Nota:
  • 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 y vim-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/.

Nota:

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]

Alternativamente, para activar 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'.

Tip: Se pueden crear atajos personalizados para las operaciones de copiar y pegar. Véase, por ejemplo, [2] para la vinculación 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.

Nota: Copiar/pegar usará el registro "* 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
Tip:
  • 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ínea autocmd BufRead,BufNewFile *.txt set filetype=plaintext en ese archivo. A continuación, inserte la línea autocmd FileType plaintext setlocal spelllang=en_us en su ~/.vimrc o /etc/vimrc y luego reinicie Vim. Alternativamente, uno puede simplemente insertar la línea autocmd 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.

Note: Otra forma sencilla es cambiando el ajuste de fileformat. set ff=unix para convertir los archivos con terminación de línea DOS/Windows a terminación de línea Unix. Para hacer lo contrario, sólo tiene que emitir set ff=dos para convertir los archivos Unix a DOS/Windows.

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
Note: Si le pone cero, no podra ver la barra de desplazamiento horizontal inferior.

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
Note:
  • El ajuste hlsearch mantendrá todas las coincidencias resaltadas hasta que se haga una nueva búsqueda. Este comportamiento puede ser indeseado, así que para desactivar temporalmente el resaltado hasta la próxima búsqueda, ejecute :nohlsearch. Si se encuentra ejecutando este comando a menudo, considere la posibilidad de vincularlo a una clave.
  • Este comportamiento también se observará al hacer coincidir a regex con otros comandos que los involucren como s o g.

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.

Tip: Para una lista de los plugins más populares, visite Vim Awesome

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.

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
Note: Probablemente, tendrá que descomentar estas líneas en ~/.vim/plugin/cscope_maps.vim para habilitar los atajos de cscope en Vim 7.x:
set timeoutlen=4000
set ttimeout

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
Note: Debe navegar por los archivos de su proyecto desde esta ubicación o establecer y exportar la variable $CSCOPE_DB, apuntando al archivo cscope.out.

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

Videos

Hojas de trucos

Juegos

Configuración

Colores