FSNotes 完全指南:macOS 与 iOS 上的现代 Markdown 笔记管理器

发布时间:2026/10/15 19:00:07
FSNotes 完全指南:macOS 与 iOS 上的现代 Markdown 笔记管理器 桌面应用移动开发知识管理【免费下载链接】fsnotesFast Markdown note-taking app for Mac and iPhone项目地址https://gitcode.com/gh_mirrors/fs/fsnotes点击查看免费下载FSNotes 是一款用 Swift 5 编写、以 MIT 许可证开源的现代笔记管理器覆盖 macOS 与 iOS 双平台。它把每一篇笔记都保存为可移植的 Markdown 或纯文本文件而非专有数据库并在此基础上提供标签、[[双括号]]跨笔记链接、AES-256 加密、代码块语法高亮、Git 版本控制等进阶能力。读完本文你将系统掌握 FSNotes 的功能全貌、核心配置项及其背后的源码实现能够在自己的笔记工作流中快速上手并充分利用这套开源体系。一、项目概览一个原生、开放、可移植的笔记体系README_zh_CN.md开篇即点明项目定位适用于 macOS 和 iOS 的现代笔记管理器。它与传统笔记应用最大的区别在于存储形态——笔记就是磁盘上真实存在的文件没有私有数据库锁死数据。英文版README.md进一步强调了两点理念Own your notes. Find them instantly.拥有你的笔记并即时找到它们以及No lock-in无锁定任何兼容应用都能在现在或多年后打开这些笔记文件。从工程结构看整个仓库由四个可独立编译的目标组成FSNotes/macOS 应用主体包括视图层View/、偏好设置Preferences/、帮助类Helpers/与AppDelegate.swiftFSNotes iOS/iOS 应用主体含编辑器、侧边栏、设置等视图与SceneDelegate.swiftFSNotes iOS Share/iOS 分享扩展核心为ShareViewController.swiftFSNotesCore/双端共享的核心层承载业务模型、Git 实现、SwiftHighlighter 高亮引擎、预览渲染等。Resources/Initial/下还内置了 FSNotes 4.0 到 7 的变更日志、入门说明与Welcome.bundle欢迎笔记新用户首次启动即可获得引导体验。上图即 README 中文版所展示的 macOS 应用主界面仓库根目录code.png。二、macOS 应用功能特性与源码级实现README 中文版为 macOS 应用列出了 14 项核心功能以下逐项结合仓库源码展开。2.1 Markdown 优先纯文本兜底优先支持 Markdown也支持任何纯文本文件是 FSNotes 的存储哲学。在共享核心层FSNotesCore/Business/Storage.swift中allowedExtensions数组明确给出了受支持的扩展名public var allowedExtensions [ md, markdown, txt, fountain, textbundle, etp // Encrypted Text Pack ]也就是说除了.md/.markdown和任意.txt纯文本FSNotes 还支持剧本写作常用的 Fountain 格式、TextBundle 打包格式以及加密容器.etp。新建笔记的默认扩展名由UserDefaultsManagement.noteExtension决定默认值为markdown见FSNotesCore/UserDefaultsManagement.swift笔记类型则由NoteType枚举FSNotesCore/Business/NoteType.swift与Note模型的type字段承载。2.2 快速且轻量10k 笔记的架构支撑官方文档宣称应用能够流畅处理 10k 个文件。从源码结构看这一目标由多层设计共同支撑单例仓储 锁保护Storage是全局单例static public var instance内部的noteList与projects分别由NSRecursiveLock保护FSNotesCore/Business/Storage.swift避免并发读写冲突两级索引notesDict: [String: Note]提供 URL 到笔记对象的快速映射NoteMetaFSNotesCore/NoteMeta.swift与isLoadedFromCache字段表明笔记列表支持缓存树加载getCachedTree()无需每次启动全量扫描磁盘异步队列写盘plainWriter与ciphertextWriter两个OperationQueue将明文与密文写入串行化qualityOfService .userInteractive既保证响应速度又避免阻塞 UI。2.3 随处访问iCloud Drive / Dropbox 同步与多文件夹随时随地访问与 iCloud Drive 或 Dropbox 同步与多文件夹存储共同构成了 FSNotes 的存储架构。在FSNotesCore/UserDefaultsManagement.swift中storagePath的解析顺序清晰地展示了存储优先级用户自定义路径customStoragePath对应 Dropbox 等外部目录iCloud 容器iCloudDocumentsContainer通过FileManager.url(forUbiquityContainerIdentifier:)获取并自动创建Documents目录本地 Documents 目录localDocumentsContainer。每一条解析路径都会同步设置storageTypeStorageType枚举取值.none / .iCloudDrive / .local / .custom。多文件夹能力则由Project模型FSNotesCore/Business/Project.swift承担Storage.projects维护多个项目配合Helpers/SandboxBookmark.swift以 App Sandbox 书签方式持久化外部文件夹的访问授权实现跨目录管理。2.4 键盘为中心的操作体验README 明确说明这一设计受 nvalt 启发——提供键盘为中心的控件和快捷键。仓库中FSNotes/Helpers/GlobalShortcut.swift实现了全局快捷键的注册与触发配合ViewControllerMenu.swift中的菜单命令体系用户可以在不碰鼠标的情况下完成新建、切换、搜索、标记等高频操作。2.5 代码块内语法高亮超过 170 种编程语言代码块高亮是 FSNotes 的一项标志性能力。仓库内置了独立的SwiftHighlighter引擎FSNotesCore/SwiftHighlighter/SwiftHighlighter.swift其设计要点包括语言定义文件FSNotesCore/SwiftHighlighter/Languages/目录下包含 35 个语言定义源文件Swift.swift、Python.swift、JavaScript.swift、Go.swift、Rust.swift、Mermaid.swift等每个定义文件通过别名aliases机制注册多个语言名称最终支撑官方文档宣称的 170 语言覆盖内置主题FSNotesCore/SwiftHighlighter/Themes/提供 6 套配色Atom One Dark/Light、GitHub Dark/Light、Solarized Dark/Light通过偏好设置中的codeTheme键名codeTheme2025切换默认开启codeBlockHighlight配置默认值为true代码字体默认Source Code ProcodeFontName字号跟随codeFontSize。2.6 内联图片支持笔记中的图片可以在编辑器中直接内联渲染。FSNotesCore/ImagesProcessor.swift与FSNotesCore/Extensions/URLImage.swift负责图片的解析与处理Note模型中的imageUrl: [URL]?与attachments: [URL]?保存关联的媒体资源。相关显示配置包括imagesWidth内联图片宽度默认 450、hidePreviewImages预览中隐藏图片默认 false以及MarginSizeKey等布局参数。2.7 标签组织与[[双括号]]跨笔记链接标签FSTagFSNotesCore/Business/FSTag.swift与Note.tags、Storage.tags共同构成标签体系支持在侧边栏中按标签聚合筛选笔记跨笔记链接[[双括号]]语法的处理位于FSNotesCore/NotesTextProcessor.swift的convertAppLinks(in:)方法。其工作流程是把[[Link Title]]转换成内部 URL Schemefsnotes://find/形式的 Markdown 链接URL 编码后的标题作为查询参数并在富文本中挂接.link属性点击后由AppDelegateURLRoutes.swift路由到搜索并定位目标笔记。代码中同时通过getSpanCodeBlockRange排除代码块内的伪链接避免误转换。2.8 弹性两窗格视图与外部编辑器布局切换horizontalOrientation存储键isUseHorizontalMode控制笔记列表与编辑区是垂直并排还是上下排列默认值为false垂直布局。切换时源码会清理旧的NSSplitView分栏缓存水平模式下将cellSpacing重置为 0列表单元格自适应高度垂直模式则移除该键恢复默认行距 33见UserDefaultsManagement.swift。对应的分栏视图为FSNotes/View/EditorSplitView.swift与SidebarSplitView.swift外部编辑器externalEditor配置项默认值为系统TextEdit用户可指定任意外部编辑器打开笔记。外部修改之所以能与 UI 实时同步依赖FSNotes/Helpers/FileSystemEventManager.swift与FileWatcher.swift实现的文件系统事件监听——一旦外部编辑器保存文件应用立即感知变更并刷新界面。2.9 置顶、快速复制与暗黑模式置顶Note.isPinned是笔记模型的原生字段Storage.loadPins(notes:)在加载阶段统一恢复置顶状态快速复制将笔记内容一键复制到剪贴板仓库Resources/目录中copy.png/copy_white.png即为对应工具栏图标暗黑模式FSNotes/Extensions/NSAppearance.swift提供外观适配扩展FSNotesCore/Business/AppearanceType.swift定义外观类型枚举偏好设置中的appearanceType键控制明暗外观跟随系统或手动切换。2.10 AES-256 加密加密是 FSNotes 最受关注的特性之一。实现要点如下算法与容器加密基于 RNCryptor 库import RNCryptor见FSNotesCore/Business/Note.swift对笔记正文执行带口令的 AES-256 加密加密笔记以.etpEncrypted Text Pack容器保存对应NoteContainer.encryptedTextPackFSNotesCore/Business/NoteContainer.swift加解密流程Note.swift中的encrypt(password:)与decrypt(password:)分别用RNCryptor.encrypt(data:withPassword:)/RNCryptor.decrypt(data:withPassword:)完成解密后的容器会落到临时目录decryptedTemporarySrc关闭时清理口令与钥匙串FSNotesCore/KeychainPasswordItem.swift与KeychainConfiguration.swift将口令安全地存入系统 KeychainmasterPasswordHint提供口令提示锁定策略UserDefaultsManagement.swift中lockOnSleep、lockOnScreenActivated、lockAfterIdle、lockOnUserSwitch等键默认均为true控制应用在系统休眠、锁屏、闲置、切换用户等场景自动重新锁定加密内容还可配合allowTouchID使用 Touch ID 解锁加密文件夹Project模型提供isEncrypted与encrypt(password:)/decrypt(password:)方法FSNotesCore/Business/Project.swift支持对整个文件夹批量加密。2.11 Mermaid 与 MathJax 支持Mermaid 流程图与 MathJax 数学公式的渲染由 WebKit 预览层完成FSNotesCore/MPreviewView.swift基于WKWebView实现预览并通过WKUserContentController注册了checkbox、open、quicklook、scrollPosition、clipboard等 JavaScript Bridge 处理器实现预览与编辑器的双向交互预览模板与静态资源位于Resources/MPreview.bundle/index.html、main.css、styles/、js/数学公式渲染开关为mathJaxPreview配置项Mermaid 同时获得语法高亮支持FSNotesCore/SwiftHighlighter/Languages/Mermaid.swift。2.12 可选的 Git 版本控制与备份FSNotes 内置了一套完整的 Git 客户端实现在仓库FSNotesCore/Git/下按 libgit2 的 C API 结构组织import Cgit2仓储层repository/RepositoryOpen.swift通过git_repository_open打开仓库、RepositoryCommit.swift、RepositoryLookup.swift、RepositoryManager.swift对象模型层branch/、commit/、tag/、tree/、blobcommons/Blob.swift、reference/工作流层index/、status/、diff/、revision/含FileHistoryIterator文件历史遍历、remote/认证层authentication/支持密码认证与 SSH 密钥认证KeyAuthentication.swift、PasswordAuthentication.swift。上层能力由FSNotesCore/Extensions/ProjectGit.swift、StorageGit.swift与FSNotes/ViewControllerGit.swift提供配合偏好设置中的autoVersioning自动版本提交、askCommitMessage、gitStorage、gitOrigin、gitUsername/gitPassword、gitPrivateKeyData、gitPasspharse、separateRepo、cacheDiff等键UserDefaultsManagement.swift的Constants用户既可以按需手动提交也可以开启自动版本控制把笔记库变成可回溯的 Git 仓库。PreferencesGitViewController.swift提供了完整的 Git 设置界面。三、iOS 应用与桌面端保持一致的移动体验README 中文版为 iOS 应用列出了 10 项功能全部对应仓库FSNotes iOS/中的实现iCloud Drive 同步与 macOS 端共用storageType与 iCloud 容器解析逻辑FSNotesCore/UserDefaultsManagement.swift保证双端笔记一致3D Touch 与可配置键盘ShortcutIdentifier.swift支持主屏快捷操作defaultKeyboard配置项允许自定义键盘布局TextBundle 与 EncryptedTextBundle 容器NoteContainer枚举FSNotesCore/Business/NoteContainer.swift在双端通用textBundle/textbundleV2/encryptedTextPack三种容器在 iOS 端同样生效置顶笔记与桌面同步置顶状态通过NSUbiquitousKeyValueStoreUserDefaultsManagement.global在 iCloud 键值存储中同步loadPins(notes:)在两端恢复动态字体与暗黑模式View/NoteCellView.swift、Extensions/UIColor.swift、UITextView.swift等提供字体适配与外观支持分享扩展FSNotes iOS Share/ShareViewController.swift实现从 Safari 等应用一键存入笔记加密笔记与加密文件夹与 macOS 共用RNCryptor加解密链路SecurityViewController.swift提供口令与锁定设置Git 集成iOS 端同样通过共享的FSNotesCore/Git/封装获得提交、历史、远程仓库能力GitViewController.swift网页创建ViewControllerWebApi.swift与UserDefaultsManagement中的CustomWebServer、SftpWeb、SftpHost/SftpPort/SftpPath等键表明支持通过自定义 Web 服务/SFTP 通道从网页端创建笔记。iOS 端界面截图Resources/Screens/fsnotes-ios.jpg。四、核心配置项速查UserDefaultsManagement 中的关键默认值FSNotes 的全部偏好设置集中在FSNotesCore/UserDefaultsManagement.swiftmacOS 使用UserDefaults.standardiOS 使用 App Groupgroup.es.fsnot.user.defaults部分跨设备键走NSUbiquitousKeyValueStore。下表整理了 README 各功能背后最常用的配置项及其默认值配置项默认值对应功能externalEditorTextEdit外部编辑器打开笔记horizontalOrientationfalse垂直两栏弹性两窗格布局cellSpacing33水平布局时为0笔记列表单元格间距codeBlockHighlighttrue代码块语法高亮codeFontNameSource Code Pro代码字体imagesWidth450内联图片宽度hidePreviewImagesfalse预览中隐藏图片lineWidth1000编辑器行宽lineHeightMultiple1.4行高倍数editorLineSpacingmacOS4/ iOS6编辑器行距previewFontSize11预览字号noteExtensionmarkdown新建笔记扩展名sort.modificationDate笔记排序SortBy.swiftpreviewfalse渲染预览模式mathJaxPreview—MathJax 公式渲染lockOnSleep/lockOnScreenActivated/lockOnUserSwitchtrue加密笔记自动锁定autoVersioning—Git 自动版本提交showInMenuBartrue菜单栏常驻五、许可证与特别鸣谢FSNotes 使用Swift 5编写采用MIT 许可证开源仓库根目录LICENSE与CODE_OF_CONDUCT.mdApp Store 购买支持其持续开发。README 中文版特别鸣谢 zcohanSoulver 的作者提供的 SoulverCore 框架用于实现笔记中的简单内联计算能力。六、小结从这份 README 出发可以看到FSNotes 的技术内核清晰而克制用真实文件承载笔记、用标准库与成熟组件RNCryptor、libgit2、WKWebView、自研 SwiftHighlighter构建能力。macOS 端强调键盘效率、多存储与 Git 版本化iOS 端强调同步、加密与分享而FSNotesCore共享层保证了双端行为一致。对于想搭建自有笔记体系的开发者FSNotesCore/UserDefaultsManagement.swift的配置矩阵、Storage.swift的仓储设计以及Git/目录的 libgit2 封装都是可以直接借鉴的现成范本。仓库根目录另提供英文版README.md与繁体中文版README_zh_TW.md可对照阅读。赞分享桌面应用移动开发知识管理【免费下载链接】fsnotesFast Markdown note-taking app for Mac and iPhone项目地址https://gitcode.com/gh_mirrors/fs/fsnotes点击查看免费下载相关推荐FSNotes现代笔记管理器的终极入门指南FSNotes现代笔记管理器的终极入门指南 在数字化时代寻找一款既强大又简洁的笔记应用至关重要。FSNotes作为macOS/iOS平台上的现代笔记管理器桌面应用移动开发知识管理FSNotes现代化的笔记管理工具FSNotes现代化的笔记管理工具 项目基础介绍和主要编程语言 FSNotes 是一个现代化的笔记管理工具专为 macOS 和 iOS 平台设计。该项目主要桌面应用移动开发知识管理推荐FSNotes——跨平台的现代笔记管理器推荐FSNotes——跨平台的现代笔记管理器 项目简介 FSNotes 是一款专为 macOS 和 iOS 设计的现代化笔记管理工具以其高效、轻量级和功能强桌面应用移动开发知识管理创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询