====== Vim ====== Editor de texto. Versión mejorada del editor de texto Vi, presente en todos los sistemas UNIX. * [[https://www.vim.org/|Web oficial]] ===== Advertencia ===== Antes de comenzar con Vim hay que tener en cuenta varios aspectos que pueden desconcertar o hacer complicado su uso inicial: * La forma de salir del editor no es evidente ('':q'') * Tener que teclear '':w'' para guardar no es "cómodo" * No existe autocompletado * No se utiliza el portapapeles del sistema * El ratón no funciona * La gestión de múltiples ficheros es "complicada". ===== Consejos ===== - Ejecutar ''vimtutor'' hasta comprender las bases de vim - Seguir el manual de vim dentro del propio vim con '':help user-manual'' - Echar un ojo a los antipatrones o acciones ineficientes, buscar mejoras, practicar y repetir de nuevo ===== Modos ===== Vim es un editor modal porque tiene diferentes modos de funcionamiento: ^ Modo ^ Tecla ^ Descripción ^ | Normal | Esc | navegar por los ficheros | | Visual caracter | %%v%% | | | Visual línea | %%V%% | | | Visual bloque | Ctrl+%%v%% | | | Insertar | i | | | Seleccionar línea | | | | Seleccionar bloque | | | | Comando | : | Línea de comando de Vim | | Reemplazar | : | | Para pasar de un modo a otro siempre hay que pasar primero por el modo normal (Esc) El modo de funcionamiento por defecto es el normal. ===== Modo normal ===== ==== Comandos ==== En el modo normal, podemos acceder al modo comando escribiendo '':'' * '':terminal'': abre un terminal * '':split'': divide el fichero actual en dos (también sirve la C+%%w%% %%s%% para división horizontal o C+%%w%% %%v%% para división vertical) * '':tabe'': nueva pestaña * C + %%f%%: búsqueda en el historial de comandos (también podemos lanzarlo con ''q:''). * C + %%a%%: incrementar el número bajo el cursor. * C + %%x%%: disminuir el número bajo el cursor. En cuando en el modo normal escribimos algo que empiece por dos puntos ('':''), se trata de comandos de ''ex''. ''Ex'' es un editor de texto en el que se apoya Vim para ciertas acciones. A su vez, ''ex'' orignalmente era una extensión de otro editor más simple llamado ''ed''. ==== Navegación ==== Para desplazarnos por el buffer (fichero abierto): ^ Acción ^ Tecla ^ | Subir | %%k%% | | Bajar | %%j%% | | Moverse a la derecha | %%l%% | | Moverse a la izquierda | %%h%% | | Avanzar por palabras | %%w%% | | Retroceder por palabras | %%b%% | | Moverse al final de la palabra | %%e%% | | Moverse al principio de la línea | %%0%% | | Moverse al final de la línea | %%$%% | | Moverse al primer caracter de la línea | ^ | | Desplazamiento hacia arriba | C-u | | Desplazamiento hacia abajo | C-d | | Ir al comienzo del buffer | %%gg%% | | Ir al final del buffer | %%G%% | | Moverse a la parte inferior | %%L%% | | Moverse a la parte superior | %%H%% | | Moverse a la parte central | %%M%% | | Moverse a la palabra que contenga X | %%fX%% | | Moverse a la anterior palabra que contenga X | %%FX%% | | Moverse entre grupos (llaves, paréntesis...) | % | | Desplaza la pantalla para que el cursor quede en la parte alta de la pantalla | %%zt%% | | Desplaza la pantalla para que el cursor quede en el centro de la pantalla | %%zz%% | | Desplaza la pantalla para que el cursor quede en la parte baja de la pantalla | %%zb%% | Las flechas también sirven para desplazarse. El ordenador donde Bill Joy desarrolló originalmente Vi (Vim se basa en Vi) fue un ADM-3A cuyo teclado era así: {{ :informatica:hardware:adm-3a-keyboard.png?nolink |}} Por eso las teclas de desplazamiento coinciden con las teclas %%h%%%%j%%%%k%%%%l%% ==== Búsqueda ==== ^ Acción ^ Combinación ^ | Buscar | / | | Buscar ''patata'' | /patata | | Moverse a la siguiente coincidencia | %%n%% | | Moverse a la anterior coincidencia | N | | Buscar la siguiente aparición del texto sobre el cursor | * | | Buscar la anterior aparición del texto sobre el cursor | # | Si tenemos activado el resalte de las coincidencias de la búsqueda, se quedarán marcadas las palabras coincidentes incluso cuando sigamos editando. Para quitar este resaltado, empleamos el comando '':noh'' (es la forma abreviada de '':nohlsearch'') ==== Edición ==== ^ Acción ^ Combinación ^ | Deshacer | %%u%% | | Rehacer | Ctrl+%%r%% | | Borrar la palabra sobre la que está el cursor | %%dw%% | | Borrar desde donde está el cursor hasta el final de la palabra | %%de%% | | Borrar línea | %%dd%% | | Borrar línea y entrar en modo insertar | %%cc%% | | Borrar todo lo que hay entre comillas y entrar en modo insertar | %%ci"%% | | Borrar todo lo que hay entre paréntesis y entrar en modo insertar | %%ci(%% | | Copiar una línea | %%yy%% | | Copiar una palabra | %%yw%% | | Pegar | %%p%% | | Modificar/eliminar lo que haya entre ''%%<>%%'' | %%ci<%% / %%di<%% | | Modificar/eliminar lo que haya entre ''[]'' | %%ci[%% / %%di[%% | | Modificar/eliminar ''%%<>%%'' y lo que haya dentro | %%ca<%% / %%da<%% | | Modificar/eliminar ''%%[]%%'' y lo que haya dentro | %%ca[%% / %%da[%% | | Repetir último comando de edición | . | | Convertir a minúsculas la línea actual | %%guu%% | | Convertir a minúsculas la palabra actual | %%guw%% | | Convertir a mayúsculas la línea actual | %%g%%UU | | Convertir a mayúsculas la palabra actual | %%g%%Uw | | Alternar mayúsculas y minúsculas un carácter | ~ | Los comandos de borrar, reemplazar, copiar y pegar aceptan un movimiento como argumento. ===== Modo visual ===== Permite seleccionar fragmentos de texto y luego copiarlos, cortarlos o pegarlos con los comandos de edición del modo normal. ^ Acción ^ Combinación ^ | Seleccionar caracteres | %%v%% | | Seleccionar líneas | V | | Seleccionar bloques | C-V | | Alternar mayúsculas/minúsculas | ~ | ===== Text-objects ===== Los objetos de texto son como regiones de texto que pueden ser manipuladas como si estuviésemos en el modo visual. Un objeto de texto muy típico es ''w'', que sirve para seleccionar palabras. Con ''dw'' borraríamos una palabra. ^ Teclas ^ Descripción ^ | ''i('' | Selecciona lo que haya entre paréntesis | | ''i{'' | Selecciona lo que haya entre llaves | | ''it'' | Selecciona lo que haya entre etiquetas | Y entonces e puede combiar con operaciones de modificación, copia y borrado: ^ Teclas ^ Descripción ^ | ''ci('' | Elimina lo que hay dentro de los paréntesis y entra en modo inserción | | ''di('' | Elimina lo que hay dentro de los paréntesis | ===== Marcadores ===== Podemos delimitar zonas del fichero para luego poder acceder rápido a ellas. Usando el comando ''m'' añadimos un marcador en la parte del texto en la que estemos. Por ejemlo, para el marcador ''k'' haríamos ''mk''. Para ir a ese marcador, escribiríamos ''%%'%%k''. ===== Ventanas ===== Todo archivo que se abre con Vim se almacena en un buffer (en memoria). En Vim, una **ventana** (//window//) es la visualización, una representación gráfica de un buffer. ^ Acción ^ Combinación / Instrucción ^ | Moverse a la ventana superior | Ctrl+%%w%% %%k%% / Ctrl+%%w%% | | Moverse a la ventana inferior | Ctrl+%%w%% %%j%% / Ctrl+%%w%% | | Moverse a la ventana de la derecha | Ctrl+%%w%% %%l%% / Ctrl+%%w%% | | Moverse a la ventana de la izquierda | Ctrl+%%w%% %%h%% / Ctrl+%%w%% | | Alternar entre ventanas abiertas | Ctrl+%%ww%% / Ctrl+%%w%% %%w%% | | Aumentar anchura ventana (división horizontal) | Ctrl+%%w%% + | | Reducir anchura ventana (división horizontal) | Ctrl+%%w%% - | | Aumentar anchura ventana (división vertical) | Ctrl+%%w%% %%>%% | | Reducir anchura ventana (división vertical) | Ctrl+%%w%% %%<%% | | Todas las ventanas del mismo tamaño | Ctrl+%%w%% = | | Pasar de una división vertical a una horizontal | Ctrl+%%w%% J | | Pasar de una división horizontal a una vertical | Ctrl+%%w%% H / Ctrl+%%w%% L | | Cerrar todas la ventanas y salir | '':qall'' | | Dividir la ventana y abrir un fichero en ella | '':split '' | Si queremos abrir dos ficheros en dos ventanas separadas horizontalmente: vim -o fichero1 fichero2 Si queremos abrir dos ficheros en dos ventanas separadas verticalmente: vim -O fichero1 fichero2 ===== Buffers ===== Los buffers se refieren a cualquier fichero cargado en Vim. ^ Acción ^ Combinación ^ | Siguiente buffer | %%:bn%% | | Anterior buffer | %%:bp%% | | Quitar buffer | %%:bd%% | ===== Registros ===== Cuando copiamos y cortamos texto, se guarda en registros. Podemos coger lo que se haya metido en los registros más tarde Para ver cómo se llaman los registros y qué hay en ellos: :reg Si queremos pegar lo que hay en el registro ''%%"%%5'': "5p ===== Pestañas ===== ^ Acción ^ Combinación ^ | Siguiente pestaña | %%gt%% | | Anterior pestaña | %%gT%% | | Ir a pestaña N | %%ngt%% | | Abrir un fichero en una nueva pestaña | '':tabe '' / '':tabedit '' | | Reorganizar los buffers abiertos en pestañas | '':tab sball'' | ==== Atajos Navegación ==== Con las siguientes asociaciones en el fichero ''vimrc'', podremos movernos entre las pestañas con la tecla "leader" y el número de posición de la pestaña, además de abrir una pestaña nueva con C + %%c%%: noremap 1 1gt noremap 2 2gt noremap 3 3gt noremap 4 4gt noremap 5 5gt noremap 6 6gt noremap 7 7gt noremap 8 8gt noremap 9 9gt noremap 0 :tablast nnoremap :tabnew ===== Tecla leader ===== Es una tecla que luego se empleará para crear atajos de teclado personalizados. let mapleader = " " En el ejemplo anterior estaríamos asociando la tecla leader al espacio. ===== Remap ===== Modo que queramos remap (asociación de teclas), luego nnoremap boo : * ''n'': modo normal. * ''i'': modo inserción. * ''nore'': no recursive execution. * ''map'': "mapea". ===== Auto comandos ===== ===== Configuración ===== Para saber dónde busca los ficheros de configuración Vim escribimos '':version'' y nos fijamos en: system vimrc file: "$VIM/vimrc" user vimrc file: "$HOME/.vimrc" 2nd user vimrc file: "~/.vim/vimrc" user exrc file: "$HOME/.exrc" defaults file: "$VIMRUNTIME/defaults.vim" fall-back for $VIM: "/usr/share/vim" Esos son los ficheros donde Vim buscará ''vimrc'', no quiere decir que tengan que existir. Si no tenemos un fichero ''.vimrc'' creado, Vim cargará ''$VIMRUNTIME/defaults.vim'' que siempre existirá en el sistema. Si hacemos: :echo $MYVIMRC Veremos la ruta del ''vimrc'' que está usando Vim en ese momento. Si aparece vacío es que no está utilizando **ninguno definido por el usuario**. ==== Opciones ==== Para saber si una opción está activada y el valor que tiene le añadimos una interrogación: :set nombreopcion? Por ejemplo: :set smartindent? Si está activada, veremos ''smartindent''. En caso contrario, pondrá ''nosmartindent'' Si queremos, además de ver el valor de la opción, ver dónde está definida, usremos ''verbose'': :verbose set mouse? Podemos ver el estado de todas las opciones con: :set all Si tenemos dudas y queremos dejar una opción con su valor por defecto: :set opcion& Para alternar los valores de las opciones //booleanas//, usamos ''!'': :set number! Vim comprobará en qué estado se encuentra la opción, y lo cambiará al otro estado posible. Por ejemplo, si ''number'' está activada (''number''), la desactivará poniendo ''nonumber''. ==== Esquemas de color ==== * [[https://github.com/NLKNguyen/papercolor-theme|PaperColor]] * [[https://github.com/joshdick/onedark.vim|onedark.vim]]: tema inspirado en One Dark del editor Atom. * [[https://github.com/morhetz/gruvbox|gruvbox]] * [[https://github.com/sickill/vim-monokai|Monokai]] * [[https://github.com/nanotech/jellybeans.vim|Jellybeans]] * [[https://github.com/w0ng/vim-hybrid|Hybrid]] * [[https://github.com/rafi/awesome-vim-colorschemes|Listado de esquemas de color de Vim en GitHub]] [[https://speakerdeck.com/cocopon/creating-your-lovely-color-scheme|Diapositivas]] sobre la creación de un esquema de colores en Vim. ==== vimrc ==== Fichero de configuración. " No intentar ser compatible con vi set nocompatible " Mostrar la línea de estado set laststatus=2 " Número de líneas que se moverán con el cursor al desplazarse verticalmente set scrolloff=7 " set so=7 " Habilitar resaltado de sintaxis (no necesario si filetype plugin on) " syntax on colorscheme jellybeans set background=dark " Deshabilitar backup set nobackup set nowb set noswapfile " Configuración del sangrado filetype plugin on filetype indent on " Resaltar resultados de búsqueda set hlsearch " Búsqueda incrementarl (busar a medida que se va escribiendo) set incsearch " Deshabilitar sonidos de error set noerrorbells set novisualbell set t_vb= set tm=500 " Recargar fichero cuando se haya cambiado desde fuera set autoread au FocusGained,BufEnter * checktime " Usar espacios en lugar de tabulaciones set expandtab " 1 tabulador = 4 espacios set shiftwidth=4 set tabstop=4 " Mostrar número de línea set number " Mostrar número de línea relativo set relativenumber set ai "Auto indent set si "Smart indent set wrap "Wrap lines " Muestra un menú para el autocompletado set wildmenu " Recordar la última posición del cursor al abrir el documento if has("autocmd") au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif endif " Posibilidad de (des)hacer aunque se haya cerrado Vim o apagado el PC " Debe existir el directorio definido en 'undodir' if has('persistent_undo') "verificar si está soportada la opción set undodir=$HOME/.vim/undodir "directorio donde se almacenarán los ficheros para deshacer set undofile "habilita la característica endif ===== Utilidades ===== ==== Mostrar fin de línea y retornos de carro ==== :set list Mostrará los espacios en blanco: * ''$'': fin de línea Para mostrar retornos de carro, hay que abrir el fichero con la opción ''-b'': vim -b fichero Los retornos de carro se mostrarán con ''^M'' (solo en ficheros que no han sido creados en formato Unix) Unix usa ''0xA'' como caracter de nueva línea. Windows usa una combinación de dos caracteres: ''0xD'' ''0xA''. ''0xD'' es el caracter de retorno de carro. ''^M'' es cómo Vim muestra ''0xD'' (''0x0D'' = 13, ''M'' es la letra número 13 en el alfabeto inglés). Para eliminar los caracteres ''^M'': :%s/^M//g ''^M'' se escribe manteniendo pulsada la tecla ''Ctrl'' y escribiendo ''v'' seguida de ''m'', y luego soltando ''Ctrl''. Esto a veces se abrevia como ''^V^M'' Para conversiones entre ficheros creados en Windows a formato Unix existe la utilidad ''dos2unix''. Si queremos hacer a la inversa, está la utilidad ''unix2dos'' ==== Insertar caracteres especiales ==== Los dígrafos se usan para escribir caracteres que normalmente no se pueden introducir por teclado. Los dígrafos se escriben con ''Ctrl'' + ''k'', y dos caracteres del dígrafo. Por ejemplo, para poner el símbolo ''€'', sería ''Ctrl'' + ''k'', ''Eu'' Para ver una lista de dígrafos dentro de Vim: '':digraphs'' * https://vim.fandom.com/wiki/Entering_special_characters * http://vimdoc.sourceforge.net/htmldoc/digraph.html#digraph-table ==== Autocompletado ==== En Vim hay varios comandos para completar parte de una palabra o línea que ya ha sido escrita. Esto es útil cuando estamos escribiendo palabras complicadas. La función más interesante para el autocompletado en Vim es **omni completion**. Esta característica proporciona autocompletado. Cuando se invoca, el texto antes del cursor se inspecciona para adivinar qué vendrá después. Un menú emergente mostrará posibles opciones. Es una característica similar al **IntelliSense** de Visual Studio. Para usarlo, mientras estamos en el modo de inserción, pulsaremos C+%%x%% y C+%%o%%. Si hay coincidencias, se mostrará un seleccionable por el que podremos navegaro con los cursores o con las combinaciones C+%%n%% y C+%%p%% Más información sobre esto en '':help ins-completion'' ==== Ejecutar comandos desde Vim ==== :!comando Por ejemplo: :!date ==== Salir a la shell ==== Si mientras editamos un fichero, necesitamos ejecutar algunos comandos, podemos usar: :shell Con esto abandonaremos temporalmente Vim y se nos presentará una terminal. Cuando terminemos, ejecutamos ''exit'' y regresaremos a Vim. Podemos usar la versión abreviada para ahorrarnos unos caracteres: '':sh'' ==== Sangrar texto ==== * %%>>%%: Sangra una línea * %%<<%%: quita la sangría de una línea Si tenemos seleccionada más de una línea, se puede aplicar sangría al texto seleccionado con %%>%% o quitarla con %%<%%. Este comando acepta //motion//: 3> Hará una sangría de 3 tabulaciones. ==== Sangrar automáticamente un fichero ==== %%gg%%=G ''='' es el comando para sangrar. Aquí lo combinamos con %%gg%% que nos lleva al principio del fichero y G que nos mueve hasta el final del fichero. Por lo tanto, sangraría todas las líneas del fichero. ==== Quitar sangría de un fichero ==== Si queremos dejar todo alineado a la izquierda, sin que haya espacios antes de cada línea: :%left Si solo queremos hacerlo para un bloque, lo seleccionamos con V y luego: :left ==== Eliminar todas las líneas en blanco de un fichero ==== :g/^\s*$/d ==== Ordenar palabras o números ==== Para ordenar las líneas alfabética y/o numéricamente, seleccionamos las líneas desadas y luego utilizamos el comando '':sort''. ==== Pegar texto copiado en modo inserción ==== Si hemos copiado texto (''y'') y estamos en modo inserción, podemos pegarlo con la combinación Ctrl + %%r%% 0 ==== Borrar en modo inserción ==== Hay varios atajos de teclado para borrar mientras que estamos en el modo inserción: * Ctrl + %%h%%: borra el carácter anterior (igual que si usáramos la tecla Retroceso) * Ctrl + %%w%%: borra la palabra anterior * Ctrl + %%u%%: borra la línea por detrás del cursor En realidad, podríamos ejecutar comandos del modo normal sin salir del modo inserción mediante la combinación C + %%o%% seguido del comando ==== Borrar todo el texto ==== :%d ==== Insertar un texto delante de cada línea ==== Si queremos añadir el caracter ''#'' en todas las líneas desde la 1 hasta la 10: :1,10s/^/# Podemos también utilizar el modo visual de bloque para elegir solo el primer caracter de cada línea y luego pulsar ''i'' para entrar en modo insertar, escribimos lo que queramos y al pulsar Esc se habrá introducido ese texto en todas las líneas. ==== Abreviaturas ==== Si tenemos algún texto que se suela repetir y queremos ahorrarnos teclas, podemos definir una serie de abreviaturas: :ab abreviatura esto es lo que se escribirá en su lugar De esta manera, en el modo inserción, tras escribir ''abreviatura'' seguido de un espacio o signo de puntuación, Vim lo sustituirá automáticamente por ''esto es lo que se escribirá en su lugar'' Podemos listar las abreviaturas que tenemos definidas con: :ab Si queremos eliminar una abreviatura: :una abreviatura Para eliminarlas todas: :abclear ==== Escribir la salida de comandos ==== Si queremos ejecutar algún comando Linux desde Vim y que su salida se incluya en el fichero que estamos editando: :r !comando Por ejemplo, para meter el calendario del mes actual: :r !cal ==== Acceder a man desde Vim ==== Si en el fichero que estamos viendo hay comandos de linux y queremos abrir ''man'' para consultarlo, estando en modo Normal, nos situamos sobre el comando y pulsamos K ==== Plegar bloques de código ==== Para ocultar ciertas funciones o bloques de código, podemos seleccionarla y luego: :fold A partir de ese momento: * ''zo'': muestra el bloque * ''zc'': pliega el bloque ==== Modificar espacios en blanco por espacios ==== Si hemos decidido sustituir por espacios cada pulsación del tabulador, los caracteres de tabulación insertados hasta entonces continuarán, así que para reemplazarlos todos por espacios: :retab ==== Deshabilitar sangría al pegar código ==== Si queremos deshabilitar temporalmente la sangría automática cuando vamos a pegar un bloque de código: :set paste Pegamos y volvemos a dejar todo como antes: :set nopaste ==== Modificar la detección del tipo de fichero ==== Vim puede detectar el tipo de fichero que se está editando por la extensión del fichero. Para activar esta característica hay que ejecutar el comando ''filetype on''. Si un fichero contiene diferentes lenguajes, Vim se regirá por el primer lenguaje que detecte y se aplicarán las reglas correspondientes. Es bastante típico que en un fichero .php se mezcle código PHP, HTML y JavaScript. Si queremos arreglar la sangría de ciertos bloques, podemos ir modificándolo sobre la marcha. Por ejemplo, si hemos abierto un fichero PHP, podemos hacer lo siguiente para aplicar las reglas de HTML: :set filetype=html La versión abreviada es ''set ft=html'' Si elegimos código HTML y luego ejecutamos el comando ''='', Vim aplicará la sangría adecuada para HTML. Podemos luego volver al PHP con: :set filetype=php Si vamos a estar saltando continuamente entre lenguajes, es útil crear una asociación de teclas en el ''vimrc'': map h :set ft=html map p :set ft=php ==== Soporte ratón ==== Para habilitar el uso del ratón en Vim: set mouse=a La opción ''a'' habilita el uso del ratón en Vim en todos los modos: * Normal * Visual * Inserción * Línea de comandos ===== Edición ===== ==== Buscar y reemplazar ==== Para reemplazar todas las apariciones de ''foo'' y sustituirlas por ''bar'': :%s/foo/bar/g Si queremos que Vim solicite confirmación antes de hacer el cambio, añadimos ''c'': :%s/foo/bar/gc Si queremos que ignore mayúsculas y minúsculas (es decir, que pueda sustituirse tanto Foo, como foo, como fOO..), añadimos ''i'': :%s/foo/bar/gi Si queremos que la sustitución se haga solo por la palabra entera y no si empieza, contiene o termina en ella: :%s/\/bar/g De esa manera sustituirá ''foo'', pero no ''foobar'' o ''barfoo'' ya que ''foo'' no aparece aislada. Si solo queremos hacer el cambio en la línea actual: :s/foo/bar/g ==== Mostrar valores hexadecimales, ascci y octal de carácter ==== En modo normal: ^ Comando ^ Descripción ^ | ''ga'' | Mostrar valor ascii, hexadecimal y octal del carácter bajo el cursor | | ''g8'' | Mostrar valor ascii, hexadecimal y octal del carácter UTF-8 bajo el cursor | En la línea de estado de Vim (abajo del todo) se mostrará algo como: 65, Hex 41, Octal 101 Donde ''A'' es el caracter bajo el cursor, 65 su valor ASCII, 41 en hexadecimal y 101 en octal. ==== Abrir fichero a partir de la ruta ==== Si un fichero que tenemos abierto contiene un nombre de archivo (con su ruta), Vim lo puede abrir con la secuencia: %%gf%% ===== Navegador de archivos ===== Con Vim se incluye el plugin **netrw**. Si ejecutamos vim pasándole como argumento un directorio, se abrirá netrw mostrándonos la lista de ficheros y directorios contenida en dicho directorio. Si queremos lanzar netwr desde Vim: * '':Explore'': abre ''netrw'' en la ventana actual. * '':Sexplore'': abre ''netrw'' en un panel horizontal * '':Vexplore'': abre ''netrw'' en un panel vertical Para abrir un fichero en una división horizontal también se puede lograr con la abreviatura '':Sex'' Recursos: * [[https://gist.github.com/t-mart/610795fcf7998559ea80|A quick reference for Vim's built-in netrw file selector]] * [[https://blog.stevenocchipinti.com/2016/12/28/using-netrw-instead-of-nerdtree-for-vim/|Using netrw instead of NERDTree for Vim]] Otro plugin que hace una función similar a netrw y que es muy popular es [[https://github.com/preservim/nerdtree|NERDTree]] ===== Plugins ===== Gestor de plugin minimalista: https://github.com/junegunn/vim-plug. Se instala: curl -fLo ~/.vim/autoload/plug.vim --create-dirs \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim Ejemplo de uso en el fichero ''.vimrc'': call plug#begin(expand('~/.vim/plugged')) "***************************************************************************** "" Plug install packages "***************************************************************************** Plug 'tpope/vim-commentary' Plug 'tpope/vim-sleuth' Plug 'scrooloose/nerdtree' Plug 'jiangmiao/auto-pairs' Plug 'vim-airline/vim-airline' Plug 'vim-airline/vim-airline-themes' Plug 'Yggdroot/indentLine' Plug 'junegunn/fzf', { 'do': { -> fzf#install() } } Plug 'junegunn/fzf.vim' Plug 'mattn/emmet-vim' Plug 'ervandew/supertab' Plug 'justinmk/vim-sneak' call plug#end() ==== commentary.vim ==== * [[https://github.com/tpope/vim-commentary]] Permite comentar o descomentar ''gc'' (des)comenta una selección ==== The NERDTree ==== * [[https://github.com/preservim/nerdtree]] Explorador de archivos ==== Auto Pairs ==== * [[https://github.com/jiangmiao/auto-pairs]] Inserta o elimina comillas, paréntesis o corchetes a pares. ==== Vim-airline ==== * [[https://github.com/vim-airline/vim-airline]] Mejoras visuales en la barra de estado de Vim. ==== Vim-devicons ==== * [[https://github.com/ryanoasis/vim-devicons]] Añade iconos de ficheros a plugins como NERDTree ==== indentLine ==== * [[https://github.com/Yggdroot/indentLine]] Muestra líneas verticales en cada nivel de sangrado ==== fzf ==== * [[https://github.com/junegunn/fzf.vim]] Buscador de ficheros ==== emmet for vim ==== * [[https://github.com/mattn/emmet-vim]] [[https://emmet.io/|Emmet]] para Vim ==== Supertab ==== * [[https://github.com/ervandew/supertab]] Permite usar el tabulador para tareas de autocompletado. ==== sleuth.vim ==== * [[https://github.com/tpope/vim-sleuth]] Ajusta las opciones de sangrado (//indentation//) en base a lo que se encuentra en el fichero que se está editando u otros similares. ==== sneak.vim ==== * [[https://github.com/justinmk/vim-sneak]] Permite buscar en el archivo con solo dos caracteres. ==== MUcomplete ==== * [[https://github.com/lifepillar/vim-mucomplete]] Autocompletado utilizando la tecla Tab ==== DevIcons ==== * [[https://github.com/ryanoasis/vim-devicons]] Añade iconos a los ficheros según su tipo para plugins como NERDTree, vim-airline, CtrlP, powerline, denite, unite, lightline.vim, vim-startify, vimfiler, vim-buffet y flagship. ===== Trucos ===== ==== Recargar el fichero vimrc ==== Si hemos editado el fichero ''.vimrc'' y queremos que Vim lo recargue sin tener que abandonar su edición: :so $MYVIMRC ===== Recursos ===== * [[https://vim.fandom.com/wiki/Vim_Tips_Wiki|Vim Tips Wiki]] * [[https://vim.fandom.com/wiki/Best_Vim_Tips|Best Vim Tips]] * [[https://www.cs.swarthmore.edu/oldhelp/vim/home.html|Vim tips and tricks]] * [[https://www.youtube.com/watch?v=a6Q8Na575qc|Lecture 3: Editors (vim) (2020)]] (YouTube) * [[https://www.youtube.com/watch?v=DogKdiRx7ls|How to setup your Vim RC (2021)]] (YouTube) * [[https://missing.csail.mit.edu/2020/editors/|Editors (Vim)]] (The missing semester of your education) * [[https://dougblack.io/words/a-good-vimrc.html|A Good Vimrc]] * [[https://vim-bootstrap.com/|Generador de configuración de Vim y NeoVim]] * [[https://www.reddit.com/user/-romainl-|Repuestas del usuario romainl del subredit sobre Vim]] * [[https://www.vimgolf.com/|VimGolf]]: desafíos para hacer con Vim en el menor número de pulsaciones. * [[https://vimcolorschemes.com/|Vim color schemes]] * [[https://github.com/tpope/|Repositorio de plugins para Vim de Tim Pope]] * [[https://github.com/trending/vim-script|Plugins de Vim populares en GitHub]]