- En la categoría de editores, se mencionan repetidamente Helix, Emacs, Neovim, Sublime Text, Zed y los IDE de JetBrains, y quedan claras las ventajas y desventajas de cada uno
- En control de versiones, destaca la tendencia de
jujutsu(jj)a reemplazar el CLI de git, y también se mencionan varias herramientas GUI de apoyo como Magit, lazygit y Sublime Merge - En shell, terminal y gestión del entorno, aparecen como stack principal Fish, WezTerm, Ghostty, kitty, tmux, Nix, mise, atuin y fzf
- El mensaje clave que más se repite es: "elige herramientas con buenos valores por defecto y evita la configuración infinita" y "con la edad, en vez de adaptar la herramienta a uno, uno se adapta a buenos valores por defecto" (aunque también hay opiniones en contra)
Contexto de la discusión
- Hilo de preguntas en Lobsters: "¿Cuáles son las herramientas favoritas de un desarrollador?" con la idea de que "los desarrolladores tienen opiniones fuertes y es difícil elegir una sola herramienta"
- Recibió más de 130 comentarios en 19 horas
- Filosofía que apareció repetidamente: "con la edad, en vez de adaptar la herramienta a uno, adapto mis preferencias a herramientas con buenos valores por defecto", porque así "uno termina en el camino mejor probado y se encuentra con menos bugs"
- Opinión contraria: "con la edad, disminuye la paciencia para soportar malos valores por defecto. Si no puedo dejarla utilizable en unos minutos, la cambio por otra herramienta"
Editores de texto / IDE
-
Helix
- "un punto de equilibrio adecuado entre capacidad de personalización y una gran experiencia por defecto"
- Al usarlo junto con jujutsu, después de cambiar de commit hay que recargar manualmente los archivos abiertos; como solución temporal se usa un atajo para
:reload-all - Un PR de monitoreo de archivos (#14544) está siendo desarrollado por un maintainer
- También hay muchos casos de usuarios que no logran adaptarse al modelo de selection-first y vuelven a vim
- Fork con soporte parcial de atajos de vim: evil-helix
-
Emacs
- Muchos usuarios respondieron simplemente "Emacs"
- Magit recibió tantos elogios que se menciona por separado
- Flujo de migración por áreas: Git → Magit, Email → mu4e, RSS → elfeed, Notes/TODO/Calendar → org-mode, Finder → dired
-
Neovim
- "Retiré mi
.vimrcde más de 10 años y migré por completo a Neovim" - Tendencias en distribuciones de plugins:
- LazyVim: la más pulida; se recomienda desactivar los atajos de flash.nvim
- AstroNvim: alternativa más ligera
- Kickstart.nvim: punto de partida simple orientado a personalización
- MiniMax: configuración inicial creada por el equipo de mini.nvim
- "Retiré mi
-
IDE de JetBrains
- Se recomienda mucho el depurador de PyCharm: funciona incluso dentro del REPL de Django, soporta HTML/CSS/JS de plantillas y permite hacer cherry-pick por hunk
- Si usas 2 o más productos de JetBrains, la licencia All Products sale más barata
-
Sublime Text / Zed
- "Sublime Text está subestimado"; hubo quien dijo usarlo a diario desde hace más de 20 años
- Incluso si se programa en otra parte, se sigue usando por su rapidez y buffers sin guardar persistentes
- También aparece la tendencia de probar Zed como reemplazo por el crecimiento excesivo de VSCode
-
Kate / Notepad++
- También se mencionan, en respuestas breves, Kate en el mundo Linux y Notepad++ en Windows
Control de versiones
-
jujutsu (jj) — la herramienta más mencionada del año
- "No pensé que abandonaría el CLI de git, pero al final eso fue lo que pasó"
- "Es raro encontrar una herramienta que sea más fácil y al mismo tiempo más potente; jujutsu logra ambas cosas"
- Hay comentarios de que rebase y amend de commits se vuelven agradables
- Desventaja: los valores por defecto no están muy pulidos y hace falta ajustar color/template; el valor por defecto fue descrito como "texto vómito de unicornio arcoíris de alto contraste"
-
Herramientas de apoyo para Git
- tig: "una versión mejorada de git log", útil para staging interactivo
- Magit: pieza central para usuarios de Emacs
- Sublime Merge: "una capa GUI sobre git, pero muy bien hecha"; también puede integrarse con
jjusandomerge-editor = "smerge" - lazygit: hace que uno se anime a intentar tareas complejas como rebase, revert, stash y múltiples remotes
- delta: al configurarlo como pager de git ofrece diffs con resaltado de sintaxis; combinado con lazygit permite alternar entre side-by-side e inline
- difftastic: diff basado en sintaxis, no en líneas
- git revise: "debería venir incluido por defecto en git"
- Beyond Compare: herramienta de diff/merge/sincronización de carpetas usada durante 20 años
Shell / terminal
-
Fish
- "Hace todo lo que hacen bash y zsh, pero ofrece una gran experiencia sin casi configuración"
- Cuando hace falta, también puede ejecutar scripts de bash tal cual
- Se valora como una herramienta en la que uno sigue descubriendo atajos útiles (por ejemplo, historial de directorios con
alt+<left|right>)
-
Emuladores de terminal
- WezTerm: copiar/pegar solo con teclado (
ctrl+shift+space), duplicar una pestaña en el mismo sistema conctrl+shift+t, cliente SSH y multiplexor integrados - Ghostty: integración nativa con macOS — popover de diccionario con
Cmd+Ctrl+D, drag-and-drop, pestañas nativas y gran calidad de renderizado de fuentes - kitty: "un ejemplo de buena herramienta donde los valores por defecto simplemente funcionan y aun así hay mucho margen de configuración"
- WezTerm: copiar/pegar solo con teclado (
-
tmux
- el primer comando que ejecutan al abrir una sesión de terminal
- Sirve como protección ante cierres de SSH o terminales cerradas por error, y permite mantener el mismo patrón entre Mac y NixOS
-
Starship
- Puede integrarse en cualquier shell, aunque su desventaja es que en repositorios grandes los comandos de git status y branch se vuelven lentos
Gestión del entorno / dependencias
-
Nix / NixOS
- "Quizá sea síndrome de Estocolmo, pero después de usarlo ya no puedo volver a otras distribuciones de Linux ni a otros sistemas de build"
- Con nix shell por proyecto se minimizan los paquetes del sistema y se pueden fijar versiones exactas sin contaminar el PATH global
- "Da mucha confianza pensar que seguirá funcionando igual dentro de 1 año o 5 años"
- "Una vez superada la curva de aprendizaje, se siente mágico. Así es como debió haber sido la configuración del SO desde el principio"
-
mise
- Gestor de versiones de herramientas que reemplaza a direnv, e incluso se integra en CI liviano
- "un reemplazo estrictamente mejor que asdf"
- Al descubrir
mise activate, se puede eliminar direnv por completo - Con
mise watchy su sistema de tareas permite acciones por proyecto y ejecutar trabajos cuando cambian archivos
-
Dev Containers
- Su ventaja es poder compartir el entorno de despliegue docker/container con el entorno de desarrollo
- Desventaja: el tooling aún está inmaduro (el CLI de referencia ni siquiera implementa un comando stop)
-
chezmoi
- Permite mantener un entorno de desarrollo consistente entre equipos de trabajo y personales, incluyendo alias de git, configuración de Neovim, access tokens e instalación de otras herramientas
Depuración / profiling
-
rr — depurador de record/replay
- "la herramienta principal para depurar C/C++; una vez grabado, puede reproducirse de forma determinista infinitas veces"
- Permite vigilar direcciones de memoria y rebobinar hasta el último punto de escritura
- "temporal debugging bisection": junto con watchpoints, permite buscar hacia adelante y hacia atrás el punto donde ocurre una corrupción de memoria
-
Pernosco
- Depurador con viaje en el tiempo + análisis de flujo de datos
- Fue de ayuda decisiva para el manejo de foco en procesos multiproceso de contenido de Firefox y para compatibilidad de Chrome con about:blank
-
RenderDoc / Tracy / RemedyBG
- RenderDoc: herramienta todoterreno para depuración gráfica, superior en funciones básicas al depurador Metal de XCode
- Tracy: "si hicieras un profiler con recursos ilimitados, terminarías construyendo Tracy"
- RemedyBG: depurador muy cómodo para el trabajo diario
-
XCode Instruments
- En profiling 3D/GPU ofrece anotaciones del costo de ejecución por línea
- Permite analizar la causa de los stalls: espera de lectura de memoria, espera de sincronización y divergencia del flujo de control
- "la ventaja de un ecosistema que controla hardware, drivers, lenguaje de sombreado Metal y tooling de punta a punta"
-
Otros
- strace, extrace, perf — combinación indispensable para depuración
- gdb — sigue apareciendo muchas veces como respuesta corta
Búsqueda / procesamiento de texto
- fzf: integración con búsqueda inversa del shell, "el nivel de fuzzy es el justo"
- Con el patrón
rg '' | fzfse puede buscar texto en todo el repo y, al elegir una coincidencia, devolver de inmediato algo comovim foo.rs +123al prompt del shell
- Con el patrón
- ripgrep: "funciona correctamente desde el primer momento; nunca he sentido la necesidad de configurarlo"
- septum: búsqueda interactiva de código — consultas condicionales como "contiene triangle, vertex y mesh en 7 líneas o menos, pero excluye physics"
- fastmod / spacemod: reemplazo masivo
- autojump: con
j whatevspermite moverse mediante fuzzy matching al historial de directorios usados - zoxide: similar a autojump, con navegación más fluida
- awk: sigue siendo muy potente para tareas de "extraer un poco y retocar un poco"
- entr: "vigila estos archivos y ejecuta esto" — ideal para disparar pruebas automáticamente en un codebase
JSON / datos / herramientas de transformación
- jq: estándar de facto para procesar JSON; se recomienda leer el manual completo, y también el
jq trackde Exercism- gojq: mensajes de error muy superiores al jq nativo, y soporte para entrada YAML, lo que permite reutilizar la misma muscle memory
- fx: drill-down de salidas JSON grandes
- hexdump: especialmente
hexdump -C, útil para depuración embebida — patrónpicocom --baud 115200 /dev/ttyUSB | hexdump -C - hexyl: visor hexadecimal con color
- bat: reemplazo de cat con resaltado de sintaxis
- choose, fd: reemplazos de cut y find, respectivamente
Historial del shell / portapapeles / notas
- Atuin: sincronización del historial del shell y búsqueda basada en contexto de directorio o repositorio git
- CopyQ: gestor de portapapeles para unos 2000 elementos; ayuda a recuperar trabajo anterior cuando se pierde una nota
- histprune: personalización de
Ctrl+Ren fzf; conalt+Delimina entradas del historial al instante - Obsidian: migración desde Logseq; guardar en Markdown puro favorece el trabajo con LLMs/agentes
- Joplin: AGPLv3, con apps de escritorio, móvil y web; backend WebDAV/OneDrive/S3 y almacenamiento directo en archivos
.md
Build / automatización de tareas
- just: reemplazo de make — enfocado en tareas más que en builds, con una interfaz consistente y agnóstica del lenguaje como
just lint- "Permite alternar por target entre el modo línea por línea de make y el modo script completo en shell/python/node"
- Desventajas: escribe scripts embebidos en
$TMPDIRantes de ejecutarlos y usa su propio lenguaje de plantillas (uncanny valley)
- Task (go-task): alternativa basada en YAML, con enfoque batteries-included
- universal-test-runner: detecta automáticamente cómo correr las pruebas de un repo y las ejecuta, con pass-through de argumentos adicionales
- chezmoi: gestión consistente de dotfiles e instalación de herramientas entre distintas máquinas
HTTP / red / secretos
- Hurl: "olvídate de las apps HTTP GUI que quieren recolectar información" — permite expresar solicitudes tipo curl en un formato de texto simple, ideal para pruebas integradas
- curl: mencionado muchas veces como respuesta breve
- SOPS: cifrado de secretos con claves age/SSH, usando patrones como
sops exec-env secrets.yaml -- some command - Mutagen: sincronización bidireccional de archivos en tiempo real sobre SSH, útil para trabajar en máquinas remotas
- forge: reemplazo del CLI de GitHub, con soporte para Codeberg y una experiencia más rápida y ordenada
Otros / flujo de trabajo
- Quarto: presentaciones rápidas con markdown
- Nushell: shell influido por PowerShell, útil para escribir con fiabilidad scripts de transformación grandes como GeoPackage → PostGIS o PostGIS view → PMTiles; desventaja: al estar antes de 1.0, se rompe con actualizaciones frecuentes
- Typst: mencionado como reemplazo de LaTeX, con preferencia por su sintaxis basada en call-by-value
- Topiary: formateador multilenguaje
- Hunk: visor de diff en terminal orientado a revisión primero para agentic coders, con el patrón de dejar abierto
--watchjunto al agente que programa - Raycast / Alfred: lanzadores para macOS, con snippets, portapapeles y búsquedas web parametrizadas
- Ergodox EZ: teclado usado por 10 años, con alta satisfacción en personalización y consumo energético
- Joplin / Fossil: autoalojamiento de notas y wiki
- AeroSpace / Sway: gestores de ventanas en mosaico
Meta-mensajes que se repiten
- "elige herramientas con buenos valores por defecto y evita la configuración infinita" — Helix, Fish, ripgrep y mise se mencionan como ejemplos representativos de esta filosofía
- Perspectiva contraria: también hay casos de personas que, tras ajustar herramientas sin parar, terminaron construyendo su propio sistema ideal — "ahora solo lo retoco unas pocas veces al año"
- Subproducto de la era de los agentes de IA: crece la idea de que herramientas como jq, Markdown y texto estructurado facilitan la colaboración con LLMs — el Markdown puro de Obsidian, el modo watch de hunk y la recomendación de estudiar el manual de jq apuntan en la misma dirección
- Ventaja de macOS en depuración gráfica: se considera que el profiling de GPU en XCode Instruments es abrumadoramente superior al de Linux/Windows
- Renacimiento del CLI vs tipografía: al mismo tiempo que el ecosistema de herramientas de terminal se enriquece, también aparece la observación de que salidas largas de LLM/agentes se leen mejor en navegadores o apps dedicadas por la tipografía
8 comentarios
He probado varias, pero ninguna me termina de convencer, así que estoy creando una yo mismo. Estoy tomando solo las funciones que necesito como referencia de notepad++, VS Code, Zed y Obsidian.
Últimamente he estado usando mucho juntos estos tres: cmux, tmux y mux.
Si inicio sesión por ssh en un servidor conectado con tailscale, me muestra agrupadas las sesiones existentes de tmux con fzf, y desde ahí elijo a cuál entrar.
cmux - Terminal para macOS basado en Ghostty para agentes de código con IA
Show GN: mux – gestor de sesiones de tmux que convierte sesiones de código con IA en vistas previas en vivo
En Mac, ¿no hay que presionar Enter dos veces para escribir en coreano en la terminal? (dos veces: una para completar la composición en coreano y otra para ingresarlo)
La única que no tenía este problema era wezterm, así que me cambié a esa.
Me gusta zed
Ya me convertí en alguien que no puede vivir sin Claude Code. + tmux..
Y para agregar,
vscodecomo editor de texto..Si no, un IDE imprescindible como Visual Studio para compilar..
fzf, jq, rg, awk ❤️
neovim, alacritty, tmux, fzf, rg, obsidian, bat, jq, hurl, lazygit, hammerspoon, chrome, codex, claude,
Opiniones de Lobste.rs
Uso Helix como editor de texto. Para mí tiene el equilibrio justo entre personalización y una excelente experiencia por defecto
Por la misma razón uso Fish como shell de terminal. Viene genial de fábrica y casi no hace falta ajustarlo para usarlo como quiero
A medida que envejezco, cada vez me gusta más adaptar mis gustos a herramientas con buenos valores por defecto diseñados con intención, en vez de estar tocando la configuración sin fin
Atuin está muy bueno para sincronizar el historial del shell entre máquinas remotas y para buscar historial contextual según el directorio actual o el repositorio git. Tiene otras funciones, pero yo solo uso esas
Mise también me gusta por varias razones, pero sobre todo es mi administrador de versiones de herramientas favorito. Reemplazó al direnv que usaba antes y en proyectos personales incluso empecé a integrarlo poco a poco en flujos ligeros de CI
Apenas unas cuantas veces al año. Mi Emacs quedó como una caja de herramientas Studley hecha a mi medida
En cambio, hace unos meses finalmente adopté Neovim por completo y retiré mi
.vimrc, que había crecido orgánicamente por más de 10 años. Me dio algo de pena, pero ahora le tengo menos envidia a HelixMise también está bueno y prácticamente no requiere configuración. Fish también lo empecé a usar hace unos meses y, salvo algunas funciones de usuario, lo uso casi tal cual viene
Ripgrep también hace “simplemente lo correcto” en su estado por defecto, tanto que ni siquiera sé si alguna vez intenté configurarlo
Emacs
Tal vez sea síndrome de Estocolmo, pero Nix. No es perfecto, pero una vez que pude trabajar de forma más expresiva y eficiente con Nix, prácticamente me arruinó otras distribuciones de Linux y los metassistemas de build
Ya que estamos,
pwntoolstambién es una herramienta divertida de usar fuera de los CTF. Por ejemplo, está buenísimo para manipular sockets a nivel de bits desde un REPL de PythonYo siempre levantaba una VM nueva de Ubuntu en libvirt, le metía las herramientas y trabajaba ahí; ¿hay alguna forma basada en Nix que recomendarías?
Emacs, por supuesto, y en particular Magit
Nix. Tiene una curva de aprendizaje. Pasé años rodeado de usuarios y evangelizadores de Nix antes de intentarlo en serio, pero al final está bastante bien
Al trabajar en varios proyectos, me cansé de que cada uno usara herramientas distintas para gestionar dependencias a nivel sistema. Una para la versión de Node, otra para la de Python, y así
También me harté de los fallos de build difíciles de depurar por incompatibilidades entre proyectos. Se rompe
$fooen el Proyecto A, lo actualizas con Homebrew, y ahora se rompe$fooen el Proyecto BTambién agota que el proceso de build dependa de varias dependencias instaladas en el sistema, muchas veces ocultas, y por eso falle “por alguna razón”
Moví todo lo posible a un nix shell por proyecto. Mantengo los paquetes a nivel sistema lo más livianos posible, y en cada proyecto fijo las herramientas exactas que necesita: dependencias, runtimes, compiladores, etc., con versiones concretas
No contamino el PATH global ni otros proyectos. Si hoy me funciona, tengo bastante confianza en que también funcionará dentro de 1 o 5 años
Y cuando quiero actualizar herramientas, puedo hacerlo sin preocuparme por afectar otros proyectos; si aparece una regresión, es fácil volver atrás o fijar solo una dependencia concreta en una versión anterior
También es mejor cuando tus compañeros usan Nix en los proyectos. El tiempo extra de configurar y mantener el nix shell se comparte, y además tienes bastante confianza en que todos tienen el mismo entorno de desarrollo
Por ejemplo, ni siquiera el CLI de referencia implementa todavía el comando
stop. Aun así, si usas Docker/contenedores para despliegue, tiene la ventaja de que puedes compartir mucha configuración entre el entorno de desarrollo y el de desplieguehttps://containers.dev/
https://github.com/devcontainers/cli
rr(https://rr-project.org/) es un software tan mágico y tan bueno que ya no podría vivir sin él
rr? Entiendo a grandes rasgos la explicación de la página principal del proyectoLa idea de grabar un fallo una vez y luego depurarlo de forma determinista todas las veces que quieras claramente parece útil
Pero pregunto por la experiencia real porque todavía no tengo esa sensación de “wow, este bug/flujo de trabajo específico habría sido imposible de resolver sin rr”
Vengo del mundo de la administración de sistemas, así que estoy mucho más del lado de “usar buenos valores por defecto con mínima configuración”. Pero hace poco hubo dos cosas que me rompieron ese hábito
Ya se habló mucho aquí de jujutsu(
jj), pero sinceramente da muchísimo gusto usarlo. Nunca pensé que dejaría el CLI de git, pero aquí estamosDurante años evité aprender a usar y configurar nvim, pero nvchad me permitió empezar. El nombre es terrible, pero para mí es una excelente configuración inicial con el nivel justo de opinión sin dejar de ser minimalista
Claro que ahora ya uso desde cero mi propia configuración mínima
Fuera de eso, uso bastante Python, así que también tengo que decir que las herramientas de astral siguen siendo un placer de usar. Ojalá Anthropic las cuide bien
Si no usas texto tipo vómito de unicornio arcoíris de alto contraste sobre fondo oscuro, hace falta bastante ajuste de colores y plantillas
En realidad es Emacs. Poco a poco fui moviendo mis tareas de computación a Emacs y empecé a aceptar sus valores por defecto
Emacs es realmente fácil de personalizar, y muchas combinaciones de teclas hacen lo correcto en todos los modos
La lista de cosas que voy migrando lentamente es Git → Magit, Email → mu4e, RSS → elfeed, Notes/TODO/Calendar → org mode, Finder → dired
Quarto también está bastante bien para hacer presentaciones rápido con Markdown. Uso Nix y nix-darwin para todos mis dotfiles
Emacs. No lo uso muy seguido, pero escribir parsers con ragel es un placer
Sublime Text definitivamente está subestimado por demasiada gente
Creo que se llamaba algo como “vintage”. Hoy en día, cuando estoy en una situación en la que me habría gustado que me gustara Sublime Text, uso Zed