vim
Configurando Vim
Buscar..
El archivo vimrc
El archivo .vimrc
(pronunciado Vim-wreck) es un archivo de configuración de Vim. Contiene comandos que serán ejecutados por Vim cada vez que se inicie.
Por defecto, el archivo está vacío o no existe; Puedes usarlo para personalizar tu entorno Vim.
Para averiguar dónde espera Vim que se almacene el archivo vimrc, abra Vim y ejecute:
:echo $MYVIMRC
Unix: en un sistema Unix como Mac o Linux, su vimrc se llamará .vimrc
y, por lo general, estará ubicado en su directorio de inicio ( $HOME/.vimrc
).
Windows: en Windows se llamará _vimrc
y se ubicará en su directorio de inicio ( %HOMEPATH%/_vimrc
).
En el inicio, Vim buscará en varios lugares un archivo vimrc. Lo primero que existe se usa, los otros se ignoran. Para una referencia completa vea el artículo de documentación :h $MYVIMRC
.
¿Qué opciones puedo usar?
Si no sabe qué opciones debe usar, es posible que le interese el comando :options
.
Esto abrirá una división con todas las opciones de Vim listadas y con su valor actual mostrado. Hay 26 secciones para mostrar todas las opciones que puedes probar.
p.ej
4 displaying text
scroll number of lines to scroll for CTRL-U and CTRL-D
(local to window)
set scr=20
scrolloff number of screen lines to show around the cursor
set so=5
wrap long lines wrap
set nowrap wrap
...
En una línea de valor (por ejemplo, set nowrap
) puede presionar CR para alternar el valor (si es un valor binario). En una línea de opción (por ejemplo, wrap long line wrap
) puede presionar CR para acceder a la documentación de esta opción.
Archivos y directorios
Independientemente de lo que haga para personalizar Vim, NUNCA debe suceder fuera de $HOME
:
- en Linux, BSD y Cygwin,
$HOME
es usualmente/home/username/
, - en Mac OS X,
$HOME
es/Users/username/
, - en Windows,
$HOME
suele serC:\Users\username\
.
La ubicación canónica de vimrc
y su directorio vim
encuentra en la raíz de ese directorio $HOME
:
en sistemas similares a Unix
$HOME/.vimrc <-- the file $HOME/.vim/ <-- the directory
en Windows
$HOME\_vimrc <-- the file $HOME\vimfiles\ <-- the directory
El diseño anterior está garantizado para funcionar, ahora y en el futuro.
Vim 7.4 hizo posible mantener su encantador vimrc
dentro de su directorio vim
. Realmente es una buena idea, aunque solo sea porque hace que sea más fácil mover la configuración.
Si usa 7.4 exclusivamente, lo siguiente será suficiente:
en sistemas similares a Unix
$HOME/.vim/vimrc
en Windows
$HOME\vimfiles\vimrc
Si desea los beneficios de un vim/
autónomo vim/
pero usa tanto la versión 7.4 como una versión anterior, o solo una versión anterior, la solución más simple y preparada para el futuro es poner esta línea y solo esta:
runtime vimrc
en este archivo:
en sistemas similares a Unix
$HOME/.vimrc
en Windows
$HOME\_vimrc
y realice su configuración en $HOME/.vim/vimrc
o $HOME\vimfiles\vimrc
.
Opciones
Hay tres tipos de opciones:
- opciones booleanas,
- opciones de cadena,
- opciones de números.
Para comprobar el valor de una opción,
- uso
:set option?
para comprobar el valor de una opción, - uso
:verbose set option?
Para ver también dónde se colocó por última vez.
Configuración de opciones booleanas
set booloption " Set booloption.
set nobooloption " Unset booloption.
set booloption! " Toggle booloption.
set booloption& " Reset booloption to its default value.
Configuración de opciones de cadena
set stroption=baz " baz
set stroption+=buzz " baz,buzz
set stroption^=fizz " fizz,baz,buzz
set stroption-=baz " fizz,buzz
set stroption= " Unset stroption.
set stroption& " Reset stroption to its default value.
Configuración de opciones de número
set numoption=1 " 1
set numoption+=2 " 1 + 2 == 3
set numoption-=1 " 3 - 1 == 2
set numoption^=8 " 2 * 8 == 16
Usando una expresión como valor
utilizando concatenación:
execute "set stroption=" . my_variable
utilizando
:let
let &stroption = my_variable
Ver :help :set
y :help :let
.
Mapeos
- No ponga comentarios después de las asignaciones, se romperán las cosas.
- Use
:map <F6>
para ver qué se asigna a<F6>
y en qué modo. - Utilice
:verbose map <F6>
para ver también dónde se mapeó por última vez. -
:map
y:map!
son demasiado genéricos Utilice:n[nore]map
para las asignaciones de modo normal,::i[nore]map
para el modo de inserción:x[nore]map
para el modo visual, etc.
Mapeos recursivos
Use asignaciones recursivas solo si pretende usar otras asignaciones en sus asignaciones:
nnoremap b B
nmap <key> db
En este ejemplo, b
está hecho para funcionar como B
en modo normal. Como usamos b
en un mapeo recursivo , presionar <key>
funcionará como dB
, no como db
.
Asignaciones no recursivas
Use asignaciones no recursivas solo si pretende usar comandos predeterminados en sus asignaciones, que es casi siempre lo que desea:
nnoremap <key> db
En este ejemplo, usamos b
en un mapeo no recursivo, por lo que al presionar la tecla siempre funcionará como db
, ya sea que reasignemos b
o no.
Ejecutando un comando desde un mapeo
nnoremap <key> :MyCommand<CR>
Ejecutando múltiples comandos desde un mapeo
nnoremap <key> :MyCommand <bar> MyOtherCommand <bar> SomeCommand<CR>
Llamar a una función desde un mapeo
nnoremap <key> :call SomeFunction()<CR>
Mapeando un mapeo <Plug>
map <key> <Plug>name_of_mapping
Vea :help map-commands
:help key-notation
y :help <plug>
.
Ver mapeos clave en Vim para leer más
Variables
Como la mayoría de los lenguajes de scripting, vimscript tiene variables.
Uno puede definir una variable con el comando: :let
:
let variable = value
y eliminarlo con :unlet
:
unlet variable
En Vim, las variables se pueden incluir en el ámbito anteponiendo una sola letra y dos puntos a su nombre. Los autores de complementos usan esa característica para imitar las opciones:
let g:plugin_variable = 1
Ver :help internal-variables
.
Comandos
- No olvide la explosión para permitir que Vim sobrescriba ese comando la próxima vez que vuelva a cargar su vimrc.
- Los comandos personalizados deben comenzar con un carácter en mayúscula.
Ejemplos
command! MyCommand call SomeFunction()
command! MyOtherCommand command | Command | command
- Ver
:help user-commands
.
Funciones
- No olvide el bang para permitir que Vim sobrescriba esa función la próxima vez que vuelva a cargar el script donde se define la función.
- Las funciones personalizadas deben comenzar con un carácter en mayúscula (funciones globales) o con
s:
(funciones locales de script), o deben tener un prefijo con el nombre asociado al complemento de carga automática donde están definidas (por ejemplo, en{&rtp}/autoload/foo/bar.vim
podríamos definirfoo#bar#functionname()
). - Para poder usar los parámetros en la función, use
a:parameter_name
. Las funciones variables se pueden definir con puntos suspensivos...
, para acceder a los parámetros usea:000
(lista de todos los parámetros), oa:0
(número de parámetros igual alen(a:000)
),a:1
primero sin nombre parámetros, y así sucesivamente. - Las funciones pueden llamarse así
:call MyFunction(param1, param2)
- Cada línea en una función comienza implícitamente con a
:
tanto, todos los comandos son comandos de dos puntos - Para evitar que la función continúe su ejecución en caso de error, es mejor anotar la firma de la función con la
abort
Ejemplo
function! MyFunction(foo, bar, ... ) abort
return a:foo . a:bar . (a:0 > 0 ? a:1 : '')
endfunction
Funciones de script
Si solo planea usar su función en el archivo donde está definida (ya sea porque ha roto una función más grande en partes más pequeñas o porque la usará en un comando, una asignación, ...), puede prefijar con s:
evitando ensuciar su espacio de nombres global con funciones internas inútiles:
function! s:my_private_function() " note we don't need to capitalize the first letter this time
echo "Hi!"
endfunction
Usando s: funciones de mapeos
Si su función local de secuencia de comandos se va a utilizar en una asignación, debe hacer referencia a ella con el prefijo especial <SID>
:
nnoremap <your-mapping-key> :call <SID>my_private_function()<CR>
Ver :help user-functions
.
Sin embargo, tenga en cuenta que desde Vim 7, se considera una práctica recomendada definir las abreviaturas, los comandos y los menús de los complementos (ft), y definir funciones en los complementos de carga automática, excepto las funciones que los complementos deben usar cuando se cargan. Esto significa que hoy en día la necesidad de llamar a los scripts funciones locales desde mapeos no es tan pertinente como solía ser.
Grupos de autocomando
- Los grupos de autocommand son buenos para la organización, pero también pueden ser útiles para la depuración. Piense en ellos como pequeños espacios de nombres que puede habilitar / deshabilitar a voluntad.
Ejemplo
augroup MyGroup
" Clear the autocmds of the current group to prevent them from piling
" up each time you reload your vimrc.
autocmd!
" These autocmds are fired after the filetype of a buffer is defined to
" 'foo'. Don't forget to use 'setlocal' (for options) and '<buffer>'
" (for mappings) to prevent your settings to leak in other buffers with
" a different filetype.
autocmd FileType foo setlocal bar=baz
autocmd FileType foo nnoremap <buffer> <key> :command<CR>
" This autocmd calls 'MyFunction()' everytime Vim tries to create/edit
" a buffer tied to a file in /'path/to/project/**/'.
autocmd BufNew,BufEnter /path/to/project/**/* call MyFunction()
augroup END
Ver :help autocommand
.
Condicionales
if v:version >= 704
" Do something if Vim is the right version.
endif
if has('patch666')
" Do something if Vim has the right patch-level.
endif
if has('feature')
" Do something if Vim is built with 'feature'.
endif
Ver :help has-patch
y :help feature-list
.
Opciones de configuración
Comúnmente usaría :set
para configurar opciones a su gusto en su .vimrc
. Hay muchas opciones que se pueden cambiar.
Por ejemplo, para usar espacios para la sangría:
:set expandtab
:set shiftwidth=4
:set softtabstop=4
Resaltado de sintaxis
Active el resaltado de sintaxis cuando el terminal tenga colores.
if &t_Co > 2 || has("gui_running")
syntax on
end
Mostrar espacios en blanco finales y pestañas. Mostrar pestañas puede ser especialmente útil cuando se buscan errores en Makefiles.
set list listchars=tab:\|_,trail:.
highlight SpecialKey ctermfg=DarkGray
Esquemas de color
Vim viene con varios esquemas de color preinstalados. En Linux, los esquemas de color que vienen con Vim se almacenan en /usr/share/vim/vim74/colors/
(donde 74 es su número de versión, sin períodos); MacVim los almacena en /Applications/MacVim.app/Contents/Resources/vim/runtime/colors
.
Cambio de esquemas de color
El comando colorscheme
cambia la combinación de colores actual.
Por ejemplo, para establecer el esquema de color en "robokai":
:colorscheme robokai
El esquema de color predeterminado se denomina creativamente default
, por lo tanto, para volver a usarlo
:colorscheme default
Para ver todos los esquemas de color instalados actualmente, escriba :colorscheme
seguido de espacio y luego tab o ctrl d .
Instalación de combinaciones de colores
Los esquemas de color instalados por el usuario se pueden colocar en ~/.vim/colors/
. Una vez que se agrega un esquema de color a este directorio, aparecerá como una opción para el comando colorscheme
.
Para encontrar nuevas combinaciones de colores, hay sitios como vimcolors que contienen una variedad de combinaciones de colores. También hay herramientas como vim.ink y Vivify para ayudarlo a crear sus propios esquemas de color, o puede crearlos a mano.
Enumerar línea de enumeración
Para habilitar - escriba:
:set number
o :set nu
.
Para deshabilitar - escriba:
:set nonumber
o :set nonu
.
Para habilitar la enumeración relativa a la ubicación del cursor, escriba:
:set relativenumber
.
Para deshabilitar la enumeración relativa a la ubicación del cursor, escriba:
:set norelativenumber
.
Nota: para cambiar si la línea actual muestra el número de línea real o 0
, use los comandos :set number
y :set nonumber
mientras el atributo relativenumber
esté activo.
Complementos
Los complementos de Vim son complementos que se pueden usar para cambiar o mejorar la funcionalidad de vim.
Hay una buena lista de complementos en vimawesome