106. Comandos esenciales y tu primera configuración ⚙️
Los comandos que usarás todos los días
Ahora que sabes moverte y editar básicamente, es hora de aprender los comandos esenciales que harán tu vida más fácil y crear una configuración que te haga más productivo.
💾 Comandos de archivo
Guardar y salir (lo más importante)
Comando | Acción | Cuándo usar |
---|---|---|
:w | Guardar | Guardar sin cerrar |
:q | Salir | Si no hay cambios |
:wq | Guardar y salir | Comando más común |
:x | Guardar y salir | Igual que :wq pero más rápido |
:q! | Salir sin guardar | ¡Cuidado! Pierdes cambios |
:w! | Forzar guardar | Si el archivo es read-only |
Trabajar con archivos
Comando | Acción | Ejemplo |
---|---|---|
:e archivo | Abrir archivo | :e config.js |
:w archivo | Guardar como | :w backup.txt |
:r archivo | Insertar contenido de archivo | :r header.html |
:new | Nuevo buffer | Para archivo temporal |
Navegación rápida de archivos
Comando | Acción | Descripción |
---|---|---|
:e. | Explorador de archivos nativo | Navegar directorios |
gf | Ir a archivo bajo cursor | Para imports/includes |
Ctrl+^ | Alternar entre últimos 2 archivos | Súper útil |
🔍 Búsqueda y reemplazo básico
Búsqueda
Comando | Acción | Ejemplo |
---|---|---|
/texto | Buscar hacia adelante | /function |
?texto | Buscar hacia atrás | ?const |
n | Siguiente resultado | Después de buscar |
N | Resultado anterior | Dirección opuesta |
* | Buscar palabra bajo cursor | Súper útil |
# | Buscar palabra bajo cursor (atrás) | - |
Reemplazo simple
Comando | Acción | Ejemplo |
---|---|---|
:s/viejo/nuevo/ | Reemplazar en línea actual | :s/var/const/ |
:s/viejo/nuevo/g | Reemplazar todos en línea | g = global |
:%s/viejo/nuevo/g | Reemplazar en todo el archivo | % = todo el archivo |
:%s/viejo/nuevo/gc | Reemplazar con confirmación | c = confirm |
Ejemplo práctico:
var userName = "alice";
var userAge = 25;
var userEmail = "alice@test.com";
Para cambiar todas las var
a const
:
:%s/var/const/g
📋 Comandos de línea útiles
Navegación por números de línea
Comando | Acción | Ejemplo |
---|---|---|
:42 | Ir a línea 42 | :100 |
:$ | Ir a última línea | Final del archivo |
:. | Línea actual | Para referencia |
:1,10 | Rango de líneas 1-10 | Para comandos |
Información del archivo
Comando | Acción | Información que muestra |
---|---|---|
Ctrl+g | Estado del archivo | Línea actual, total, % |
:f | Información de archivo | Nombre, líneas, estado |
g Ctrl+g | Estadísticas detalladas | Palabras, caracteres, bytes |
🛠️ Tu primera configuración (.vimrc)
Vamos a crear una configuración práctica y bien comentada:
" ===================================================================
" CONFIGURACIÓN ESENCIAL DE VIM
" ===================================================================
" Archivo: ~/.vimrc
" Descripción: Configuración básica pero potente para productividad
" -------------------------------------------------------------------
" CONFIGURACIÓN BÁSICA
" -------------------------------------------------------------------
" Números de línea
set number " Mostrar números de línea
set relativenumber " Números relativos para movimientos
" Búsqueda mejorada
set ignorecase " Ignorar mayúsculas en búsqueda
set smartcase " Si hay mayúsculas, ser sensible a ellas
set hlsearch " Highlight resultados
set incsearch " Búsqueda incremental (mientras escribes)
" Indentación inteligente
set tabstop=4 " Tabs se ven como 4 espacios
set softtabstop=4 " Tabs se insertan como 4 espacios
set shiftwidth=4 " Indentación usa 4 espacios
set expandtab " Usar espacios en lugar de tabs
set autoindent " Mantener indentación de línea anterior
set smartindent " Indentación inteligente para código
" Interfaz mejorada
set wrap " Wrap líneas largas
set linebreak " Wrap en palabras, no caracteres
set showmatch " Mostrar pareja de brackets/paréntesis
set cursorline " Highlight línea actual
set laststatus=2 " Siempre mostrar status line
" Comportamiento
set mouse=a " Habilitar mouse (útil al principio)
set clipboard=unnamedplus " Usar clipboard del sistema (Linux)
" set clipboard=unnamed " Para macOS
set splitbelow " Nuevas ventanas horizontales abajo
set splitright " Nuevas ventanas verticales a la derecha
set scrolloff=8 " Mantener 8 líneas de contexto
set sidescrolloff=8 " Mantener 8 columnas de contexto
" Archivos y backups
set nobackup " No crear archivos .bak
set nowritebackup " No crear backup temporal
set noswapfile " No crear archivos .swp
set hidden " Permitir buffers ocultos con cambios
" Historial
set history=1000 " Recordar 1000 comandos
set undolevels=1000 " 1000 niveles de undo
" -------------------------------------------------------------------
" MAPEOS DE TECLAS (KEYBINDINGS)
" -------------------------------------------------------------------
" Leader key - la tecla mágica para comandos personalizados
let mapleader = " " " Usar espacio como leader
" Comandos esenciales de supervivencia
nnoremap <leader>w :w<CR>
nnoremap <leader>q :q<CR>
nnoremap <leader>x :x<CR>
nnoremap <leader>W :wq!<CR>
" Limpiar highlight de búsqueda (súper útil)
nnoremap <leader>h :nohlsearch<CR>
" Navegación entre ventanas (splits)
nnoremap <C-h> <C-w>h
nnoremap <C-j> <C-w>j
nnoremap <C-k> <C-w>k
nnoremap <C-l> <C-w>l
" Crear splits rápidamente
nnoremap <leader>sv :vsplit<CR>
nnoremap <leader>sh :split<CR>
nnoremap <leader>sc :close<CR>
" Redimensionar ventanas
nnoremap <leader>= <C-w>=
nnoremap <leader>+ <C-w>+
nnoremap <leader>- <C-w>-
" Movimiento mejorado en líneas wrapeadas
nnoremap j gj
nnoremap k gk
" Mover líneas arriba/abajo en modo visual
vnoremap J :m '>+1<CR>gv=gv
vnoremap K :m '<-2<CR>gv=gv
" Indentación mejorada (mantener selección)
vnoremap < <gv
vnoremap > >gv
" Pegar múltiples veces sin perder el contenido
vnoremap p "_dP
" Búsqueda mejorada (centrar resultado)
nnoremap n nzzzv
nnoremap N Nzzzv
" -------------------------------------------------------------------
" CONFIGURACIÓN VISUAL
" -------------------------------------------------------------------
" Colores y tema
syntax enable " Habilitar syntax highlighting
colorscheme desert " Tema por defecto (siempre disponible)
" Alternativas de colores incluidos en Vim:
" colorscheme blue, darkblue, elflord, evening, industry, koehler,
" morning, murphy, pablo, peachpuff, ron, shine, slate, torte, zellner
" Configuración de colores específicos
highlight LineNr ctermfg=gray
highlight CursorLine cterm=NONE ctermbg=darkgray
highlight Search ctermbg=yellow ctermfg=black
" -------------------------------------------------------------------
" CONFIGURACIONES AUTOMÁTICAS
" -------------------------------------------------------------------
" Habilitar detección de tipo de archivo
filetype plugin indent on
" Quitar espacios en blanco al final al guardar
autocmd BufWritePre * :%s/\s\+$//e
" Recordar posición del cursor al abrir archivo
autocmd BufReadPost *
\ if line("'\"") > 1 && line("'\"") <= line("$") |
\ exe "normal! g`\"" |
\ endif
" Configuración específica por tipo de archivo
autocmd FileType python setlocal tabstop=4 softtabstop=4 shiftwidth=4
autocmd FileType javascript,typescript,json,html,css setlocal tabstop=2 softtabstop=2 shiftwidth=2
autocmd FileType yaml setlocal tabstop=2 softtabstop=2 shiftwidth=2
" -------------------------------------------------------------------
" CONFIGURACIONES AVANZADAS
" -------------------------------------------------------------------
" Mejorar autocompletado de línea de comandos
set wildmenu
set wildmode=longest:full,full
" Ignorar ciertos archivos
set wildignore=*.o,*.obj,*.bak,*.exe,*.pyc,*.jpg,*.gif,*.png,node_modules/**
" Mostrar comandos incompletos
set showcmd
" Mostrar modo actual
set showmode
" -------------------------------------------------------------------
" ALIAS Y COMANDOS PERSONALIZADOS
" -------------------------------------------------------------------
" Comando para editar vimrc rápidamente
command! Vimrc :e ~/.vimrc
" Comando para recargar vimrc
command! Source :source ~/.vimrc
" Comando para mostrar espacios en blanco
command! ShowSpaces :set list listchars=tab:>-,trail:·,space:·
" Comando para ocultar espacios en blanco
command! HideSpaces :set nolist
" -------------------------------------------------------------------
" MENSAJES DE INFORMACIÓN
" -------------------------------------------------------------------
" Mostrar mensaje de carga
echo "🚀 Configuración de Vim cargada correctamente!"
echo "💡 Leader key: <Space>"
echo "📚 Comandos útiles:"
echo " <leader>w - Guardar"
echo " <leader>q - Cerrar"
echo " <leader>h - Limpiar búsqueda"
echo " <leader>sv - Split vertical"
echo " :Vimrc - Editar configuración"
echo " :Source - Recargar configuración"
🎯 Comandos personalizados útiles
Mapeos con leader key
Ya incluidos en la configuración arriba, pero aquí el razonamiento:
Mapeo | Comando | Por qué es útil |
---|---|---|
<leader>w | :w<CR> | Guardar rápido |
<leader>q | :q<CR> | Cerrar rápido |
<leader>h | :nohlsearch<CR> | Limpiar búsqueda |
<leader>sv | :vsplit<CR> | Split vertical |
<leader>sh | :split<CR> | Split horizontal |
¿Por qué espacio como leader?
- Accesible: Fácil de alcanzar con ambos pulgares
- No usado: En modo Normal, espacio solo mueve cursor
- Cómodo: No requiere combinaciones raras
- Estándar: Muchos usuarios de Vim lo usan
🔧 Aplicar la configuración
Paso 1: Crear el archivo
# Hacer backup si ya tienes .vimrc
cp ~/.vimrc ~/.vimrc.backup
# Crear nuevo .vimrc
vim ~/.vimrc
Paso 2: Copiar la configuración
- Entra en modo Insert (
i
) - Copia y pega toda la configuración de arriba
- Guarda y sal (
:wq
)
Paso 3: Probar la configuración
# Abrir un archivo para probar
vim test.txt
# Probar algunos comandos:
# <Space>w para guardar
# <Space>h para limpiar búsqueda
# /texto para buscar
🧪 Ejercicios con tu nueva configuración
Ejercicio 1: Navegación mejorada
def calculate_total(price, tax, discount):
"""Calculate final price with tax and discount"""
subtotal = price + tax
total = subtotal - discount
return total
result = calculate_total(100, 21, 5)
print(f"Total: {result}")
Tareas:
- Busca
calculate
con*
(cursor en la palabra) - Usa
n
para ir al siguiente (debería centrarse automáticamente) - Cambia
calculate_total
acompute_total
en ambos lugares
Ejercicio 2: Splits y ventanas
- Abre un archivo:
vim archivo.txt
- Crea split vertical:
<Space>sv
- Abre otro archivo:
:e otro_archivo.txt
- Navega entre ventanas:
Ctrl+h
,Ctrl+l
- Iguala ventanas:
<Space>=
Ejercicio 3: Búsqueda y reemplazo
<div class="user">
<span class="user-name">Alice</span>
<span class="user-age">25</span>
<span class="user-email">alice@test.com</span>
</div>
Tareas:
- Reemplaza
user
conperson
en todo el archivo::%s/user/person/g
- Busca
Alice
y reemplázala con tu nombre - Usa
<Space>h
para limpiar el highlight
📚 Comandos adicionales útiles
Trabajo con múltiples archivos
Comando | Acción | Uso |
---|---|---|
:args *.js | Cargar múltiples archivos | Para edición en lote |
:argdo %s/old/new/ge | Comando en todos los archivos | e = no error si no encuentra |
:wall | Guardar todos los archivos | Cuando trabajas con varios |
Debug y información
Comando | Acción | Información |
---|---|---|
:version | Versión de Vim | Características compiladas |
:set | Ver configuración actual | Todas las opciones |
:set option? | Ver valor específico | :set tabstop? |
:messages | Ver mensajes de Vim | Errores, warnings |
🎯 Metas para este capítulo
Cuando domines esta configuración deberías poder:
- Guardar y cerrar archivos instantáneamente (
<Space>w
,<Space>q
) - Buscar y reemplazar eficientemente
- Trabajar con múltiples ventanas cómodamente
- Navegar archivos usando comandos nativos
- Personalizar Vim según tus necesidades
🔜 ¿Qué sigue?
En el próximo capítulo (nivel Productividad) aprenderemos movimientos avanzados que te harán navegar por archivos como un ninja.
💡 Tip pro: No añadas todo a tu .vimrc
de una vez. Empieza con esta configuración y ve añadiendo funcionalidades gradualmente según las vayas necesitando.
🎯 Objetivo del capítulo: Tener una configuración sólida de Vim que mejore tu productividad diaria.