Vim
Vim es el editor de texto universal instalado en todos los sistemas UNIX. Mientras Neovim innova, Vim se centra en la compatibilidad hacia atrás y la estabilidad.
Cuándo Usarlo
- Edición Universal en Servidores y Sistemas: Editar configuraciones del sistema, scripts y código en cualquier servidor Unix/Linux sin instalar software externo.
- Manipulación de Texto Modal: Componer transformaciones de texto con la gramática operador-movimiento (
dap,ci",gUiw). - Automatización de Macros sin Interfaz: Grabar y reproducir operaciones de edición repetitivas en cientos de líneas (
qa,@a). - Edición de Commits y Mezclas de Git: Edición rápida e interactiva para mensajes de commit, rebases interactivos y resolución de conflictos en diferencias.
Inicio Rápido
1. ~/.vimrc Mínimo
syntax on
set number
set relativenumber
set tabstop=2
set shiftwidth=2
set expandtab
set hlsearch
set incsearch
set clipboard=unnamed
let mapleader = " "
nnoremap <leader>w :w<CR>
nnoremap <leader>q :q<CR>
2. Comandos Básicos de Edición
i/a: Modo Insertar (antes / después del cursor)ci": Cambiar dentro de comillas doblesda{: Borrar alrededor de llaves:%s/foo/bar/g: Reemplazar todas las ocurrencias de foo por bar en el archivo.: Repetir la última modificación
Conceptos Fundamentales
Vimrc de Producción Moderno (~/.vimrc)
Configuración de valores predeterminados sensatos, gestor de plugins y navegación de código:
" ~/.vimrc
set nocompatible
filetype plugin indent on
syntax on
" Ajustes generales
set number
set relativenumber
set expandtab
set shiftwidth = 2
set tabstop = 2
set autoindent
set smartindent
set hlsearch
set incsearch
set ignorecase
set smartcase
set hidden
set backspace=indent,eol,start
set updatetime=300
set clipboard=unnamed
" Mapeo de tecla líder
let mapleader = " "
" Navegación rápida entre divisiones
nnoremap <C-h> <C-w>h
nnoremap <C-j> <C-w>j
nnoremap <C-k> <C-w>k
nnoremap <C-l> <C-w>l
" Limpiar resaltado de búsqueda
nnoremap <leader>h :nohlsearch<CR>
Objetos de Texto Esenciales y Gramática
Combinación de operadores (d, c, y, v) con objetos de texto y movimientos:
ci" - Cambiar dentro de comillas dobles ("foo" -> "")
di( - Borrar dentro de paréntesis
yap - Yank (copiar) alrededor del párrafo
gUiw - Convertir palabra interna a MAYÚSCULAS
dt, - Borrar desde el cursor hasta la coma
. - Repetir el último cambio inmediatamente
Grabación y Ejecución de Macros
Automatización de transformaciones repetitivas de datos tabulares:
1. Presiona `qa` para comenzar a grabar la macro en el registro 'a'
2. Realiza los pasos de edición de texto (ej. `0iconst <Esc>A = true;<Esc>j`)
3. Presiona `q` para finalizar la grabación
4. Reproduce la macro en la línea actual: `@a`
5. Reproduce la macro 50 veces en varias líneas: `50@a`
6. Ejecuta la macro en una selección visual: `:'<,'>normal @a`
Patrones Comunes
Grabación y Ejecución Masiva de Macros
Problema: Realizar ediciones repetitivas de varios pasos en múltiples líneas.
Solución: Grabar las pulsaciones de teclas en el registro q.
- Coloca el cursor en la posición inicial deseada.
- Presiona
qqpara comenzar a grabar en el registroq. - Realiza la secuencia de edición (ej.
I" <Esc> A",<Esc> j ^). - Presiona
qpara detener la grabación. - Reproduce con
@q, o ejecuta en 50 líneas:50@q.
Gestión de Plugins con vim-plug
Problema: Instalar y organizar plugins de Vim sin manipulación manual de rutas.
Solución: Usar vim-plug.
call plug#begin('~/.vim/plugged')
Plug 'tpope/vim-sensible'
Plug 'tpope/vim-fugitive'
Plug 'preservim/nerdtree'
call plug#end()
Ejecuta :PlugInstall dentro de Vim para instalarlos.
Mejores Prácticas (2026)
- Haz dominar la navegación modal (
h,j,k,l,w,b,e) y evita usar las teclas de flecha. - Haz aprovechar los Objetos de Texto (
ciw,da(,yi{) para editar bloques de código estructurados con la mínima cantidad de pulsaciones. - Haz usar el comando punto (
.) para repetir transformaciones de texto recientes en líneas similares. - Haz activar
set hiddenpara que los búferes puedan permanecer abiertos en segundo plano sin forzar guardados inmediatos. - No instales cientos de plugins pesados de VimScript heredados; migra a Lua de Neovim si se requiere una experiencia IDE completa.
- No dejes archivos de intercambio (
.swp) persistentes; configuraset noswapfileo establece un directorio de intercambio dedicado. - No uses llamadas externas sincrónicas en
~/.vimrcque causen un retraso notable en el inicio en máquinas remotas.
Solución de Problemas
| Error / Síntoma | Causa | Solución |
|---|---|---|
Fallo al copiar al portapapeles del sistema ("+y sin efecto) | Vim compilado sin soporte +clipboard | Instala vim-gtk3 (Ubuntu) o macvim / neovim con soporte de portapapeles habilitado. |
Las teclas de flecha insertan caracteres A, B, C, D | Ejecutando en modo compatible con Vi estricto | Añade set nocompatible al inicio de ~/.vimrc. |
| El resaltado de espacios al final persiste después de buscar | El resaltado de búsqueda permaneció activo | Presiona :nohlsearch o asigna <leader>h :nohlsearch<CR>. |