Abrir, resaltar y formatear
Los archivos de texto/código se abren en el editor (Scintilla) con resaltado de sintaxis. Hay comentar/descomentar (Ctrl+/), mover y duplicar línea, marcadores (Ctrl+F2), una lista de símbolos/funciones, autocompletado por palabras del documento, guías de sangría, ajuste de línea, zoom y detección de cambios del archivo en el disco. Con el control de versiones habilitado, el margen marca las líneas agregadas/modificadas desde la última versión.
También hay macros (graba/reproduce una secuencia de ediciones con Ctrl+Shift+R / F4, en Herramientas → Ejecutar → Macros), formatear/embellecer (Shift+Alt+F), una tabla ASCII en la barra de herramientas de la pestaña (para insertar caracteres/dibujo de cajas) y un corrector ortográfico (Hunspell). pt-BR y en-US vienen integrados; los demás idiomas se descargan bajo demanda desde la tabla de Ajustes → Notas y escritura → Ortografía (una fila por idioma, con botón Descargar/Quitar). Para seguir un archivo de registro que se va escribiendo, usa el botón Monitorear (tail -f) en la barra de la propia pestaña. Los archivos muy grandes (por encima de ~1 MB) se abren en un editor ligero virtualizado que carga solo los fragmentos visibles; puedes forzarlo con Abrir → Abrir en el editor ligero... Si falta memoria para indexar todas las líneas, la franja del editor avisa y solo quedan disponibles las primeras.
Formatear y verificar (linters): Shift+Alt+F formatea el
documento. JSON, XML y SQL LightNote los formatea solo, sin instalar nada — y
solo toca los espacios: el orden de las claves, los números y los textos quedan como
los escribiste. Cuenta el tipo que aparece en la barra de estado, no solo la
extensión: en una pestaña de borrador, pega el JSON, elige JSON como
tipo y formatea (un texto que empieza por {, [ o
< se reconoce aunque no elijas nada). Si hay un error, el texto no
cambia: el punto queda subrayado en rojo, el cursor salta hasta él y la barra de
estado indica línea, columna y motivo (falta una coma, clave sin comillas…). La
flecha del botón Formatear tiene Compactar (el JSON o el XML en una sola
línea), y con un fragmento seleccionado los dos actúan solo sobre él — útil para el
JSON dentro de una línea de log. Un texto con un JSON completo por línea (JSON Lines, también llamado NDJSON — habitual en logs y exportaciones) se reconoce y se formatea línea a línea, sin convertirse en un solo documento.
F7 verifica: JSON y XML se comprueban en el propio texto, sin guardar; en los demás lenguajes ejecuta el linter (ruff, eslint, shellcheck, luacheck…), que marca los problemas en el editor y en el panel Problemas (panel inferior, navegable). Los demás lenguajes usan un formateador externo (black, prettier, clang-format, gofmt, rustfmt…); si el tipo todavía no tiene uno, Formatear, F7 y F5 abren un asistente que muestra solo las herramientas de ese tipo, indica cuáles ya están instaladas e instala la elegida con un clic (o acepta el comando de otro programa). Las listas completas están en Ajustes → Herramientas de código → Formateadores por lenguaje y → Linters por lenguaje, con las opciones formatear al guardar / verificar al guardar. Ejecuta el archivo en el panel de salida con F6 (captura el código de salida y la duración, con detener/reiniciar) o solo un fragmento con F8.
Convertir de un formato a otro: el submenú Convertir está en Editar, en la flecha del botón Formatear, en el menú de tipo de la barra de estado y en el clic derecho del editor — también en una nota. Actúa sobre la selección, o sobre todo el texto cuando no hay nada seleccionado. Arriba indica lo que reconoció («Selección: JSON», «Todo el texto: CSV») y muestra primero las conversiones que sirven para ese contenido; las demás quedan en grupos, en gris con el motivo cuando no se aplican. Hay JSON ↔ YAML, JSON ↔ XML (los atributos se convierten en @nombre), JSON ↔ CSV y JSON → tabla Markdown (un objeto anidado se convierte en la columna a.b), CSV ↔ tabla Markdown, CSV → INSERT de SQL, JSON Lines (NDJSON) ↔ array JSON, HTML ↔ Markdown, parámetros de URL ↔ JSON, Base64, codificación de URL, entidades HTML, cadena JSON y timestamp Unix ↔ fecha ISO 8601. El orden de las claves y los números quedan como los escribiste, y el CSV reconoce el ; de Excel. Convertir todo el texto también cambia el tipo de la pestaña (el CSV convertido en tabla pasa a ser Markdown), pero el archivo conserva su extensión — la barra de estado lo avisa. En un JSON, el submenú Nombres de los campos renombra solo las claves a camelCase, PascalCase, snake_case o kebab-case: los valores, los números y la sangría quedan como están, y no cambia nada si dos campos del mismo objeto quedarían con el mismo nombre. Los estilos de nombre (camelCase, PascalCase, snake_case, kebab-case y CONSTANTE_CASE) están en Editar → Mayúsculas/minúsculas, debajo de MAYÚSCULAS, minúsculas y Primera Letra Mayúscula. Actúan sobre la selección o, sin selección, sobre el nombre bajo el cursor — nunca sobre el archivo entero — y cambian solo los nombres: comillas, dos puntos y llaves quedan donde estaban. Una línea que es solo una frase («nombre del cliente») se convierte en un solo nombre (nombreDelCliente).
Un .md abierto como código vuelve a ser nota con un clic. La barra del editor muestra Abrir como nota cuando el archivo abierto es una nota — es el inverso de Abrir como → Código del menú del árbol, y devuelve la pestaña a la vista de nota, con edición formateada, lectura, índice y propiedades. El botón solo aparece cuando el cambio es posible: una nota demasiado grande sigue en el editor de código.
Multicursor, historial y definición
Más funciones de edición: multicursor por ocurrencia (Ctrl+D, todas
con Alt+F3), duplicar línea (Ctrl+Shift+D), unir líneas
(Ctrl+Shift+J), expandir/reducir la selección por ámbito
(Ctrl+Shift+Espacio / Ctrl+Alt+Espacio), selección rectangular
(Alt+arrastrar), plegar/desplegar todo, fragmentos/snippets
(Ctrl+J, editables en Ajustes → Editor), Ir al símbolo en el
archivo (# en la paleta) y en el proyecto (Ctrl+T o
##), historial de navegación (Alt+←/→), una ruta de
navegación (breadcrumbs) en la parte superior del editor, reglas de
columna, coloreado de pares de paréntesis, cierre/envoltura automática de pares e
higiene al guardar (recortar espacios, salto final) — todo en Ajustes →
Editor.
Fragmentos con Tab. Escriba el disparador y pulse Tab: en un archivo SQL, sf se convierte en SELECT * FROM TABLE; con TABLE ya seleccionado — escriba el nombre de la tabla y Tab pasa al siguiente campo (Shift+Tab vuelve, Esc sale). Vienen listos sf, sc, sw, sj, sg, ins, upd y del (los dos últimos ya con WHERE). Cada fragmento vale en un lenguaje o en todos, y en Ajustes → Editor usted crea los suyos en cualquier lenguaje, con campos ${1:NOMBRE}, repeticiones $1 y el final del cursor $0; el clic derecho sobre una selección ofrece Crear fragmento a partir de la selección. Los fragmentos también aparecen en la lista de autocompletado. Con la lista abierta, el Tab sigue siendo de ella; para que el Tab no expanda fragmentos, desactive Expandir fragmentos con Tab — Ctrl+J sigue funcionando.
Historial local y portapapeles: en cada guardado, LightNote conserva una versión del archivo (Archivo → Historial local…, restaurable), independiente de Git. Ctrl+Alt+V abre el historial del portapapeles para pegar un elemento copiado antes. Ctrl+Shift+T reabre la última pestaña cerrada; las pestañas se pueden fijar (menú contextual), lo que las protege de ser liberadas por inactividad.
Ir a la definición: F12 o Ctrl+clic sobre un identificador salta a donde está definido en el espacio de trabajo; Shift+F12 localiza sus usos.
Minimap y operaciones de texto
Minimapa. Una miniatura de todo el documento aparece en el borde derecho del editor: muestra la “forma” del código (los colores del resaltado de sintaxis a escala reducida) y marca la región visible. Haga clic o arrastre sobre ella para ir a cualquier punto del archivo. Actívelo en Ver → Minimapa o en Configuración → Editor. El botón Minimapa de la barra de la propia pestaña de código (junto a ASCII) lo activa y desactiva sin salir del editor. En el borde izquierdo de la miniatura hay una franja de marcas: en azul las líneas con marcador (el mismo punto del margen) y en ámbar las coincidencias de la búsqueda rápida, para ver de un vistazo cómo se reparten por todo el archivo, incluso fuera de la pantalla.
Operaciones de texto. En el menú Editar — y en el menú contextual del editor — están los submenús Líneas (mover, duplicar, eliminar, ordenar, unir, invertir, numerar) y Limpieza (recortar espacios, quitar líneas vacías/duplicadas, tabulaciones ↔ espacios). Con una selección, el menú contextual ofrece además Guardar la selección como archivo nuevo…: escribe el fragmento en un archivo junto al actual y lo abre en una pestaña (el original no se modifica).
Sangría, comentarios y paréntesis
Sangría del archivo. En la barra de estado, junto al fin de línea, el botón Espacios: 4 (o Tab: 4) indica cómo sangra la pestaña. El clic abre el menú: Sangrar con espacios o Sangrar con tabulación, el Ancho de la sangría (2, 3, 4 u 8 columnas), Convertir la sangría a espacios y a tabulación (reescribe la sangría de las líneas existentes), Detectar a partir del contenido y Usar como predeterminado, que guarda la elección para los archivos nuevos. Lo que elijas ahí vale para esa pestaña.
De dónde viene la sangría. Al abrir un archivo, LightNote busca un .editorconfig en su carpeta y en las de arriba (hasta uno con root = true) y aplica indent_style, indent_size y tab_width; trim_trailing_whitespace e insert_final_newline valen al guardar, y end_of_line y charset solo en un archivo nuevo. Sin .editorconfig, mira las líneas del propio archivo y adopta la sangría que encuentre, si es clara; si no, queda la predeterminada. El orden es ese: .editorconfig, luego el archivo, luego la predeterminada de Ajustes → Editor, donde están Sangría predeterminada, Detectar la sangría de cada archivo al abrirlo y Respetar el .editorconfig del espacio de trabajo.
Sangría inteligente. El Enter después de {, ( o [ —y de : al final de la línea, solo en Python— abre la línea siguiente un nivel más adentro. Entre {}, el Enter abre el bloque en tres líneas, con el cursor en la del medio, y un solo Ctrl+Z lo deshace todo. Un }, ) o ] escrito en una línea en blanco vuelve a la sangría de la línea que lo abrió. Para que el Enter solo copie la sangría de la línea de arriba, desactiva Sangría inteligente en Ajustes → Editor.
Comentarios, paréntesis y completado. Ctrl+/ comenta con la sintaxis del lenguaje que usa la pestaña —también en un borrador sin archivo y cuando cambias el resaltado de sintaxis en la barra de estado— y, donde el lenguaje solo tiene comentario de bloque (HTML, CSS), usa el de bloque. Ctrl+Shift+\ lleva el cursor al par del paréntesis, corchete o llave en que está, y Ctrl+Shift+Alt+\ selecciona hasta ahí; los dos están también en el clic derecho. Después de las palabras del documento, la lista de completado trae las palabras clave del lenguaje (def, return…), incluso las que aún no aparecen en el archivo. Y Ver → Números de línea oculta o muestra el margen numerado.
Pestañas recientes (Ctrl+Tab)
Ctrl+Tab vuelve a la pestaña que usaste antes, en el mismo panel, y no a la pestaña vecina. Manteniendo Ctrl, cada Tab baja por la lista de pestañas recientes, que aparece en el centro del panel; soltar Ctrl abre la elegida, y Esc cancela. Ctrl+Shift+Tab recorre en orden inverso. Cada panel tiene su propia lista, una pestaña cerrada sale de ella y, con una sola pestaña, no aparece nada.
Paneles lado a lado y en cuadrícula
La cuadrícula. El área de edición se divide en paneles, cada uno con sus pestañas, ordenados en filas y columnas: una fila tiene uno o más paneles lado a lado, y las filas se apilan. El panel de arriba a la izquierda es el principal y nunca desaparece, y la última fila es la de los terminales. Un panel solo nace cuando lo pides, y desaparece solo cuando sale su última pestaña.
Dividir. Ventana → Dividir a la derecha abre una segunda vista de la pestaña activa en una columna nueva, justo a la derecha del panel en el que estás; Ventana → Diseño → Dividir abajo hace lo mismo en una fila nueva, justo debajo de la del panel activo y encima de la de los terminales. Las dos vistas editan el mismo texto. Cuando no cabe otro panel, la vista va al panel vecino. Ventana → Quitar división cierra el panel a la derecha del principal. El botón Dividir de la barra de herramientas tiene los mismos elementos.
Arrastrar una pestaña. Mientras arrastras una pestaña, cada panel muestra una franja en su borde derecho y otra en su borde inferior: soltarla en la derecha crea una columna justo a la derecha de ese panel, y en la inferior, una fila justo debajo de él. Las franjas del pie del área llevan la pestaña a la fila de los terminales. La franja que no podría crear un panel, por falta de espacio, no aparece. En el menú de la pestaña (clic derecho), Mover a un panel nuevo a la derecha hace lo mismo sin arrastrar, y Mover al panel siguiente y Mover al panel anterior la llevan a un vecino.
Diseños listos. Ventana → Diseño (también en el botón Dividir) ordena la cuadrícula de una vez: 1 panel, 2 columnas, 3 columnas o Cuadrícula 2×2. Aplicar un diseño nunca cierra una pestaña: las pestañas de un panel que sobra se juntan en el vecino que queda, y los terminales no cambian. Igualar tamaños deja las columnas de cada fila con el mismo ancho y las filas con la misma altura. El diseño que no cabe en esta pantalla aparece deshabilitado, y su sugerencia dice por qué.
Panel vacío. El panel que un diseño crea vacío muestra Arrastre una pestaña aquí, o haga clic aquí y abra un archivo: al hacer clic en él lo eliges, y el próximo archivo que abras va a él. No desaparece solo; el botón Cerrar panel lo quita.
Cuántos paneles caben. El límite viene del tamaño de la pantalla, no de un número: una columna nueva solo nace si cada panel de la fila se queda con al menos unos 420 píxeles de ancho, y una fila nueva solo si cada fila se queda con unos 240 de alto — pero dos columnas y dos filas siempre caben. En un portátil la cuadrícula se queda en dos columnas; en un monitor ultrapanorámico caben cuatro o cinco.
Con el teclado. Ctrl+Alt+PgDn y Ctrl+Alt+PgUp llevan el foco al panel siguiente y al anterior, fila a fila, volviendo al principio; los terminales también cuentan. En Ventana → Diseño están además Mover la pestaña al panel siguiente y Mover la pestaña al panel anterior.
Al reabrir la carpeta. La cuadrícula vuelve como la dejaste: las filas, las columnas, los tamaños y las pestañas de cada panel (que solo cargan su archivo cuando las eliges). Abierta en una pantalla más pequeña, las columnas que no caben se juntan en la última que cupo — no se pierde ninguna pestaña.
Tareas del proyecto
Build, pruebas y lint del proyecto se ejecutan sin ir a la terminal, en Herramientas → Tareas del proyecto. LightNote encuentra solo las tareas de la carpeta abierta: los scripts del package.json (con npm, pnpm o yarn, según el archivo de bloqueo que haya), los objetivos del Makefile, los buildPresets del CMakePresets.json, cargo build/test/run/check en un proyecto Rust, el pytest en un pyproject.toml que lo configura y las recetas del justfile.
Tus propias tareas. Las tareas escritas a mano van en un tasks.json en el formato de VS Code (versión 2.0.0), leído de .vscode/tasks.json y de .lightnote/tasks.json: quien ya tiene el de VS Code no necesita escribir nada. Valen label, type (shell o process), command, args, options.cwd y options.env, group con isDefault, los bloques windows/linux/osx, los comentarios y las variables ${workspaceFolder}, ${file}, ${fileDirname} y ${fileBasenameNoExtension}. Un archivo con error aparece en el menú con el motivo y se ignora; se leen hasta 200 tareas.
Ejecutar. Elige la tarea en el menú, o pulsa Ctrl+Shift+B para ejecutar la tarea predeterminada: la elegida en Herramientas → Tareas del proyecto → Tarea predeterminada (guardada por carpeta); sin elección, la que el tasks.json marca con isDefault; sin ninguna, LightNote pregunta cuál ejecutar. La salida va al panel de salida, con el código de salida y el botón de detener. Editar las tareas del proyecto abre el .vscode/tasks.json, si existe, o crea un .lightnote/tasks.json con un ejemplo. Si el programa de una tarea no está instalado, la barra de estado dice cuál y ofrece Programas externos.
Servidores de lenguaje (LSP)
Sin configuración, ir a la definición, buscar usos, renombrar y completar buscan por el nombre: es rápido, pero no entiende el ámbito. Un servidor de lenguaje (LSP) es un programa aparte, el mismo que usa VS Code, que entiende el lenguaje de verdad. Viene desactivado: actívalo en Ajustes → Herramientas de código, en el grupo Servidores de lenguaje (LSP), o en Herramientas → Servidor de lenguaje → Usar servidores de lenguaje (LSP). Cada tipo de archivo tiene el suyo: pyright (Python), typescript-language-server (JavaScript y TypeScript), clangd (C y C++), gopls (Go), rust-analyzer (Rust), lua-language-server (Lua) y bash-language-server (shell).
Qué cambia. Con el servidor activo, F12 va a la definición que él indica, Shift+F12 lista los usos reales en el panel de búsqueda, y renombrar cambia solo el símbolo correcto: LightNote pregunta “¿Renombrar en N archivos?”, cambia las pestañas abiertas (un Ctrl+Z lo deshace en cada una) y guarda los archivos cerrados conservando su codificación. El completado trae lo que el servidor sugiere, los errores aparecen subrayados y en el panel Problemas, la sugerencia sobre un nombre muestra su tipo y su documentación, y Shift+Alt+F formatea con el servidor cuando no hay formateador configurado para el tipo. Si el servidor no responde, tarda (el completado espera 1,5 s) o no sabe la respuesta, vale la búsqueda por nombre, como antes; un linter configurado sigue valiendo en Ctrl+S.
El indicador y la instalación. En la barra de estado, un indicador muestra el servidor de la pestaña y su estado (pyright · listo, iniciando…, error, no instalado); el clic en él trae Reiniciar el servidor, Detener el servidor, Mostrar registro… y la configuración. Para instalar, usa Herramientas → Servidor de lenguaje → Configurar para .py…: el mismo asistente de los formateadores muestra el comando e instala con un clic; abrir una pestaña nunca ofrece instalar nada. El servidor arranca con la primera pestaña de su tipo y se detiene 5 minutos después de que se cierra la última; se ejecutan como máximo 4 a la vez, un archivo de más de 1 MB no se le envía y cada archivo muestra hasta 500 errores.
Índice
Edición
- Visión general
- Primeros pasos
- Espacio de trabajo y ventanas
- Panel de actividades: tareas y mensajes
- Editor de código
- Markdown y wikilinks
- Diagramas (Mermaid)
- Matemáticas y química (LaTeX)
- Calendario en la nota
- Numeración y referencia cruzada
- Citas y referencias
- Norma del trabajo académico
- Grafo de conexiones
- Tablas (Parquet, CSV, JSON, Excel)
- Área de análisis: tabla dinámica y varios gráficos
- PDF e imágenes
- Imágenes: marcar una captura
- Páginas HTML (.html)
- Imprimir
- Zip como carpeta (.zip)
- Bloques (.lnb)
- Tareas (Kanban / Gantt)
- Tabla personalizada (.lnd)
- Bases (consultas guardadas sobre las notas)
Herramientas
- Buscar en archivos y Pendientes
- Control de versiones (Git fácil)
- Instantáneas y copia de seguridad
- Revisar cambios (puntos de control)
- Comparar archivos (diff)
- Ejecutar código (F5)
- Terminal y CLIs de IA
- Asistente de IA en la selección (Ctrl+K / Ctrl+I)
- IA en tu equipo
- Sesiones de IA
- Chat con IA
- Probar APIs HTTP (.lnh)
- Bases de datos (.lnc)
- Conexión SSH (.lns)
- Seguridad: Frase de paso, PIN y Markdown seguro
- Notas diarias, captura rápida y bandeja
- Reencontrar notas antiguas
- Tus notas en el móvil
- Grabar audio (voz, reunión) con transcripción por IA
- Notas adhesivas
- Calendario
- Paleta de comandos
Automatización (IA / scripts)
Referencia