- 开发工具
- CLI
【免费下载链接】micro
A modern and intuitive terminal-based text editor
本篇技术指南以 micro 编辑器内置帮助文档 options.md 为骨架,系统讲解 micro 的全部可配置选项:从配置目录的解析规则、每个选项的语义与默认值,到settings.json的书写格式、全局/局部作用域与按文件类型/路径匹配的进阶用法,并结合仓库源码剖析选项校验、备份机制、快速脏检测等底层实现。读完本文,你将能够独立完成 micro 从「开箱即用」到「贴合个人习惯」的完整定制,并能通过set、setlocal、toggle等命令在编辑器内实时调参。
一、配置目录:选项与配置文件存放位置
Micro 将用户配置统一存放在配置目录中。配置目录的解析优先级如下(对应实现见 internal/config/config.go 中的InitConfigDir):
- 若设置了环境变量
$MICRO_CONFIG_HOME,则直接使用该目录; - 否则使用
$XDG_CONFIG_HOME/micro(遵循 XDG 规范); - 若二者均未设置,则回退到
~/.config/micro。
后续文档中统一用~/.config/micro指代配置目录,实际位置可能因上述环境变量而不同。配置目录在启动时自动创建(InitConfigDir会调用os.MkdirAll),主要存放以下内容:
| 文件/目录 | 用途 |
|---|---|
settings.json | 用户修改过的选项(核心配置文件) |
backups/ | 缓冲区自动备份 |
buffers/ | 光标位置、命令历史、撤销历史等状态 |
colorschemes/ | 自定义配色方案(*.micro文件) |
plug/ | 用户安装的插件 |
init.lua | 启动时执行的 Lua 初始化脚本 |
此外,rtfiles.go 中的InitRuntimeFiles会同时加载配置目录与内嵌 runtime 中的配色方案(colorschemes/*.micro)、语法文件(syntax/*.yaml)、帮助文档(help/*.md),这也是「自定义 colorscheme 放在配置目录即可生效」的底层依据。
二、选项总览:完整参数清单与默认值
Micro 提供大量可配置选项,覆盖编辑行为、外观显示、保存备份、搜索高亮、分屏标签、剪贴板、编码格式等方方面面。下面按功能类别逐一说明(说明与默认值均继承自 options.md,默认值的源码定义见 settings.go)。
2.1 编辑行为
autoindent(默认true):创建新行时沿用上一行的缩进。keepautoindent(默认false):使用 autoindent 时编辑器会自动补入缩进空白;本选项决定当你未做任何输入直接移到下一行时,这些自动添加的空白是否删除。默认行为是:如果该行最终为空,则自动删除缩进空白。rmtrailingws(默认false):自动裁剪行尾的空白字符。注意:该选项会覆盖keepautoindent;在定时 autosave 或强制 autosave 且缓冲区未变化时不会执行裁剪,而手动保存无论缓冲区是否变化都会执行。tabstospaces(默认false):用空格代替制表符。注意:该选项可能被 ftoptions 插件 针对特定文件类型覆盖,若想禁用此行为,可在配置中加入"ftoptions": false。tabmovement(默认false):将行首空格当作制表符来移动(例如一次跳过 4 个空格)。仅在tabstospaces开启时生效。tabsize(默认4):一个制表符显示为多少个空格。源码中该选项使用validatePositiveValue校验,必须大于 0(settings.go)。matchbrace(默认true):当光标位于()、{}、[]之一时显示匹配的括号。matchbraceleft(默认true):模拟 I-beam 光标行为——当光标下方没有括号字符时,匹配光标左侧的括号;跳转时根据初始光标位置决定落在匹配括号上还是其右侧字符上(即「括号内」还是「括号外」)。关闭后仅匹配光标正下方的括号并精确跳转。matchbracestyle(默认underline):匹配括号的显示样式,可选underline(下划线)或highlight(使用当前主题的match-brace样式)。fastdirty(默认false):决定判断缓冲区是否被修改的算法。开启时仅用一个布尔modified,用户一编辑就置true,速度快但可能不准确;关闭时则用当前缓冲区哈希与打开文件时的原始哈希比对,更准确但更耗资源。当文件超过 50KB 时,该选项会对当前缓冲区自动开启——源码中阈值为LargeFileThreshold = 50000(字节),见 save.go,相关强制逻辑见 buffer/settings.go。paste(默认false):将终端一次发送的字符块视为一次粘贴事件,而非一连串手工按键。若你使用终端自身的粘贴快捷键(而非 micro 默认的Ctrl-v),建议粘贴期间开启、粘贴结束后关闭。smartpaste(默认true):粘贴多行时自动补充行首缩进,尽量保持当前缩进级别。readonly(默认false):禁止编辑缓冲区。官方建议仅用setlocal局部设置该选项。源码中readonly与filetype同属LocalSettings(见 settings.go),设置为只读会同步修改缓冲区的只读标记。mkparents(默认false):当打开的文件路径不存在(父目录缺失)而无法保存时,自动创建父目录。fileformat(默认:Unix 系统为unix,Windows 为dos):决定文件使用的行尾。unix为\n,dos为\r\n。打开已有文件时会自动检测行尾并显示在状态栏上;本选项主要用于新建文件或主动转换行尾。编辑中修改该选项会立即转换当前文件行尾;而以该选项打开新文件时,仅对空/新建文件生效(已有文件会从现有行尾自动检测)。默认值由源码中defaultFileFormat()依据runtime.GOOS决定(settings.go)。filetype(默认unknown,打开文件后自动覆盖):设置当前缓冲区的文件类型;设为off可完全禁用文件类型检测。该选项是仅局部设置。encoding(默认utf-8):打开与保存文件所用的编码。源码通过htmlindex.Get校验编码合法性(settings.go);切换编码会触发缓冲区重新标记为已修改(buffer/settings.go)。eofnewline(默认true):文件末尾若无换行符则自动补一个。autosu(默认false):当保存无权限修改的文件时,micro 默认询问是否使用超级用户权限;开启后自动使用超级用户权限保存而不询问。sucmd(默认sudo):指定超级用户命令,BSD 系统上常改为doas。仅在以 su 方式保存时使用。parsecursor(默认false):将file.txt:10:5这类文件名解析为「打开 file.txt 并将光标定位到第 10 行第 5 列」(列号可省略,则定位到第 10 行第 0 列)。注意开启后无法打开文件名本身就包含:10:5的文件。也可用命令行+LINE:COL语法定位光标,详见micro -help。multiopen(默认tab):决定启动时打开多个文件的排布方式,最常用于命令行参数,如-multiopen vsplit。可选tab(每个文件一个标签页)、vsplit(并排)、hsplit(上下堆叠)。reload(默认prompt):控制文件在外部被修改后当前缓冲区的重载行为,可选prompt(询问)、auto(自动重载)、disabled(禁用)。
2.2 保存与备份
autosave(默认0):每 n 秒自动保存缓冲区。退出时若缓冲区有修改,也会自动保存并退出。注意该选项不提示用户就直接保存,可能覆盖数据;设为0则完全关闭。源码解析settings.json时还做了布尔值兼容:true会被转换为8.0(秒),false转为0.0(settings.go)。backup(默认true):自动为所有打开的缓冲区保留备份,存放在~/.config/micro/backups,缓冲区正常关闭时删除。系统崩溃或 micro 崩溃后,重新打开原文件可自动恢复,也可在备份目录手动查找。备份在后台每8 秒执行一次(对应源码常量backupSeconds = 8,见 backup.go),或在检测到崩溃时执行。backupdir(默认""空字符串):备份存放目录。为空时使用ConfigDir/backups(默认即~/.config/micro/backups)。目录不存在会自动创建——源码中backupDir()会回退到filepath.Join(config.ConfigDir, "backups")(backup.go)。permbackup(默认false):让备份永久保留。开启后 micro 不会在文件关闭时删除备份,也不会将备份应用到现有文件,适合想手动管理备份文件的场景。源码中keepBackup()即由permbackup或强制保留标志决定(backup.go)。
2.3 界面显示
basename(默认false):在 infobar 与标签栏中只显示文件基名而非完整路径。colorcolumn(默认0):非 0 时在指定列显示一条竖线,常用于高亮第 80 列。cursorline(默认true):以不同颜色高亮光标所在行(颜色由配色方案定义)。diffgutter(默认false):在行前显示 diff 指示符。配合内置diff插件时,处于 Git 仓库中会相对最近一次提交显示变更(详见下文插件部分)。divchars(默认|-):分屏分隔线使用的字符。第一个字符用于垂直分隔,第二个用于水平分隔。默认情况下水平分屏由状态栏充当分隔线,但若状态栏被禁用则使用水平分隔字符。divreverse(默认true):开启后分屏分隔线字符的前景色与背景色互换(由配色方案指定)。fakecursor(默认false):强制用终端颜色渲染光标,而非使用真实终端光标,适合终端光标较慢或不可用的情况。注意:在传统 Windows Console(legacy console)中该选项默认开启——源码defaultFakeCursor()检测到 Windows 且未设置WT_SESSION时返回true(settings.go)。hltaberrors(默认false):在期望空格处高亮制表符、在期望制表符处高亮空格。具体而言:tabstospaces开启时高亮所有制表符;关闭时高亮行首缩进部分的空格。hltrailingws(默认false):高亮行尾空白。注意不会高亮输入过程中自然产生的新行尾空白,只针对遗留的「顽固」行尾空白。indentchar(默认 空格):设置制表符的显示字符。已弃用,请改用showchars选项中的tab键。infobar(默认true):启用编辑器底部显示消息的横条。该选项是仅全局设置。keymenu(默认false):在屏幕底部显示 nano 风格按键菜单。注意ToggleKeyMenu默认绑定在Alt-g且显示在状态栏中;若要禁用该按键绑定,将Alt-g绑定到None即可。mouse(默认true):鼠标支持。禁用后终端通常能直接访问鼠标事件,例如在 ssh 场景下想要从终端(而非 micro)复制时很有用,因为终端能访问本地剪贴板而 micro 不能。relativeruler(默认false):相对行号显示。开启后除光标所在行外,各行显示与光标行的距离。ruler(默认true):显示行号。scrollbar(默认false):显示滚动条。scrollbarchar(默认|):滚动条使用的字符。scrollmargin(默认3):光标接近视图边缘时开始滚动的边距。scrollspeed(默认2):单次滚动事件滚动的行数。showchars(默认""空字符串):设置各类不可见字符的显示符号(仅显示,不会写入文件)。格式为key1=value1,key2=value2,...,支持的键:space:空格字符tab:制表符字符(设置后覆盖indentchar)ispace:行内首个可见字符之前的缩进位置空格(未设置时回退用space显示)itab:行内首个可见字符之前的缩进制表符(未设置时回退用tab显示)
只有
tab和itab可显示多个字符,其余只取第一个字符。示例值:tab=>,space=.,itab=|>,ispace=|。显示字符的颜色由当前主题的indent-char字段决定,而非默认文本颜色。softwrap(默认false):将超出屏幕宽度的行折行显示。wordwrap(默认false):按单词折行(即只在空格处断开)。仅在softwrap开启时生效。statusline(默认true):在屏幕底部显示状态栏。statusformatl(默认值见下):状态栏左侧对齐部分的格式字符串。特殊指令放在$()内,包括:filename、modified、line、col、lines、percentage、opt、overwrite、bind。其中opt和bind后面需跟一个选项名或动作名,分别填入选项当前值或该动作绑定的按键。默认值:
$(filename) $(modified)$(overwrite)($(line),$(col)) $(status.paste)| ft:$(opt:filetype) | $(opt:fileformat) | $(opt:encoding)statusformatr(默认$(bind:ToggleKeyMenu): bindings, $(bind:ToggleHelp): help):状态栏右侧对齐部分的格式字符串。tabalways(默认false):始终显示标签栏,即使只打开一个标签页。tabhighlight(默认false):将标签字符(文件名、保存指示器等)的颜色与标签栏反转。tabreverse(默认true):激活标签时反转标签栏颜色。helpsplit(默认hsplit):help命令打开帮助文档时的分屏方式,可选vsplit(垂直分屏)或hsplit(水平分屏)。pageoverlap(默认2):向上/下翻页时保留在当前视图中的行数。例如设为 2 时向下翻页,上一页的最后两行会成为下一页的前两行。
2.4 搜索与高亮
ignorecase(默认true):搜索时忽略大小写。incsearch(默认true):在「查找」提示框中启用增量搜索(边输入边匹配)。hlsearch(默认false):搜索成功后高亮所有匹配文本。该高亮可临时通过UnhighlightSearch动作(默认绑定 Esc 键)关闭,或用ToggleHighlightSearch动作切换开关——注意这些动作不会改变hlsearch设置本身,只要hlsearch仍为true,下一次搜索就会重新开启高亮。detectlimit(默认100):非 0 时限制用于判定文件类型所匹配的文件开头行数。值越大判定越准确,但耗时也越多。syntax(默认true):启用语法高亮。
2.5 剪贴板与终端
clipboard(默认external):指定 micro 访问系统剪贴板的方式:external:通过外部工具访问剪贴板,如 Linux 的 xclip/xsel 或 wl-clipboard、macOS 的 pbcopy/pbpaste、Windows 的系统调用。Linux 上若未安装这些工具或工具失效,micro 会报错并回退到内部剪贴板。terminal:通过终端模拟器访问剪贴板(OSC 52 协议)。注意终端支持有限:已知可用的有 Kitty(需开启clipboard_control设置)、iTerm2(仅复制)、st、rxvt-unicode,以及开启相关选项后的 xterm(详见> help copypaste);Gnome-terminal 不支持该功能。使用此设置在 ssh 场景下可以正常复制粘贴。internal:使用 micro 内部剪贴板。
useprimary(默认true,仅 Unix 有效):是否使用主剪贴板(primary clipboard)在后台复制选中内容。不影响Ctrl-c/Ctrl-v的正常剪贴板操作。xterm(默认false):无视$TERM实际值,假定终端符合xterm-256color。若终端实际上不符合该标准,开启可能产生异常效果。
2.6 插件、Lua 与全局行为
lockbindings(默认false):禁止插件和 Lua 脚本绑定任何按键。自定义动作必须通过bind等命令或直接修改bindings.json手动绑定。pluginchannels(默认["https://raw.githubusercontent.com/micro-editor/plugin-channel/master/channel.json"]):插件频道 URL 列表,用于下载和安装插件。每个频道是一个 JSON 文件,包含指向插件仓库的链接,仓库中记录插件版本与下载 URL。默认指向官方插件频道。pluginrepos(默认[]空列表):插件仓库链接列表。colorscheme(默认default):使用指定配色方案。该选项是仅全局设置。配色方案可以是 micro 内置的(如default、solarized、solarized-tc,已嵌入 micro 二进制),也可以是放在~/.config/micro/colorschemes/$(option).micro的自定义方案(其中$(option)即选项值)。配色方案与默认方案清单详见> help colors。truecolor(默认auto):控制使用真彩(24 位)配色方案(如solarized-tc、atom-dark)时是否启用真彩:auto:检测到终端支持则启用,否则禁用;on:强制启用(若终端实际不支持则无法保证显示效果);off:禁用真彩。
注意:该选项的修改在下次启动 micro 时生效。
savecursor(默认false):记住上次打开文件时光标的位置,再次打开时自动定位。信息保存在~/.config/micro/buffers/。savehistory(默认true):记住命令历史,在关闭并重新打开 micro 后仍可保留。信息保存在~/.config/micro/buffers/history。saveundo(默认false):开启后即使关闭文件也会保留撤销历史,重新打开文件后可继续撤销。信息保存在~/.config/micro/buffers/。
三、settings.json:配置文件格式与完整示例
你在编辑器内设置的任何选项都会被保存到~/.config/micro/settings.json,因此配置文件会自动为你创建;要迁移配置到其他机器,只需复制该文件即可。
settings.json应放在配置目录(默认~/.config/micro)中,且只应包含相对默认值被修改过的选项。下面是全部选项的 JSON 格式完整示例,可直接作为书写格式参考:
{ "autoclose": true, "autoindent": true, "autosave": 0, "autosu": false, "backup": true, "backupdir": "", "basename": false, "clipboard": "external", "colorcolumn": 0, "colorscheme": "default", "comment": true, "cursorline": true, "detectlimit": 100, "diff": true, "diffgutter": false, "divchars": "|-", "divreverse": true, "encoding": "utf-8", "eofnewline": true, "fakecursor": false, "fastdirty": false, "fileformat": "unix", "filetype": "unknown", "ftoptions": true, "helpsplit": "hsplit", "hlsearch": false, "hltaberrors": false, "hltrailingws": false, "ignorecase": true, "incsearch": true, "indentchar": " ", "infobar": true, "initlua": true, "keepautoindent": false, "keymenu": false, "linter": true, "literate": true, "matchbrace": true, "matchbraceleft": true, "matchbracestyle": "underline", "mkparents": false, "mouse": true, "multiopen": "tab", "pageoverlap": 2, "parsecursor": false, "paste": false, "permbackup": false, "pluginchannels": [ "https://raw.githubusercontent.com/micro-editor/plugin-channel/master/channel.json" ], "pluginrepos": [], "readonly": false, "relativeruler": false, "reload": "prompt", "rmtrailingws": false, "ruler": true, "savecursor": false, "savehistory": true, "saveundo": false, "scrollbar": false, "scrollbarchar": "|", "scrollmargin": 3, "scrollspeed": 2, "showchars": "", "smartpaste": true, "softwrap": false, "splitbottom": true, "splitright": true, "status": true, "statusformatl": "$(filename) $(modified)$(overwrite)($(line),$(col)) $(status.paste)| ft:$(opt:filetype) | $(opt:fileformat) | $(opt:encoding)", "statusformatr": "$(bind:ToggleKeyMenu): bindings, $(bind:ToggleHelp): help", "statusline": true, "sucmd": "sudo", "syntax": true, "tabalways": false, "tabhighlight": true, "tabmovement": false, "tabreverse": false, "tabsize": 4, "tabstospaces": false, "useprimary": true, "wordwrap": false, "xterm": false }从源码角度补充几个配置文件的关键行为(对应 settings.go):
- 读取:
ReadSettings使用 JSON5 解析器读取settings.json,因此支持注释、尾逗号等超集语法;解析失败会设置解析错误标志并报错(settings.go)。 - 校验与回退:
validateParsedSettings会对每个键逐一校验。对于设置了但类型错误或值非法的选项,micro 会回退到默认值并提示,而不是崩溃。例如tabsize必须 ≥ 1,autosave、colorcolumn、detectlimit、pageoverlap、scrollmargin、scrollspeed必须非负(settings.go)。 - 预定义选项值:
OptionChoices定义了带固定候选值的选项——clipboard(internal/external/terminal)、fileformat(unix/dos)、helpsplit(hsplit/vsplit)、matchbracestyle(underline/highlight)、multiopen(tab/hsplit/vsplit)、reload(prompt/auto/disabled)、truecolor(auto/on/off),写入非法值会被拒绝并回退默认(settings.go)。 - 写回:
WriteSettings只把「非默认」且「被用户修改过」的选项写入文件,并会移除已恢复为默认值的选项,保持配置文件最小化(settings.go)。
四、全局设置与局部设置:作用域控制
micro 的选项分为全局与局部两类:
- 局部设置(Local):仅对当前缓冲区生效,且不会写入
settings.json。使用setlocal命令设置。 - 全局设置(Global):默认方式,对所有缓冲区生效,修改后写入
settings.json。使用set命令设置。
源码层面的划分见 settings.go:
DefaultGlobalOnlySettings:只能全局修改的选项,如autosave、clipboard、colorscheme、divchars、divreverse、fakecursor、helpsplit、infobar、keymenu、lockbindings、mouse、multiopen、parsecursor、paste、pluginchannels、pluginrepos、savehistory、scrollbarchar、sucmd、tabalways、tabhighlight、tabreverse、xterm等;LocalSettings:永不全局修改的选项,即filetype与readonly。
因此:colorscheme仅可全局设置,filetype仅可局部设置。要局部设置选项,用setlocal而非set。
4.1 按文件类型(ft:)匹配的局部设置
settings.json中可以按文件类型设置局部选项,键名格式为"ft:文件类型"。下面示例让 Go 文件禁用tabstospaces、Ruby 文件使用 2 空格缩进,其余文件保持全局行为:
{ "ft:go": { "tabstospaces": false }, "ft:ruby": { "tabsize": 2 }, "tabstospaces": true, "tabsize": 4 }实现上,UpdateFileTypeLocals会扫描解析后的设置,当缓冲区文件类型与ft:前缀后的类型匹配时,将该子对象内的选项应用到缓冲区(settings.go)。
4.2 按路径 glob(glob:)匹配的局部设置
也可以用 glob 模式按文件路径匹配:
{ "glob:*.go": { "tabstospaces": false }, "glob:*.rb": { "tabsize": 2 }, "tabstospaces": true, "tabsize": 4 }还可以省略glob:前缀:
{ "*.go": { "tabstospaces": false }, "*.rb": { "tabsize": 2 }, "tabstospaces": true, "tabsize": 4 }不过官方更推荐显式使用glob:前缀,以避免与选项名冲突。底层行为:解析时未加前缀的 glob 键会被内部自动转换为glob:前缀形式(settings.go),加载时由UpdatePathGlobLocals对缓冲区绝对路径做 glob 匹配后应用局部设置(settings.go)。
4.3 局部设置的应用顺序
从 buffer/settings.go 的ReloadSettings可以看到缓冲区生效顺序:先应用glob:路径匹配的局部设置,再确定filetype并更新语法规则,随后应用ft:文件类型匹配的局部设置,最后用全局设置兜底覆盖所有未局部指定的选项(同时跳过VolatileSettings标记的临时设置,保证会话内临时选项不被重载覆盖)。
五、编辑器内实时调参:set / setlocal / toggle 等命令
无需编辑文件,也可以在编辑器内通过命令实时调整选项。按Ctrl-e打开命令栏(出现>提示符)后输入命令即可。相关命令定义见 command.go:
| 命令 | 作用 |
|---|---|
set 选项 值 | 全局设置选项(对所有缓冲区生效并写入 settings.json) |
setlocal 选项 值 | 仅对当前缓冲区设置选项 |
toggle 选项 | 切换可切换选项的取值(布尔取反,双值选项互换) |
togglelocal 选项 | 对当前缓冲区局部切换 |
show 选项 | 显示选项当前值 |
reset 选项 | 将选项重置为默认值 |
例如:
> set colorscheme solarized > setlocal tabsize 2 > toggle softwrap > show rmtrailingws这些命令都支持选项名与取值的自动补全(OptionValueComplete/OptionComplete)。set的实现在 command.go:先尝试全局设置(SetGlobalOption),若该选项非法或仅局部则回退为缓冲区级SetOption;setlocal则直接调用缓冲区级SetOption(command.go)。切换逻辑toggleOption对布尔选项取反,对OptionChoices中恰好两个取值的选项在两者间互换(command.go)。
六、插件选项:每个插件一个同名开关
所有插件都自带一个与插件同名的布尔选项,用于启用或禁用。micro 内置了以下插件(对应源码目录 runtime/plugins):
autoclose:自动闭合括号、引号等。comment:为多种语言提供自动注释功能。ftoptions:根据不同文件类型调整一些默认选项。linter:为多种语言提供可扩展的 lint 支持。literate:为 Literate 编程工具提供高级语法高亮。status:为状态栏提供扩展(Git 集成等)。diff:将diffgutter选项与 Git 集成。处于 Git 目录时,diff gutter 显示相对最近一次提交的变更,而非打开文件以来的变更。
源码实现上,插件加载时即通过RegisterCommonOption(p.Name, true)注册同名选项(plugin.go),插件是否生效由IsLoaded()检查全局设置中同名选项是否为true(plugin.go)。在缓冲区设置选项时,若选项名恰好匹配某个插件名,会同步触发该插件的init或deinit钩子(buffer/settings.go)。例如要禁用 linter 插件,可执行> set linter false,或写入"linter": false。
七、源码级深潜:几个值得理解的关键实现
7.1 备份机制:8 秒后台快照与崩溃恢复
backup系列选项的底层实现在 backup.go:新修改的缓冲区通过RequestBackup登记,后台协程每backupSeconds = 8秒对登记的缓冲区执行一次Backup()(backup.go)。备份写入backupdir(默认ConfigDir/backups),路径经过转义处理以避免冲突。正常关闭缓冲区时调用CancelBackup/RemoveBackup清理;但若permbackup开启或缓冲区被标记为强制保留,则备份不会被删除。崩溃后重新打开文件时,ApplyBackup检测到备份会给出提示,并提供recover(将备份作为未保存更改应用)与ignore(丢弃备份)两个选项(backup.go)。
7.2 fastdirty 与 50KB 阈值
fastdirty的实现体现了「大文件性能优先」的取舍:缓冲区大小超过LargeFileThreshold = 50000字节时强制启用 fastdirty(save.go、buffer.go)。关闭 fastdirty 时,micro 会在加载文件时计算原始哈希origHash,之后每次比对;而启用时仅靠布尔modified标志判断,速度更快但可能在撤销等操作后产生偏差(buffer/settings.go)。
7.3 无效配置的容错策略
micro 对用户配置非常宽容:任何类型错误或非法值都会被捕获并回退默认值,同时向用户给出明确的错误消息(settings.go)。此外,若settings.json解析失败,WriteSettings会拒绝写入(避免把用户手写的非法文件覆盖成空文件,settings.go),让你有机会手动修复。
7.4 相关帮助文档
- options.md:本文对应的官方选项文档(编辑器内可用
> help options打开) - commands.md:全部命令与用法(
> help commands) - colors.md:配色方案与语法高亮引擎(
> help colors) - copypaste.md:各平台剪贴板行为与配置(
> help copypaste) - keybindings.md:默认按键绑定与重绑定方法(
> help keybindings) - tutorial.md:简明上手教程(
> help tutorial)
配置体系的核心源码入口集中在 internal/config 与 internal/buffer/settings.go,按上述结构阅读即可完整掌握 micro 的选项生命周期:从settings.json解析、校验、全局/局部作用域合并,到每个选项对缓冲区、屏幕与插件的实际驱动。
- 开发工具
- CLI
【免费下载链接】micro
A modern and intuitive terminal-based text editor
相关推荐
micro 终端编辑器配置实战:settings.json、键位绑定与 init.lua 入门指南
micro 终端编辑器配置实战:settings.json、键位绑定与 init.lua 入门指南 本篇技术指南以 micro(一款现代、直观的终端文本编辑器)
开发工具CLIKubeKey 安全配置清单:保护你的 Kubernetes 集群的 10 个关键步骤
KubeKey 安全配置清单:保护你的 Kubernetes 集群的 10 个关键步骤 KubeKey 是一款强大的 Kubernetes 部署工具,支持快速搭
Streamlink 选项系统深度解析:从 Options、Argument 到 Arguments 的配置机制
Streamlink 选项系统深度解析:从 Options、Argument 到 Arguments 的配置机制 导读 streamlink.options 模
音视频
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考