.vimrc
en la carpeta de usuario ~/.vimrc
(en el caso de sistemas operativos basados en Unix. Puede ser diferente dependiendo del sistema operativo).$VIMINIT
$HOME/.vimrc
$HOME/.vim/vimrc
$EXINIT
$HOME/.exrc
$VIMRUNTIME/default.vim
$VIMINIT
. Si no hay nada ahí, Vim va a buscar $HOME/.vimrc
. Si no hay nada ahí, Vim va a buscar $HOME/.vim/vimrc
. Si Vim lo encuentra va a dejar de buscar y usará $HOME/.vim/vimrc
.$VIMINIT
, es una variable de entorno. No esta definido de manera predeterminada. Se puede usar ~/dotfiles/testvimrc
como variable $VIMINIT
, puedes crearte una variable de entorno con la ubicación de este archivo. Después de ejecutar export VIMINIT='let $MYVIMRC="$HOME/dotfiles/testvimrc" | source $MYVIMRC'
, Vim va a usar el archivo ~/dotfiles/testvimrc
como tu archivo vimrc.$HOME/.vimrc
, es la ruta usada por muchos usuarios de Vim de manera convencional. $HOME
es en muchos casos el directorio del usuario raíz (~
). Si existe ~/.vimrc
, Vim usará este como su archivo vimrc.$HOME/.vim/vimrc
, esta alojado dentro del directorio ~/.vim
. Podrías tener el directorio ~/.vim
ya para tus complementos, scripts personalizados o archivos de vistas. Ten en cuenta que no hay un punto delante del nombre del archivo vimrc ($HOME/.vim/.vimrc
no funcionará, pero $HOME/.vim/vimrc
sí lo hará).$EXINIT
funciona de manera similar a $VIMINIT
.$HOME/.exrc
trabaja de manera similar a $HOME/.vimrc
.$VIMRUNTIME/defaults.vim
es el predeterminado al compilar Vim. En mi caso, tengo instalado Vim 8.2 usando Homebrew (en MAC), por lo que la ruta es (/usr/local/share/vim/vim82
). Si Vim, en ninguna de las seis ubicaciones encuentra el archivo vimrc, entonces usará este archivo.~/.vimrc
.Plug 'github-username/repository-name'
) entre las líneas call plug#begin()
y call plug#end()
. Por ejemplo, si quiere instalar emmet-vim
y nerdtree
, agrega las siguientes líneas en tu archivo vimrc::source %
) y ejecuta :PlugInstall
para instalar ambos.:PlugClean
para eliminarlo de su equipo.:h packages
para mas información. En el próximo capítulo, vamos a mostrar como usarlo.set
en cualquier vimrc. Si ejecutas la línea en el modo línea de comandos, esta configuración no será permanente. Se perderán las mismas al cerrar Vim. Por ejemplo, en vez de ejecutar :set relativenumber number
desde el modo línea de comandos cada vez que inicias Vim, se puede agregar dentro del archivo .vimrc:set tabstop=2
. Revisa la página de ayuda para cada configuración para aprender qué tipo de valores acepta.let
en lugar de set
(verifique anteponer el mismo con &
). Con let
, se pueden usar expresiones como un valor. Por ejemplo, para configurar la opción 'dictionary'
a un directorio solo si ese directorio existe::h E355
.command
.GimmeDate
para mostrar el día actual::GimmeDate
, Vim va a mostrar la fecha como "2021-01-1".<args>
. Si se le quiere pasar un formato específico de fecha y hora a GimmeDate
:-nargs
. Utiliza -nargs=0
para que no se puedan pasar argumentos, -nargs=1
para pasar un argumento, -nargs=+
para pasar por lo menos un argumento, -nargs=*
para pasar cualquier cantidad de argumentos, y -nargs=?
para pasar 0 ó un argumento. Si quiere pasar n argumentos, usa -nargs=n
(donde n
es un entero).<args>
tiene dos variantes: <f-args>
y <q-args>
. La primera es para pasar argumentos a una función VimScript. La última es usada para convertir la entrada del usuario en cadenas de texto.args
:q-args
:f-args
::h command
y :args
.Ctrl-F
para el complemento fzf.vim al comando :Gfiles
(que busca rápidamente por archivos en un repositorio git). En el segundo, se mapea la combinación <Leader>tn
para llamar a la función personalizada ToggleNumber
(que cambia entre si las opciones norelativenumber
y relativenumber
). La combinación Ctrl-F
mapea y sobreescribe la función nativa de Vim para moverse en la pantalla. El mapeo va a sobreescribir los controles de Vim si entran en conflicto. En mi caso, como nunca uso esta característica, he decidido que es conveniente sobreescribirla.<Leader>tn
?<Leader>tn
para que ejecute la función ToggleNumber()
. Sin la tecla leader, podría utilizar tn
, pero Vim ya tiene utiliza la tecla t
para acciones propias como es mover el cursor hasta antes de una ocurrencia o búsqueda.tn
sin que esto interfiera con el uso predeterminado de la tecla t
. La tecla leader es una tecla que puedes configurar para crear tus atajos de teclado personalizados.<Leader>tn
se convertiría en \tn
.<Space>
como mi tecla para llamar a estos mapeos en vez de la barra invertida. Para usarla, agrega esto en el archivo vimrc:nnoremap
usado anteriormente se puede descomponer en tres partes:n
representa el modo normal.nore
quiere decir no-recursivo.map
es el nombre del comando para mapear.nmap
en vez de nnoremap
(nmap <silent> <C-f> :Gfiles<CR>
). Igualmente, es una buena práctica el usar la variante que no es recursiva para prevenir potenciales bucles infinitos al ejecutar el comando.B
para agregar el punto y coma (;) al final de la línea, luego, saltar una palabra hacia atrás (volvemos a ejecutar B
que en el modo normal salta para atrás una palabra tal como necesitamos).B
... ¡vaya! Vim agrega de manera descontrolada ;
(se puede interrumpir presionando Ctrl-C
). ¿Por qué pasó esto? Porque en el mapeo A;<esc>B
, la letra B
no hace referencia a la función nativa de Vim que es saltar una palabra hacia atrás, porque se esta refiriendo a la función mapeada que actualmente es:B
. Esta vez si va a agregar al final de la linea ;
y volver una palabra antes. El B
en este mapeo representa al mapeo original de Vim al llamar a la función B
.jk
:map
(para el modo normal, visual, selección y pendiente de operador), vmap
(para modos visual y selección), smap
(selección), xmap
(visual), omap
(pendiente de operador), map!
(modo insertar y línea de comandos), lmap
(insertar, línea de comandos y argumentos de lenguaje), cmap
(línea de comandos) y tmap
(trabajo en la terminal). No vamos a entrar en detalle en todos. Para aprender más de ellos ejecuta :h map.txt
.source
. Este comando lee los comandos que hay en el archivo utilizado como argumento.~/.vim
y vamos a llamarla /settings
(~/.vim/settings
). El nombre en sí es arbitrario y lo puedes llamar como quieras.~/.vim/settings/plugins.vim
).~/.vim/settings/configs.vim
).~/.vim/settings/functions.vim
).~/.vim/settings/mappings.vim
) .~/.vimrc
:~/.vim/settings/plugins.vim
:~/.vim/settings/configs.vim
:~/.vim/settings/functions.vim
:~/.vim/settings/mappings.vim
:/mappings.vim
. En el futuro, siempre se puede agregar mas directorios mientras el archivo vimrc crece. Por ejemplo si se necesita crear una configuración para el color del tema, se puede agregar al archivo ~/.vim/settings/themes.vim
.:set filetype?
puede comprobarlo). Si este es un archivo del tipo vim
, se puede usar el método de plegado. El método de plegado utiliza {{{
y }}}
para indicar el inicio y el final de un grupo que se esta plegando.{{{
y }}}
para plegar al resto de su vimrc (no se olvide de comentar estas lineas con "
):~/.vimrc-backup
, ejecute: