Configurar VIM como VS Code
Nos dirigimos a la página principal de vim, simpre tratar de instalar la ultima version:
#desde git en la terminal
git clone https://github.com/vim/vim.git
cd vim/src
make
#desde paquete de ubuntu
sudo apt update
sudo apt -y install vim
vim
Descargamos el paquete de instalación según el sistema que estes utilizando. Y desde la terminal ejecutar los siguientes comandos en mi caso mi encuentro en Ubuntu:
#Descargar nvim-linux64.deb
#Instalar el paquete usanso
sudo apt install ./nvim-linux64.deb
#corremos
nvim
-
Salir de vim o neovim
La manera de poder salir es de la siguiente manera:
#combinaion de teclas - 2 veces tecla esc - : dos puntos y la letra q **:q**
-
Los modos
Vim y neovim trabajan con modos, son como capas que van encontrarse encima del teclado por ejemplo: cuando nosotros tenemos presionado la tecla SHIFT + letra y presionamos cualquier letra esta se convierte en letra mayúscula.
Dependiendo en el modo que nos encontremos vim va poder navegar atraves del texto, vamos a poder insertar texto, tambien poder seleccionar texto que se encuentre el foco del editor y tambien poder ingresar comandos dentro de una interfaz que tiene línea de comandos. Ejemplo: al presionar la tecla SHIFT + 1 = ! el signo de exclamación.
A medida que medida que vamos avanzando veremos con profunfidad cada uno de los modos que se encuentran dentro de vim.
Utizaremos un archivo de referencia index.js
Abriremos el archivo con la siguiente sintaxis:
#en la terminal con vim o nvim
nvim indes.js
Para los movimientos son las siguientes teclas:
- l hacia el lado derecho
- h hacia el lado izquierdo
- j hacia abajo
- k hacia arriba
- w nos podemos mover mas rapido hacia adelante, lo que hace es llevar el cursor al comienzo de la palabra que sigue o del objeto de texto siguiente. A los parentensis los detecta como otro objeto de texto.
- b nos vemos hacia atras, llevandonos tambien al inicio de cada objeto de texto.
- e desplazar al final de la palabra.
Con estas 7 teclas podemos desplazarnos a lo largo de todo el texto.
- Para poder ingresar texto presionando la tecla i cambiando de modo insert posicionandonos antes del cursor donde se encuentre ubicado, para poder editar o añadir una cadena de caracteres al archivo. Y cuando queramos salir presionamos la tecla esc dos veces.
- Otra forma de insertar texto es con la tecla a el cual nos va dejar despues donde se encontrara el cursor.
- Si queremos editar el final de la linea solamente presionamos la A mayuscula shift + a
- Cuando no estamos insertando texto nosotros nos encontramos en el modo normal.
Eliminar texto dentro de nuestro editor de vim para eso debemos estar en el modo normal nos posicionamos en los caracteres que queremos eliminar
- Utilizando la tecla x caracter por caracter.
Guardar los cambios realizados en el editor para eso debemos asegurarnos estar en el modo normal:
- Presionando dos veces esc.
- Presinamos dos puntos con la combinacion de teclas shift + .
- Escribimos la tecla w y enter enter y los cambios habran sios guardados correctamente. Para verificarlos en la parte inferior de nuestro editor un pequeño mensaje.
- Otra manera de guardar lo editado es con : y escrinimos wq lo que hara es guardar el archivo y salir del editor de texto.
Primero de utilizaremos la herramienta de ayuda utilizando las teclas:
- gd conjuntamente nos ayuda a encontrar la definicion de la palabra donde se encuentra el cursor, en este caso de una funcion llamado ayuda que se encuentra en el archivo helper.js.
- Si queremos ir al arvicho directamente presionamos las teclas gf ubicando el cursor encima del texto del archivo al que queremos navegar, antes de todo guardar los cambios realizados.
Algo muy importante son los buffers cada vez que nosotros empezamos a navegar entre archivos o tambien entre definiciones nuestra navegación se empezara a apilar ('quiere decir que inicialmente estabamos en nivel cero en el archivod de index.js y luego de eso navegamos al archivo de helper.js').
- Si nos queremos devolver en este historial presionamos las teclas control + o, creando un indice de navegación entre los archivos y las definiciones haciendo un movimiento hacia atras.
- Para movernos hacia adelante presionando control + i
Ahora vamos haber son distintos comandos para poder eliminar texto en nuestro editor, antes de empezar a eliminar algo debemos estar en modo normal.
- Teclas a presionar son dw para poder eliminar texto un palabra completa.
- El comando para deshacer presionando la tecla u del ingles undo.
- Si queremos rehacer nuestros cambios presionamos la combinación de control + r de redos.
- Para poder eliminar el texto de una linea usamos control + $ borrara todo la linea según donde se encuentre el cursor dejando la linea completamente vacia.
Como podemos combinar operadores con movimientos empezaremos con el operador de eliminar.
No solamente podemos combinar con el simbolo de $ si no que tambien podemos combinarlos con los operadores de movimiento.
-
Con dw eliminar hacia adelante, de, db eliminar hacia atras. Todos las combinaciones de movimientos con operadores van hacer validas.
-
Tambien podemos utilizar números, podemos hacer es multiplicar esta cantidad de operaciones con movimientos. De esta forma d4w eliminara la cantidad de palabras establecida.
-
Para movimientos 4w, 3e, 3b para podernos mover.
Aprender a eliminar y tambien a mantener lo que se elimino dentro del clean board es lo que mantiene lo que va hacer pegado despues en otro lado.
Cuando eliminemos algo esto simpre va quedar en el clean board.
- Para eliminar una linea completa presionamos la tecla dd dos veces.
- Para pegar esa linea simplemente presionamos la tecla p direccionado hacia abajo. Ubicando el cursor donde queremos pegar.
- Si queremos direccionar hacia arriba es con la letra P mayuscula.
Dentro de vim no existe eliminar, lo unico que existe es cortar.
-
Eliminar un caracter con x, al pegar solo se hara lo ultimo que fue recortado.
-
Podemos tambien encadenar con numero por ejemplo: cuando queramos recortar 2 lineas de la siguiente manera 2dd.
Veremos el comando para reemplazar, puede ser el comando menos utilizado.
- Solamente posicionar sobre el cursor sobre el caracter que queremos reemplzar con la tecla r, nos ahorramos algun tipeado.
Nos pasamos el operador de cambio que es uno de lo mas utiles. Al querer cambiar una palabra tenemos dos opciones:
- La forma fome te posicionas al inicio de la palabra o donde queramos el cambio con el cursor y solo presionamos cw par ael cierra solo presionamos esc.
- Cambia la palabra interna pero el objeto de la palabra, teniendo el curso en cualquier sitio dentro de la palabra con ciw, comando muy util al querer reemplazar una palabra.
Ahora aprenderemos a saltar dentro del archivo :
- Para ver en que linea se encuentran es control + g.
- Comando que nos lleva al comienzo del archivo con gg.
- Al final del archivo simplemete G mayuscula. -Movernos a una linea en especifico ingresando el número 16 + G mayuscula.
Si queremos buscar desde el cursor:
- Presionamos / y escribimos la palabra que queramos buscar apareciendo todas las concidencias, desde la posicion del cursor hacia adelante.
- Si queremos hacer hacia atras con signo de pregunta ? y nuestra palabra.
- Movernos entre las ocurrencias con la letra n hacia adelante y con la N mayuscula hacia atras.
Como podemos hacer un salto en tre los parentesis correspondiente:
- Usando el teclado de % porcentaje dependiendo del teclado que tengamos, generalmente en cualquier parentesis que tengamos como (), {}, []:.
Como podemos reemplazar texto que se encuentra en un linea:
- Para ir al comienzo de una linea presionamos 0.
- Al final de la linea $.
- El comando de sustituir desde el modo de normal, presionando :/palabra_susti/nueva_palabra por ejemplo dentro de nuestro archivo de index.js con la palabra pares por iguales, ":s/pares/iguales".
- Si queremos reemplazar todas las mismas ocurrencia de una linea la misma combinacion añadiendo :s/the/de/g reemplazando absolutamente todas, el cual solo funciona donde solamente se encuentra el cursor.
- Si queremos que nos reemplazen todas las ocurrencias de un archivo en modo de comando :%s/numeros/unoAlCinco/gc reemplazara una por una preguntando si deseeo hacer el cambio, dandome una serie de alternativas en la parte de abajo del editor.
- Para abrir una nueva linea independiente donde se encuentre el cursor presionamos la letra o se abrira la parte de abajo, para hacerlo hacia arriba es con la O mayuscula dejandonos en el modo de insertar.
- Otra forma de reemplazar con la R mayuscula manteniendonos en el modo reemplazar permitiendo el cursor avanzar.
Cuando queremos copiar algo debemos pasar al modo visual presionando v moviendonos al modo visual.
- Dentro del modo podemos mover el cursor que asu paso ira seleccionando lo que queramos copiar, al presionar y i griega nos saca del modo visual y posicionandonos en una linea nueva presionamos la letra p o P mayuscula nos copiara lo antes seleccionado dejando el cursor al inicio o final.
Realizar algunas configuraciones a nuestro editor de texto, para poder agregarles un par de funcionalidades mas que ya son nativas de vim y de neovim, un espacio de entorno de desarrollo.
- Primero debemos buscar nuestro archivo de init.vim que se encuentra en la siguiente ruta:
cd ~/.config/nvim/init.vim
- Dentro del archivo de init.vim debe tener las siguientes lineas.
set runtimepath^=~/.vim runtimepath+=~/.vim/after
let &packpath=&runtimepath
source ~/.config/.vimrc
Esta lineas lo que hacen es que nos permiten el mismo el mismo archivo de configuración para vim y nvim creando un enlace simbolico.
-
Nos pasamos a editar el archivo de .vimrc que se encuentra en ~/.config/nvim/.vimrc
-
Para ver los cambios solamente salimos y volvemos a ingresar.
archivo .vimrc
- set number => lo que hace es setear numeros al lado izquierdo del editor.
- set mouse=a => nos permite interectuar con el mouse dentro de vim.
- set numberwidth=1 => el ancho de los numeros.
- set clipboard=unnamed => para poder copiar dentro del editor con el mouse.
- syntax enable => para habilitar la syntax.
- set showcmd => para mostrar los comandos que estoy ejecutando.
- set ruler => que nos muestre la posicion.
- set encoding=utf-8 => codificación de archivos.
- set showmatch => al posicionarse en un parentesis muestra la ubicacion del parentesis que lo esta cerrando.
- set sw=2 => para poder identar con dos espacios.
- set relativenumber => dependiendo de donde se encuentre el cursor la linea donde estamos sera un 0 muy util para movernos entre lineas.
- set laststatus=2 => la barra de la parte inferior siempre sea visible.
- set noshowmode => para no ver en el modo que nos encontramos.
Instalaremos extensiones para poder extender aun mas la funcionalidad que tiene nuestro editor de texto.
Necesitaremos un manejador de plugins en este caso vamos instalar Plug Vim
#para neovim
#dentro de la terminal copiar esta url
sh -c 'curl -fLo "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim'
Veremos como podemos instalar temas nuevos el que usaremos como ejemplo sera gruvbox.
Para poder instalar plugins debemos utilizar nuestro manejador ya previamente instalado Plug Vim, dentro de nuestro archivo .vimrc realizamos la siguiente configuracion:
.config/.vim
#llamamos a plug
call plug#begin('~/.vim/plugged') => hacemos el llamado del manejador y indicar la ruta donde queremos que se instalen nuestro plugins.
#instalamos nuestro tema
Plug 'morhetz/gruvbox' => Usando la sintaxis manejador y nombre del paquete.
#cerramos el llamado de plugins
call plug#end()
Cerramos guardando los cambios, salimos y volvemos a ingresar.
Ejecutamos el comando de:
:PlugInstall
#se instalaran los plugins mostrandonos el mensaje de instalación
- Finishing ... Done!
- gruvbox: Resolviendo deltas: 100% (13/13), listo.
Luege cargar los plugins debemos configurarlos:
#configuracion de plugin
colorscheme gruvbox
let g:gruvbox_contrast_dark = "hard"
Salimos, al ingresar los cambios se habran cargado.
Es un plugin que nos permite navegar a cualquier parte de nuestro codigo por los menos de lo que estamos mirando, poder hacer saltos desde donde se encuentra el cursor a la parte que nosotros virtualmente queramos.
- Movernos mucho mas rapido dentro del archivo, su instalación:
#dentro de nuestro archivo de .vimrc
" IDE
Plug 'easymotion/vim-easymotion'
Lo que si que tenemos que hacer es activar una tecla o un atajo de teclado que se active cuando nosotros llamemos a easymotion.
- Activar una tecla que va funcionar de "tecla lider", que cada vez que presionemos esa tecla seguido de otra combinación de teclas va ejecutar los comandos o atajos que nosotros le endiquemos:
#utilizaremos como tecla lider el espacio " "
let mapleader=" "
#manera de utilizarlo es
<Leader>s
#nos pedira dos caracteres las ingresamos
#se seleccionaran las concidencias cada una con una letra, solamente ingresamos la letra a donde queremos movernos.
#configuracion del atajo que cada vez que utilizanos la combinacion de espacio + s, estamos haciendo el llamado del plugin easymotion.
nmap <Leader>s <Plug>(easymotion-s2)
Como ver un arbol de archivos como cualquier editor de texto como puede ser visual studio code, sublime text dentro de neovim.
Plugin muy necesario a la hora de trabajar.
- Instalación del plugin
#dentro de nuestro archivo de .vimrc
Plug 'scrooloose/nerdtree'
#config de ejecucion
nmap <Leader>nt :NERDTreeFind<CR>
#Para ingresar a las opciones de nerdtree presionamos
m
# al seleccionar un archivo se cierre nerdtree
let NERDTreeQuitOnOpen=1
Instalaremos un plugin que nos permita navegar solamente con el teclado y cuando tengamos mas de una instancia abierta.
- Para abir una nueva instancia presionamos la letra s
- Inslación del plugin
#dentro de nuestro archivo .vimrc
Plug 'christoomey/vim-tmux-navigator'
- Para poder movernos mantenemos presionado la tecla control y con las letras h, j, k, l podemos movernos.
Vamos aprender hacer atajos pero no solamente de plugins, si no tambien de instrucciones que ejecutamos constantemente.
- Atajos para dos comandos en particular.
#config archivo de .vimrc
#para guardar
nmap <Leader>w :w<CR>
#para salir
nmap <Leader>q :q<CR>