8 min lectura
Tutoriales

Setup de Neovim con config personalizada

Avatar

Lucas Alonso

Desarrollador Web Full-Stack

Setup de Neovim con config personalizada

Setup de Neovim con config personalizada

Una configuración de Neovim enfocada en productividad y desarrollo moderno. Usa lazy.nvim como gestor de plugins, Mason para instalar language servers automáticamente y la API nativa de Neovim 0.11 para LSP. Una vez instalada tendrás un entorno completo listo para trabajar con TypeScript, PHP, Python, Go, Vue, y más.

El repositorio está en github.com/lalonso-dev/nvim-config.


Requisitos previos

Antes de clonar el repo asegúrate de tener instaladas estas dependencias. Todas son necesarias para que los plugins y language servers funcionen correctamente.

DependenciaVersión mínimaPara qué se usa
Neovim>= 0.11El editor
Node.js>= 18LSP y prettier
Git>= 2.0Plugin manager
Go>= 1.22gopls (LSP de Go)
Python 3>= 3.10pyright (LSP de Python)
ripgrepcualquieraTelescope live grep
fdcualquieraTelescope file finder
Nerd FontcualquieraIconos en la UI

Instalación por sistema operativo

macOS

Con Homebrew en un solo comando:

brew install neovim node go python3 ripgrep fd git

Ubuntu / Debian

Neovim necesita el PPA para tener una versión reciente, ya que los repos oficiales de Ubuntu suelen tener versiones muy antiguas:

# Neovim desde PPA
sudo add-apt-repository ppa:neovim-ppa/unstable
sudo apt update
sudo apt install neovim

# Resto de dependencias
sudo apt install nodejs npm golang-go python3 python3-pip ripgrep fd-find git

# En Ubuntu fd se llama fdfind, crear el alias
sudo ln -sf $(which fdfind) /usr/local/bin/fd

Arch Linux

sudo pacman -S neovim nodejs npm go python ripgrep fd git

Instalar la configuración

Tienes dos opciones: el script automático o hacerlo manualmente paso a paso.

Opción A — Script automático (recomendado)

git clone https://github.com/lalonso-dev/nvim-config.git ~/nvim-config
cd ~/nvim-config
chmod +x install.sh && ./install.sh

El script hace todo por ti: crea los directorios, genera los symlinks y lanza Neovim para que lazy.nvim instale los plugins.

Opción B — Manual

1. Clonar el repositorio:

git clone https://github.com/lalonso-dev/nvim-config.git ~/nvim-config

2. Crear los symlinks a ~/.config/nvim:

mkdir -p ~/.config/nvim
ln -sf ~/nvim-config/init.lua ~/.config/nvim/init.lua
ln -sf ~/nvim-config/lua ~/.config/nvim/lua
ln -sf ~/nvim-config/snippets ~/.config/nvim/snippets

3. Instalar paquetes globales de npm:

Necesarios para el formateo de JS/TS, HTML, CSS y Twig:

npm install -g prettier @zackad/prettier-plugin-twig

4. Abrir Neovim:

nvim

En la primera apertura ocurren tres cosas automáticamente:

  • lazy.nvim se instala y descarga todos los plugins
  • Mason instala los language servers (pyright, ts_ls, gopls, intelephense, etc.)
  • Treesitter instala los parsers de syntax highlighting

Espera a que termine todo antes de empezar a editar. Puedes ver el progreso con :Lazy y :Mason.


Qué incluye la configuración

Estructura de archivos

nvim-config/
├── init.lua                 # Entry point
├── install.sh               # Script de instalación
├── lua/
│   ├── config/
│   │   ├── options.lua      # Números, tabs, clipboard, etc.
│   │   ├── keymaps.lua      # Todos los keybindings
│   │   ├── autocmds.lua     # Autocommands
│   │   └── lazy.lua         # Bootstrap del plugin manager
│   └── plugins/
│       ├── colorscheme.lua  # One Dark Pro
│       ├── treesitter.lua   # Syntax highlighting
│       ├── lsp.lua          # Language servers
│       ├── cmp.lua          # Autocompletado
│       ├── conform.lua      # Formateo
│       ├── lint.lua         # Linting
│       ├── neo-tree.lua     # File explorer
│       ├── telescope.lua    # Fuzzy finder
│       ├── lualine.lua      # Status bar
│       ├── gitsigns.lua     # Git diff en el gutter
│       ├── git.lua          # vim-fugitive
│       ├── terminal.lua     # Terminal integrada
│       ├── which-key.lua    # Hints de keybindings
│       ├── trouble.lua      # Panel de diagnósticos
│       ├── flash.lua        # Quick motion
│       ├── editor.lua       # Comment, autopairs, surround, twig.vim
│       ├── ui.lua           # Noice, notify, devicons, colorizer
│       └── tmux.lua         # Integración con Tmux
└── snippets/
    ├── typescript.lua       # React, hooks, Redux
    ├── javascript.lua       # Console, arrow functions
    ├── python.lua           # Classes, functions, tests
    ├── django.lua           # Models, views, forms
    ├── htmldjango.lua       # Django template tags
    └── twig.lua             # Craft CMS / Twig templates

Language servers incluidos

Mason los instala automáticamente al abrir Neovim por primera vez:

ServidorLenguaje
pyrightPython
ts_lsTypeScript / JavaScript
vue_lsVue (Volar hybrid mode)
intelephensePHP
goplsGo
csslsCSS
htmlHTML
jsonlsJSON
emmet_lsEmmet
lua_lsLua

Formateo y linting

LenguajeFormateador
JS / TS / Vue / CSS / HTMLprettier
Twigprettier + @zackad/prettier-plugin-twig
Pythonautopep8
Gogofmt
Luastylua
Django HTMLdjhtml

Keybindings principales

La leader key es Espacio.

AtajoAcción
<Space>eToggle file explorer
<Tab>Siguiente buffer
<S-Tab>Buffer anterior
<Space>xCerrar buffer actual
<C-h> / <C-l>Moverse entre ventanas
vvSplit vertical
ccSplit horizontal

Telescope (fuzzy finder)

AtajoAcción
<Space>fBuscar archivos
<Space>agBuscar texto en el proyecto
<Space>obBuffers abiertos
<Space>frArchivos recientes
<Space>fgGit status
<Space>fdDiagnósticos

LSP

AtajoAcción
gdIr a definición
grVer referencias
KHover info
<Space>rnRenombrar símbolo
<Space>caCode actions
[d / ]dDiagnóstico anterior / siguiente
<Space>dDiagnóstico flotante

Edición

AtajoAcción
<Space>pFormatear archivo
<C-j> / <C-k>Mover línea arriba / abajo
iqEscape desde insert mode
<C-t>Toggle terminal
<Space>xxPanel de diagnósticos (Trouble)
<Space>sFlash jump

Tips opcionales

Alias para abrir Neovim rápido

Agrega esto a tu ~/.zshrc o ~/.bashrc para abrir Neovim con v y que por defecto abra el directorio actual:

alias v=openNvim
function openNvim {
  if [ $# -eq 0 ]; then
    nvim ./
  else
    nvim $1
  fi
}

Linters opcionales

npm install -g eslint_d           # JS/TS linting rápido
pip install pylint                # Python
npm install -g markdownlint-cli   # Markdown

Formateadores opcionales

pip install autopep8 djhtml       # Python / Django HTML
brew install stylua               # Lua (o: npm install -g stylua)

Cambiar el tema

El tema por defecto es One Dark Pro (el tema de Atom). Para cambiarlo edita lua/plugins/colorscheme.lua. Algunos temas probados y compatibles con esta config:

  • olimorris/onedarkpro.nvim — actual
  • loctvl842/monokai-pro.nvim
  • ellisonleao/gruvbox.nvim

Verificar que todo funciona

Una vez instalado abre un archivo de cualquier lenguaje soportado y verifica:

nvim mi-archivo.ts

Deberías ver syntax highlighting coloreado, autocompletado al escribir, y diagnósticos subrayados en rojo si hay errores. Puedes revisar el estado de los language servers con :LspInfo y los plugins instalados con :Lazy.

Si algo no carga, limpia la caché y vuelve a abrir:

rm -rf ~/.local/share/nvim
nvim

Esto fuerza a lazy.nvim y Mason a reinstalar todo desde cero.

Tags:

  • neovim
  • vim
  • terminal
  • dev-tools
  • lua
Compartir: FacebookXLinkedInWhatsapp

¿Te fue útil este artículo? Puedes apoyar mi trabajo

Posts Relacionados

Custom Anti-spam en Freeform con Craft CMS 4
7 min lectura
Tutoriales

Custom Anti-spam en Freeform con Craft CMS 4

Aprende a crear una capa de anti-spam robusta en Freeform usando el Module por defecto de Craft CMS 4, lista negra de dominios gratuitos, rate limiting por IP y la API gratuita de StopForumSpam.

Leer más

Construyamos algo increíble juntos.