打开、高亮与格式化
文本/代码文件会在带语法高亮的编辑器(Scintilla)中打开。 具有注释切换(Ctrl+/)、行的移动与复制、书签(Ctrl+F2)、 符号/函数列表、基于单词的自动补全、缩进参考线、自动换行、缩放, 以及对磁盘上文件变更的检测。启用版本控制后, 边距会标示自最新版本以来新增/更改的行。
还有宏(记录/回放一系列编辑。Ctrl+Shift+R / F4, 工具 → 运行 → 宏)、格式化(美化)(Shift+Alt+F)、 用于插入字符或边框的标签工具栏 ASCII 表、拼写检查 (Hunspell)。pt-BR 和 en-US 已内置;其他语言可在设置 → 笔记与写作 → 拼写 的表格中按需下载(每种语言一行,带下载/移除按钮)。 要跟踪正在写入的日志文件,请使用标签专属工具栏上的 监视(tail -f)按钮。非常大的文件(约 1 MB 以上)会以 仅加载当前可见块的虚拟化轻量编辑器打开。 也可以从打开 → 在轻量编辑器中打开...手动强制使用。如果内存不足以为所有行建立索引,编辑器的提示条会发出警告,只有前面的行可用。
格式化与检查(linter): Shift+Alt+F 格式化文档。JSON、XML 和 SQL
由 LightNote 自行格式化,无需安装任何东西——而且只改动空白:键的顺序、数字和文本都保持你写的样子。
起作用的是状态栏中显示的类型,而不只是扩展名:在草稿标签页中粘贴 JSON,把类型选为
JSON 再格式化(以 {、[ 或 < 开头的文本即使不选也能识别)。
出错时文本不会改变:出错位置以红色下划线标出,光标跳到该处,状态栏显示行、列和原因(缺少逗号、键没有引号…)。
格式化按钮的箭头里有压缩(把 JSON 或 XML 压成一行);选中一段文本时,两者都只作用于选区——
适合处理日志行中的 JSON。每行一个完整 JSON 的文本(JSON Lines,也称 NDJSON,常见于日志和导出)会被识别并逐行格式化,而不会合并成一个文档。
F7 用于检查:JSON 和 XML 直接在文本中校验,无需保存;其他语言则运行 linter(ruff、eslint、shellcheck、luacheck 等),并在编辑器和问题面板(底部窗格,可导航)中标出问题。 其他语言使用外部格式化工具(black、prettier、clang-format、gofmt、rustfmt 等);如果该类型还没有, 格式化、F7 和 F5 会打开一个助手,只列出该类型的工具,说明哪些已安装,并一键安装所选工具 (也可以填写其他程序的命令)。完整列表位于设置 → 代码工具 → 按语言的格式化工具和→ 按语言的 linter,并有保存时格式化 / 保存时检查选项。用 F6 在输出面板中运行文件(捕获退出码与耗时,可停止/重启), 或用 F8 只运行一段。
格式之间的转换:转换子菜单位于编辑、格式化按钮的箭头、状态栏的类型菜单以及编辑器的右键菜单中——笔记里也有。它作用于选区,没有选中内容时作用于整个文本。顶部显示识别出的内容(“选区:JSON”“整个文本:CSV”),并先列出适合该内容的转换;其余的按组排列,不适用时显示为灰色并说明原因。包括 JSON ↔ YAML、JSON ↔ XML(属性变成 @名称)、JSON ↔ CSV 和 JSON → Markdown 表格(嵌套对象变成 a.b 列)、CSV ↔ Markdown 表格、CSV → SQL 的 INSERT、JSON Lines (NDJSON) ↔ JSON 数组、HTML ↔ Markdown、URL 参数 ↔ JSON、Base64、URL 编码、HTML 实体、JSON 字符串以及 Unix 时间戳 ↔ ISO 8601 日期。键的顺序和数字保持你写的样子,CSV 也能识别 Excel 的 ;。转换整个文本时,标签页的类型也会随之改变(变成表格的 CSV 会成为 Markdown),但文件保留原来的扩展名——状态栏会提示。在 JSON 中,字段名子菜单只把键改为 camelCase、PascalCase、snake_case 或 kebab-case:值、数字和缩进保持不变;如果同一对象中的两个字段会变成同一个名称,则不做任何更改。命名风格(camelCase、PascalCase、snake_case、kebab-case 和 CONSTANT_CASE)位于编辑 → 大小写,在大写、小写和首字母大写的下方。它们作用于选区;没有选区时,作用于光标所在的名称——从不作用于整个文件——并且只改名称:引号、冒号和花括号原样保留。只是一个短语的行(“customer name”)会变成一个名称(customerName)。
以代码方式打开的 .md 一键就能变回笔记。当打开的文件是笔记时,编辑器工具栏会显示作为笔记打开——这是树形菜单中打开方式 → 代码的反向操作,把标签页还原为笔记视图,带格式化编辑、阅读、大纲和属性。只有在可以切换时按钮才出现:过大的笔记仍留在代码编辑器中。
多光标、历史与定义
更多编辑功能: 逐个匹配的多光标(Ctrl+D,全部用 Alt+F3)、
复制行(Ctrl+Shift+D)、合并行(Ctrl+Shift+J)、按作用域
扩大/缩小选区(Ctrl+Shift+Space / Ctrl+Alt+Space)、矩形选择
(Alt+拖动)、全部折叠/展开、代码片段(Ctrl+J,可在
设置 → 编辑器中编辑)、跳转到文件中的符号(命令面板中的 #)
与项目中的符号(Ctrl+T 或 ##)、导航历史(Alt+←/→)、
编辑器顶部的面包屑导航、列标尺、括号配对着色、自动闭合/包裹配对,
以及保存时清理(去除行尾空格、末尾换行)——都在设置 → 编辑器中。
用 Tab 展开代码片段。输入触发词并按 Tab:在 SQL 文件中,sf 会变成 SELECT * FROM TABLE;,并且 TABLE 已被选中——输入表名后按 Tab 跳到下一个字段(Shift+Tab 返回,Esc 退出)。内置了 sf、sc、sw、sj、sg、ins、upd 和 del(最后两个已带 WHERE)。每个代码片段可用于一种语言或所有语言,在设置 → 编辑器中可以为任意语言创建自己的代码片段,支持字段 ${1:NAME}、重复 $1 和光标结束位置 $0;右键单击所选内容会出现从所选内容创建代码片段。代码片段也会出现在自动补全列表中。列表打开时,Tab 归列表使用;若不想让 Tab 展开代码片段,请关闭按 Tab 展开代码片段——Ctrl+J 仍然可用。
本地历史与剪贴板: 每次保存时,LightNote 都会独立于 Git 保留文件的一个版本 (文件 → 本地历史…,可恢复)。Ctrl+Alt+V 打开剪贴板历史, 以粘贴之前复制的条目。Ctrl+Shift+T 重新打开最近关闭的标签;标签可以固定 (右键菜单),从而避免因闲置被释放。
转到定义:在标识符上按 F12 或 Ctrl+单击即可跳转到它在工作区中的定义处;Shift+F12 查找其用法。
缩略图与文本操作
缩略图。 编辑器右侧边缘显示整个文档的缩略图:它呈现代码的“形状”(缩小后的语法高亮颜色),并标出当前可见区域。点击或拖动即可跳转到文件的任意位置。可在视图 → 缩略图或设置 → 编辑器中开启/关闭。 代码标签页自身工具栏上的缩略图按钮(位于 ASCII 旁边)可直接开关,无需离开编辑器。缩略图左侧边缘有一条标记条:蓝色表示有书签的行(与边栏上的圆点相同),琥珀色表示快速查找的匹配项——这样你可以一眼看出它们在整个文件中的分布,包括屏幕之外的部分。
文本操作。编辑菜单(以及编辑器的右键菜单)中有行(移动、复制、删除、排序、合并、反转、编号)和清理(去除空白、删除空行/重复行、制表符 ↔ 空格)子菜单。选中文本时,右键菜单还提供将选区另存为新文件…:把片段写入当前文件旁的新文件并在标签页中打开(原文件不变)。
缩进、注释和括号
文件缩进。状态栏上换行符旁边的 空格:4(或 制表符:4)按钮显示该标签页的缩进方式。点击会打开菜单:使用空格缩进或使用制表符缩进、缩进宽度(2、3、4 或 8 列)、将缩进转换为空格和转换为制表符(改写已有各行的缩进)、根据内容检测,以及把选择保存为新文件默认值的设为默认。在这里所做的选择只对该标签页有效。
缩进从哪里来。打开文件时,LightNote 会在其所在文件夹及上级文件夹中查找 .editorconfig(直到带 root = true 的那个),并应用 indent_style、indent_size 和 tab_width;trim_trailing_whitespace 和 insert_final_newline 在保存时生效,end_of_line 和 charset 只对新文件生效。没有 .editorconfig 时,它会查看文件本身的行,缩进明确就采用,否则保持默认值。顺序是:.editorconfig,然后是文件本身,最后是 设置 → 编辑器 中的默认值(默认缩进、打开时检测每个文件的缩进 和 遵循工作区的 .editorconfig 也在这里)。
智能缩进。在 {、( 或 [ 之后(Python 中还有行尾的 : 之后)按 Enter,下一行会多缩进一级。在 {} 之间按 Enter,代码块会展开成三行,光标位于中间一行,按一次 Ctrl+Z 即可全部撤销。在空行中输入的 }、) 或 ] 会回到开启它的那一行的缩进。如果只想让 Enter 复制上一行的缩进,请在 设置 → 编辑器 中关闭智能缩进。
注释、括号和补全。Ctrl+/ 按标签页当前所用语言的语法添加注释——没有文件的草稿以及在状态栏中更换语法着色时也是如此;语言只有块注释时(HTML、CSS)则使用块注释。Ctrl+Shift+\ 将光标移到所在圆括号、方括号或花括号的配对处,Ctrl+Shift+Alt+\ 则选中到该处;两者也在右键菜单中。补全列表在文档中的单词之后列出该语言的关键字(def、return…),包括文件中尚未出现的。视图 → 行号 可以隐藏或显示行号栏。
最近的标签页 (Ctrl+Tab)
Ctrl+Tab 会回到同一窗格中之前使用的标签页,而不是相邻的标签页。按住 Ctrl,每按一次 Tab 就在窗格中央出现的最近标签页列表中向下移动;松开 Ctrl 打开所选标签页,按 Esc 取消。Ctrl+Shift+Tab 按相反顺序移动。每个窗格有自己的列表,关闭的标签页会从中移除,只有一个标签页时不会显示任何内容。
并排窗格与网格
网格。编辑区分为若干窗格,每个窗格有自己的标签页,按行和列排列:一行可以有一个或多个并排的窗格,各行上下堆叠。左上角的窗格是主窗格,永远不会消失;最后一行是终端所在的行。窗格只在你需要时才会创建,最后一个标签页离开后会自动消失。
拆分。窗口 → 向右分割 会在新的一列中打开活动标签页的第二个视图,位于当前窗格的紧右侧;窗口 → 布局 → 向下分割 在新的一行中做同样的事,新行位于活动窗格所在行的正下方、终端行的上方。两个视图编辑的是同一份文本。没有空间再放一个窗格时,视图会进入相邻的窗格。窗口 → 取消分割 会关闭主窗格右侧的窗格。工具栏上的 拆分 按钮提供相同的项目。
拖动标签页。拖动标签页时,每个窗格的右边缘和下边缘各显示一条放置带:放到右侧的带上,会在该窗格紧右侧新建一列;放到下方的带上,会在它正下方新建一行。区域底部的带会把标签页移到终端行。因空间不足而无法新建窗格的带不会显示。在标签页的菜单(右键)中,移动到右侧的新窗格 无需拖动即可完成同样的操作,移动到下一个窗格 和 移动到上一个窗格 则把它移到相邻窗格。
预设布局。窗口 → 布局(拆分 按钮中也有)可一次性排好网格:1 个窗格、2 列、3 列 或 2×2 网格。应用布局绝不会关闭标签页:多出的窗格中的标签页会并入保留下来的相邻窗格,终端不受影响。均分大小 让每一行的各列宽度相同、各行高度相同。当前屏幕放不下的布局会显示为禁用,工具提示会说明原因。
空窗格。由布局创建的空窗格会显示 将标签页拖到此处,或单击此处后打开文件:单击即可选中它,之后打开的下一个文件会进入其中。它不会自动消失;用 关闭窗格 按钮可以移除它。
能放下多少个窗格。上限取决于屏幕大小,而不是一个固定的数字:只有当该行每个窗格的宽度都至少保留约 420 像素时才会新建一列,只有当每行的高度都保留约 240 像素时才会新建一行——但两列和两行总是放得下。在笔记本电脑上网格保持两列;在超宽显示器上可以放下四到五列。
使用键盘。Ctrl+Alt+PgDn 和 Ctrl+Alt+PgUp 把焦点移到下一个和上一个窗格,逐行移动,到末尾后回到开头;终端也计算在内。窗口 → 布局 中还有 将标签页移动到下一个窗格 和 将标签页移动到上一个窗格。
重新打开文件夹时。网格会按你离开时的样子恢复:行、列、大小以及每个窗格的标签页(选中时才加载文件)。如果在较小的屏幕上打开,放不下的列会并入最后一个放得下的列——不会丢失任何标签页。
项目任务
项目的构建、测试和 lint 无需进入终端,在 工具 → 项目任务 中即可运行。LightNote 会自动找到所打开文件夹的任务:package.json 的 scripts(根据现有的锁文件使用 npm、pnpm 或 yarn)、Makefile 的目标、CMakePresets.json 的 buildPresets、Rust 项目中的 cargo build/test/run/check、配置了它的 pyproject.toml 中的 pytest,以及 justfile 中的配方。
自己的任务。手写的任务放在 VS Code 格式(2.0.0 版)的 tasks.json 中,从 .vscode/tasks.json 和 .lightnote/tasks.json 读取:已有 VS Code 的任务文件就无需再写。支持 label、type(shell 或 process)、command、args、options.cwd 和 options.env、带 isDefault 的 group、windows/linux/osx 块、注释,以及变量 ${workspaceFolder}、${file}、${fileDirname} 和 ${fileBasenameNoExtension}。有错误的文件会连同原因显示在菜单中并被忽略;最多读取 200 个任务。
运行。在菜单中选择任务,或按 Ctrl+Shift+B 运行默认任务:即在 工具 → 项目任务 → 默认任务 中选定的任务(按文件夹保存);未选定时,使用 tasks.json 中标记了 isDefault 的任务;都没有时,LightNote 会询问要运行哪个。输出显示在输出面板中,带有退出码和停止按钮。编辑项目任务 会打开 .vscode/tasks.json(如果存在),否则创建一个带示例的 .lightnote/tasks.json。如果任务的程序未安装,状态栏会指出是哪个程序,并提供 外部程序。
语言服务器 (LSP)
不做配置时,转到定义、查找用法、重命名和补全都按名称查找:速度快,但不理解作用域。语言服务器(LSP)是一个独立的程序,与 VS Code 使用的相同,它真正理解该语言。它默认关闭:可在 设置 → 代码工具 的 语言服务器 (LSP) 组中开启,或在 工具 → 语言服务器 → 使用语言服务器 (LSP) 中开启。每种文件类型都有自己的服务器:pyright(Python)、typescript-language-server(JavaScript 和 TypeScript)、clangd(C 和 C++)、gopls(Go)、rust-analyzer(Rust)、lua-language-server(Lua)和 bash-language-server(shell)。
有什么变化。服务器运行时,F12 转到它指出的定义,Shift+F12 在搜索面板中列出真正的用法,重命名只更改正确的符号:LightNote 会询问“要在 N 个文件中重命名吗?”,修改打开的标签页(每个标签页按一次 Ctrl+Z 即可撤销),并在保留编码的情况下写入已关闭的文件。补全列出服务器的建议,错误带下划线并列在问题面板中,名称上的提示显示其类型和文档;该类型没有配置格式化工具时,Shift+Alt+F 通过服务器格式化。服务器无响应、太慢(补全等待 1.5 秒)或没有答案时,照旧按名称查找;已配置的检查器在 Ctrl+S 时仍然生效。
指示器与安装。状态栏上的指示器显示标签页的服务器及其状态(pyright · 就绪、正在启动…、错误、未安装);点击它会出现重启服务器、停止服务器、显示日志…和配置。要安装,请使用 工具 → 语言服务器 → 为 .py 配置…:与格式化工具相同的助手会显示命令并一键安装——仅打开标签页绝不会提示安装任何东西。服务器随该类型的第一个标签页启动,在最后一个关闭 5 分钟后停止;最多同时运行 4 个,超过 1 MB 的文件不会发送给它,每个文件最多显示 500 个错误。
目录
编辑
- 概述
- 入门
- 工作区与窗口
- 活动中心:任务与消息
- 代码编辑器
- Markdown 与维基链接
- 图表(Mermaid)
- 数学与化学(LaTeX)
- 笔记中的日历
- 编号与交叉引用
- 引用与参考文献
- 学术论文规范
- 连接图
- 表格(Parquet・CSV・JSON・Excel)
- 分析区:数据透视表与多个图表
- PDF 与图像
- 图像:为截图添加标注
- HTML 页面(.html)
- 打印
- 作为文件夹的 Zip(.zip)
- 块(.lnb)
- 任务(看板 / 甘特图)
- 自定义表格(.lnd)
- 基库(笔记的已保存查询)
工具
- 文件内搜索与待办
- 版本控制(简易 Git)
- 快照与备份
- 审查更改(检查点)
- 文件比较(差异)
- 运行代码(F5)
- 终端与 AI CLI
- 对选区的 AI 助手(Ctrl+K / Ctrl+I)
- 你电脑上的 AI
- AI 会话
- AI 聊天
- HTTP API 测试(.lnh)
- 数据库(.lnc)
- SSH 连接(.lns)
- 安全: 安全口令・PIN・安全 Markdown
- 每日笔记・快速捕获・托盘
- 重新发现旧笔记
- 在手机上使用你的笔记
- 录制音频(语音、会议)并用 AI 转写
- 便签
- 日历
- 命令面板
自动化(AI / 脚本)
参考