Vim (Español) - ArchWiki

# Vim (Español)

From ArchWiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

La traducción de este artículo o sección no refleja el texto original.

Motivos: Desactualizado. (Discusión en Talk:Vim (Español)#)

Artículos relacionados

- List of applications/Documents#Vi-style text editors

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

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

- Emultadores de terminales basados en xterm/urxvt
- Consola de Linux con gpm
- PuTTY

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`

Sugerencia:

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

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

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

Nota:

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

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

- 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

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

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

- Página web
- Documentación
- Vim Wiki
- Vim Scripts

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

- https://devhints.io/vim
- https://vim.rtorr.com/

#### Juegos

- Vim Adventures
- VimGolf

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

#### Colores

- Vivify
- Personalización del esquema de colores Vim

Categories:

- Text editors (Español)
- Console applications (Español)

Hidden category:

- Pages or sections flagged with Template:Bad translation (Español)