Personalizar Neovim es una excelente manera de mejorar la productividad y la experiencia al programar. A continuación, te proporcionaré una guía para personalizar Neovim para personas que se están iniciando en este tema.
Cabe destacar que utilizaremos un único archivo para configurar Neovim, el cual es el init.vim
. Pero existen otras formas un poco más complejas, como personalizarlo con Lua, el cual es un lenguaje de programación.
1. Instalar un administrador de plugins
Antes de comenzar, asegúrate de tener Neovim instalado en tu computadora. Puedes descargarlo desde el repositorio oficial de Neovim. Nosotros usaremos a partir de la versión v0.8.0
.
Para personalizar Neovim, necesitarás un administrador de plugins. Un administrador de plugins te permite instalar y administrar plugins de forma sencilla. Hay varios administradores de plugins disponibles, pero el más popular es vim-plug.
Para instalar vim-plug, abre una terminal y ejecuta el siguiente comando:
curl -fLo ~/.local/share/nvim/site/autoload/plug.vim --create-dirs \\
<https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim>
2. Configurar el archivo init.vim
El archivo init.vim
es donde configurarás Neovim. Primero, vamos a crear el archivo para personalizar nvim. Si usas un OS Unix la ruta es /home/.config/nvim/init.vim
. Si tu OS es Windows, la ruta es User/NameUser/AppData/Local/nvim
En este archivo se estara organizado en tres secciones:
- Configuración principal: aquí se configuran algunas opciones importantes como el soporte de resaltado de sintaxis, el soporte de la opción de autocompletado y la configuración de los colores.
- Configuración de complementos: aquí se definen y se cargan todos los complementos que se emplearán en Neovim.
- Configuración personalizada: aquí puedes personalizar Neovim añadiendo opciones únicas y atajos de teclado que simplifiquen tu flujo de trabajo. Los mapeos de teclas se emplean para definir atajos para hacer tareas específicas en Neovim, como guardar archivos, buscar y reemplazar, abrir pestañas y cargar de nuevo el archivo init.vim.
2.1 Fuente
Personalmente recomiendo Hack Nerd Font y Fira Code, pero puedes explorar muchas más en la página oficial de NerdFonts. Solo asegúrate de elegir una Nerd Font para aprovechar los íconos en Neovim.
Una vez instales la fuente, procura que la terminal que usas, utilice la fuente que descargaste.
Ejemplo en Windows
Ejemplo en Linux
2.2 Configuración
1. Habilitar el número de línea
El número de línea es útil cuando necesitas referirte a una línea específica en tu archivo. Puedes habilitar los números de línea usando el siguiente código:
set number
2. Establecer el espaciado
El espaciado adecuado ayuda a que el código sea más legible. Puedes establecer el espaciado en Neovim con el siguiente código:
set tabstop=4
set shiftwidth=4
set expandtab
3. Habilitar la indentación automática
La indentación automática es útil porque te permite identar tu código de forma rápida y sencilla. Puedes habilitar la indentación automática usando el siguiente código: filetype indent on
4. Temas
Un tema define la apariencia de Neovim. Puedes elegir entre una amplia variedad de temas, y algunos de los más populares incluyen gruvbox, dracula y nord.
Puedes instalar y establecer un tema usando vim-plug con el siguiente código:
syntax enable
set background=dark
colorscheme gruvbox
call plug#begin()
Plug 'morhetz/gruvbox'
call plug#end()
5. Instalar plugins
Una vez que hayas configurado tu archivo init.vim, puedes instalar plugins usando vim-plug. Puedes buscar plugins en sitios como vimawesome y agregarlos a tu archivo init.vim utilizando Plug 'autor/nombre_del_plugin'.
filetype plugin indent on
Una vez que hayas agregado tus plugins, puedes instalarlos y actualizarlos usando los siguientes comandos en Neovim:
:PlugInstall
:PlugUpdate
3. Algunos plugins
Coc y Treesitter: es un plugin que proporciona funciones avanzadas de autocompletado y corrección de código para varios lenguajes de programación. Treesitter es un plugin que proporciona análisis sintáctico avanzado para una gran cantidad de lenguajes de programación.
Para instalar Coc, abre Neovim y escribe :CocInstall
. A continuación, escribe los nombres de los plugins que deseas instalar, como:
- coc-emmet
- coc-html-css-support
- coc-pairs
- coc-json
- coc-tsserver
- coc-prettier
- @yaegassy/coc-volar
- @yaegassy/coc-volar-tools
- @yaegassy/coc-tailwindcss3
Para instalar Treesitter, escribe :TSInstal
l en Neovim, y luego escribe los nombres de los plugins que deseas instalar, como:
- astro
- java
- javascript
- json
- markdown
- php
Algunas de las opciones y los plugin más notables que se configuran son:
Temas de colores para neovim:
- gruvbox
- onedark.vim
- palenight.vim
- nord-vim
- ayu-vim
Plugin para mejorar la apariencia de la barra de estado de neovim:
- vim-airline
- barbar.nvim:
Plugin para explorar y navegar por los archivos en un árbol de directorios:
- nerdtree
- nerdtree-git-plugin
Plugin para mostrar iconos de archivo en la barra lateral de NERDTree:
- vim-devicons
- nvim-web-devicons:
Otro Pluggins usados son:
1. vim-closetag: para autocompletar etiquetas HTML y XML.
2. vim-surround: para agregar y cambiar los paréntesis, corchetes, llaves y comillas que rodean el texto seleccionado.
3. nvim-autopairs: para insertar pares de paréntesis, corchetes, llaves y comillas automáticamente mientras se escribe código.
4. vim-prettier: para formatear automáticamente el código JavaScript, CSS, HTML y otros lenguajes.
5. coc.nvim: plugin para autocompletar y proporcionar características avanzadas de edición de código para varios lenguajes de programación a través del servidor LSP.
6. nvim-treesitter: para un resaltado de sintaxis y análisis de código más avanzados, basado en árboles sintácticos, para muchos lenguajes de programación.
7. lilydjwg/colorizer: para resaltar los códigos de color en el archivo.
8. rainbow_parentheses.vim: para resaltar los paréntesis y corchetes coincidentes.
9. telescope.nvim: para buscar palabras claves.
4. Comandos personalizados
Puedes crear comandos personalizados para diversas acciones. Por ejemplo, si deseas guardar tus cambios como en Windows (Ctrl + S)
, puedes hacerlo de la siguiente manera:
- Primero, define un comando para la 'tecla líder' (leader key), que es la tecla principal para ejecutar comandos. En mi caso, utilizo la barra espaciadora (space).
- Luego, utiliza el comando de Vim nmap COMANDO_VIM.
- Por ejemplo, si deseas que Ctrl + S guarde tu trabajo, el comando sería:
nmap <C-s> :w<CR>
, donde C representa la tecla Ctrl, s es la tecla S, y :w es el comando de Vim para guardar el archivo. Al final del post encontrarás más ejemplos.
let mapleader=" "
" SAVE
nmap <C-s> :w<CR>
nmap <C-q> :q<CR>
" SPLIT S
nmap <Leader>s :vsp<CR>
5. Ejemplo de configuración
Para tener el tema transparente, la terminal debe tener el tema transparente. En mi configuración ya viene por defecto en tema transparente en Neovim.
¿Cómo quedaría todo el archivo?
Puedes ver toda la configuración en mi repositorio de GitHub: dotfiles
" ---------------------
" 1. MAIN CONFIGURATION
" ---------------------
filetype plugin indent on
filetype plugin on
set termguicolors
set number
set mouse=a
set numberwidth=1
set clipboard=unnamed
set showcmd
set ruler
set cursorline
set encoding=utf8
set showmatch
set termguicolors
set sw=2
set wrap linebreak
set hlsearch
set incsearch
set ignorecase
set smartcase
set laststatus=2
set noshowmode
" ------------
" 2. VIM-PLUG
" ------------
call plug#begin()
" THEME
Plug 'morhetz/gruvbox'
Plug 'joshdick/onedark.vim'
Plug 'drewtempelmeyer/palenight.vim'
Plug 'arcticicestudio/nord-vim'
Plug 'ayu-theme/ayu-vim'
Plug 'NLKNguyen/papercolor-theme'
" TABS
Plug 'vim-airline/vim-airline'
Plug 'romgrk/barbar.nvim'
" TREE
Plug 'scrooloose/nerdtree'
Plug 'Xuyuanp/nerdtree-git-plugin'
" ICONS
Plug 'ryanoasis/vim-devicons'
Plug 'kyazdani42/nvim-web-devicons'
" TYPING
Plug 'alvan/vim-closetag'
Plug 'tpope/vim-surround'
Plug 'windwp/nvim-autopairs'
" PRETTIER
Plug 'prettier/vim-prettier', { 'do': 'yarn install' }
" AUTOCOMPLETE
Plug 'neoclide/coc.nvim', {'branch': 'release'}
" SYNTAX
Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'}
" COLORS
Plug 'lilydjwg/colorizer'
Plug 'junegunn/rainbow_parentheses.vim'
" TELESCOPE
Plug 'nvim-lua/plenary.nvim'
Plug 'nvim-telescope/telescope.nvim', { 'tag': '0.1.0' }
" GIT
Plug 'APZelos/blamer.nvim'
" GITHUBCOPILOT
Plug 'github/copilot.vim'
" IDE
Plug 'numToStr/Comment.nvim'
Plug 'easymotion/vim-easymotion'
Plug 'mhinz/vim-signify'
Plug 'yggdroot/indentline'
Plug 'lukas-reineke/indent-blankline.nvim'
" LSP AND MASON
Plug 'williamboman/mason.nvim'
Plug 'williamboman/mason-lspconfig.nvim'
Plug 'neovim/nvim-lspconfig'
call plug#end()
" -----------------
" 3. CONFIGURATION
" -----------------
" AYU THEME
" let ayucolor="dark"
" MASON VIM
lua require('mason').setup()
lua require('mason-lspconfig').setup()
" GIT BLAME
let g:blamer_enabled = 1
" NERDTree
let NERDTreeQuitOnOpen=1
let g:NERDTreeGitStatusIndicatorMapCustom = {
\ 'Modified' :'✹',
\ 'Staged' :'✚',
\ 'Untracked' :'✭',
\ 'Renamed' :'➜',
\ 'Unmerged' :'═',
\ 'Deleted' :'✖',
\ 'Dirty' :'✗',
\ 'Ignored' :'☒',
\ 'Clean' :'✔︎',
\ 'Unknown' :'?',
\ }
let g:NERDTreeGitStatusUseNerdFonts = 1
let NERDTreeMinimalUI = 1
let NERDTreeDirArrows = 1
let NERDTreeShowHidden = 1
" AIRLINE
let g:airline#extensions#tabline#enabled = 0
let g:airline_section_c_only_filename = 1
let g:airline_section_z = ' %{strftime("%-I:%M %p")}'
let g:airline_section_warning = ''
let g:airline#extensions#tabline#formatter = 'unique_tail'
let g:airline_theme = "onedark"
" PRETTIER
let g:prettier#quickfix_enabled = 0
autocmd TextChanged,InsertLeave *.js,*.jsx,*.mjs,*.ts,*.tsx,*.css,*.less,*.scss,*.json,*.graphql,*.md,*.vue,*.svelte,*.yaml,*.html PrettierAsync
"------------------
" 4. CUSTOM MAPING
"-----------------
let mapleader=" "
" SAVE
nmap <C-s> :w<CR>
nmap <C-q> :q<CR>
" ALL TEXT, PASTE, COPY, RENDO, CUT
nmap <C-v> "+P
nmap <C-a> ggVG
nmap <C-z> :undo<CR>
nmap <C-y> :redo<CR>
nmap <C-x> dd
" SEARCH AND REPLACE
nmap <C-r> :%s///gc<Left><Left>
nmap <C-f> /
" SPLIT S
nmap <Leader>s :vsp<CR>
" INIT.VIM
nmap <leader>r :so ~/.config/nvim/init.vim<CR>
" BUFFERS
nmap <Leader>qq :NERDTreeToggle<CR>
nmap \\ <leader>qq
nmap <Tab> :bnext<CR>
nmap <Leader>t :enew<CR>
nmap <Leader>oo :Buffers<CR>
nnoremap <Leader>q :bdelete<CR>
" SPLIT
nnoremap <Leader>> 10<C-w>>
nnoremap <Leader>< 10<C-w><
" SEARCH FILES
nnoremap <leader>ff <cmd>Telescope find_files<cr>
nnoremap <leader>fg <cmd>Telescope live_grep<cr>
nnoremap <leader>fb <cmd>Telescope buffers<cr>
nnoremap <leader>fh <cmd>Telescope help_tags<cr>
nnoremap <leader>fc <cmd>Telescope colorscheme<cr>
" SCROOLLING
nnoremap <silent> <right> :vertical resize +5<CR>
nnoremap <silent> <left> :vertical resize -5<CR>
nnoremap <silent> <up> :resize +5<CR>
nnoremap <silent> <down> :resize -5<CR>
nmap <Leader>es <Plug>(easymotion-s2)
" DEFINITION.
nmap <silent> gd <Plug>(coc-definition)
nmap <silent> gy <Plug>(coc-type-definition)
nmap <silent> gi <Plug>(coc-implementation)
nmap <silent> gr <Plug>(coc-references)
" PRETTIER
nmap <Leader>p :Prettier<CR>
" THEME TRANSPARENT
function! TransparentBackground()
highlight Normal guibg=NONE ctermbg=NONE
highlight LineNr guibg=NONE ctermbg=NONE
set fillchars+=vert:\│
highlight WinSeparator gui=NONE guibg=NONE guifg=#444444 cterm=NONE ctermbg=NONE ctermfg=gray
highlight VertSplit gui=NONE guibg=NONE guifg=#444444 cterm=NONE ctermbg=NONE ctermfg=gray
endfunction
" Para desactivar el tema TransparentBackground solo hay que cambiarlo por set background dark o ligth
augroup MyColors
autocmd!
autocmd ColorScheme dracula call DraculaTweaks()
autocmd ColorScheme * call TransparentBackground()
augroup END
color onedark
syntax on
Conclusión
Personalizar Neovim es una excelente manera de mejorar la productividad y la experiencia al programar. Con estas configuraciones básicas, podrás comenzar a personalizar Neovim según tus necesidades y preferencias.
¡Ahora es tu turno! Personaliza Neovim y comparte en los comentarios cómo mejoró tu flujo de trabajo.
¡Feliz programación!
Top comments (0)