Joplin 简介:一款开源 Evernote 替代品

Joplin 允许您存储和组织笔记、文件等内容,无需担心被供应商锁定。
984 位读者喜欢这篇文章。
3 text editor alternatives to Emacs and Vim

opensource.com

Joplin 是一款开源的跨平台笔记和待办事项应用程序。它可以处理大量笔记,将笔记组织到笔记本中,并在多个设备之间同步它们。笔记可以使用 Markdown 格式编辑,可以直接在应用程序内编辑,也可以使用您自己的文本编辑器编辑。每个应用程序都有一个选项可以渲染带有格式、图像、URL 等的 Markdown。任何数量的文件,例如图像和 PDF,都可以附加到笔记中,并且 笔记也可以被标记。

当 Evernote 更改其定价模式,并且因为我希望我的 4000 多条笔记以更开放的格式存储,不受任何专有解决方案的限制时,我开始开发 Joplin。为此,我开发了三个 Joplin 应用程序,全部采用 MIT 许可证:桌面版(Windows、MacOS 和 Linux)、移动版(Android 和 iOS)以及终端版(Windows、MacOS 和 Linux)。所有 应用程序都具有相似的用户界面,并且可以相互同步。它们基于开放标准和技术,包括 SQLite 和 JavaScript 用于后端,以及 Terminal Kit (Node.js)、ElectronReact Native 用于三个前端。

Joplin 优先离线使用,因此即使没有互联网连接,数据也始终可在设备上使用。

同步

创建 Joplin 时,我的目标之一是避免受制于任何特定的公司或服务进行同步。因此,它的 同步设计没有对任何特定服务的硬性依赖。大多数同步过程都在抽象级别完成,而对外部服务(如 OneDrive 或 Dropbox)的访问是通过轻量级驱动程序完成的。通过创建提供类似文件系统界面的简单驱动程序,即读取、写入、删除和列出项目的功能,可以轻松支持新服务。

可以从一项服务切换到另一项服务,甚至可以同时同步到多项服务。每个笔记、笔记本和标签,以及项目之间的关系,都在同步期间以纯文本文件传输,这意味着数据也可以轻松地移动到不同的应用程序、备份、检查等。这种同步后端的设计旨在持久耐用且面向未来。

目前,可以使用 OneDrive(默认)或本地文件系统(允许通过网络共享进行同步)进行同步。一旦 React-Native 错误 修复后,Dropbox 驱动程序也将可用。当与 OneDrive 同步时,Joplin 会在 OneDrive 中创建一个子目录,位于 /Apps/Joplin 中,并从中读取/写入笔记和笔记本。应用程序无权访问此目录之外的任何内容。

要启动 同步过程,请按照以下步骤操作

  • 桌面应用程序: 点击侧边栏中的同步按钮。系统将要求您登录 OneDrive 以授权应用程序(只需输入您的 Microsoft 凭据;您无需注册 OneDrive)。之后,应用程序将在后台运行时同步,或者您可以点击同步以启动手动同步。
  • 终端应用程序: 输入 :sync。系统将要求您点击链接以授权应用程序。之后,应用程序将在后台运行时同步。您也可以通过从终端输入 joplin sync 在用户界面之外进行同步。这可用于设置 cron 脚本以定期同步。例如,以下命令将每 30 分钟执行一次同步
    */30 * * * * /path/to/joplin sync
  • 移动应用程序: 点击同步按钮并输入您的 OneDrive 凭据。

附件

任何类型的文件都可以附加到笔记;在 Joplin 中,这些文件称为“资源”。在 Markdown 中,指向这些文件的链接表示为资源的简单 ID。在笔记查看器中,图像文件 将显示,并且 PDF、文本文件或其他类型的文件将显示为链接。点击链接将会在默认应用程序中打开该文件。

从 Evernote 导入笔记

Joplin 被设计为 Evernote 的替代品,因此它可以导入完整的 Evernote 笔记本,以及笔记、标签、资源(附加文件)和笔记元数据(例如作者、地理位置等),通过 ENEX 文件。要导入 Evernote 数据,请首先 将您的 Evernote 笔记本导出为 ENEX 文件。

要将您的笔记本导入 Joplin,请按照以下步骤操作

  • 桌面应用程序: 打开文件菜单,然后点击导入 Evernote 笔记,然后选择您的 ENEX 文件。这将打开一个新屏幕,显示导入进度。笔记将被导入到一个单独的新笔记本中(这样做是为了防止在发生错误时,笔记与任何现有笔记混淆)。如果需要,可以将它们移动到不同的笔记本,可以重命名笔记本等。
  • 终端应用程序:命令行模式 中,输入 import-enex /path/to/file.enex。这会将笔记导入到一个以文件名命名的新笔记本中。
  • 移动应用程序: 目前不支持从移动应用程序导入 Enex 文件。将 Evernote 中的笔记导入移动应用程序的方法是首先从桌面应用程序导入它们,然后与移动应用程序同步。

桌面、移动和终端应用程序的比较

这三个应用程序之间存在差异。

桌面应用程序

Joplin's desktop application

opensource.com

桌面应用程序适用于 Windows、Linux 和 MacOS。主视图显示一个侧边栏,其中包含笔记本和标签列表、笔记列表以及当前选定笔记的内容。桌面应用程序的主要区别在于笔记以双视图显示,一侧是可编辑的 Markdown 文本,另一侧是渲染后的笔记。可以通过点击工具栏中的布局按钮来仅显示笔记编辑器、仅显示视图或两者都显示。

终端应用程序

Joplin's terminal app

opensource.com

终端应用程序适用于 Windows(通过 WSL)、Linux 和 MacOS。要在 Windows 或 Linux 上安装它,请输入

npm install -g joplin

在 macOS 上,最好使用 Homebrew,并使用以下命令安装应用程序

brew install joplin

如果由于权限问题而无法安装应用程序,请确保您的 全局 npm 权限正确

要启动应用程序,请输入 joplin。这将打开用户界面,该界面具有三个主要窗格:笔记本、笔记和当前笔记的文本。还有其他面板可以通过 快捷键 切换开关。要创建新笔记,请输入 tc。要编辑笔记,请选择它并按 Enter 键。

移动应用程序

Joplin's mobile app

opensource.com

Joplin's mobile app

opensource.com

移动应用程序适用于 iOS 和 Android。与其他应用程序一样,它具有 Markdown 编辑器用于输入笔记。创建笔记后,它将显示带有格式的渲染文本。然后,您可以使用编辑返回按钮在编辑器和渲染后的笔记之间切换。笔记和笔记本可以与桌面或终端应用程序同步。

与 Joplin 交互

Joplin 的用户界面部分基于文本编辑器 Vim,并提供两种不同的模式与笔记和笔记本进行交互

  • 普通模式 允许使用 TabShift+Tab 键从一个窗格移动到另一个窗格,并使用箭头键选择/查看笔记。文本区域也可以使用箭头键滚动。按 Enter 键编辑笔记。还有其他 快捷键 可用。
  • 命令行模式 可以通过按 : 启动。从那里,可以使用 Joplin 命令,例如 mknotesearch。请参阅 完整的命令列表

虽然您可以通过标题或 ID 引用笔记或笔记本,但最简单的方法是使用以下快捷方式之一来引用当前选定的项目

快捷方式 描述
$n 引用当前选定的笔记
$b 引用当前选定的笔记本
$c 引用当前选定的项目,例如,如果笔记列表是当前活动的,则 $c 将引用当前选定的笔记。

以下是一些示例

创建标题为“Wednesday's meeting”的新笔记

mknote "Wednesday's meeting"

创建新的待办事项

mktodo "Buy bread"

将当前选定的笔记 ($n) 移动到标题为“Personal”的笔记本

mv $n "Personal"

将当前选定的笔记本 ($b) 重命名为 “Something”

ren $b "Something"

将本地文件附加到当前选定的笔记 ($n)

attach $n /home/laurent/pictures/Vacation12.jpg

也可以从命令行模式更改配置。例如,要将当前编辑器更改为 sublime text

config editor "subl -w"

获取帮助

完整的用法信息可在命令行模式下通过输入以下命令之一获得

命令 描述
help 通用帮助信息
help shortcuts 列出可用的快捷键
help [command] 显示有关特定命令的信息

如果帮助信息未完全显示,请多次按 Tab 键,直到控制台处于焦点状态,并使用箭头键或 Page Up/Page Down 键滚动文本。

标签
User profile image.
我是伦敦的一名软件工程师。热衷于开源技术,我喜欢在有空时为各种项目做贡献。您可以在 GitHub 上找到我:https://github.com/laurent22

38 条评论

Laurent,干得漂亮!

看起来很棒,有兴趣看到 AWS S3 同步解决方案 :)

感谢您的评论。下一个同步目标将是 Nextcloud,之后我将研究简化和记录同步驱动程序模型(这已经相对简单,因为它通常只是本机 API 的包装器)。这样,其他用户也许可以贡献驱动程序,包括 S3 和其他已被请求的驱动程序。

回复 ,作者:alastairhm

看起来非常有趣。有搜索功能吗,还是我错过了那部分?

是的,有:在 CLI 应用程序上,输入“/”,后跟您的搜索查询。在移动和桌面端,只需点击放大镜图标。

回复 ,作者:Vince Flynn (未验证)

您好,

这听起来是个很棒的主意,而且这个领域肯定缺少软件。但是从 NPM/brew 安装有点糟糕 - 为什么不使用存储库,这样就容易访问了?我在页面顶部看到了一个 redhat 徽标 ;),而且 RPM 很容易编写。

我也很好奇为什么选择 electron - 就我个人而言,我尽量避免使用 electron/JS 软件,因为我的电脑和移动设备比较旧,无法非常快速地处理这些软件。

你好,

对于 macOS,Homebrew 是一个很好的解决方案,尤其因为它比 npm 本身更好地管理 npm 包(恕我直言,默认 npm 设置非常糟糕,而 Homebrew 修复了这一点)。

在其他操作系统上,我同意 npm 不是分发应用程序的最佳方式,因为我遇到了很多问题。我之前尝试编写 APT(用于不同的应用程序),但由于我无法使其工作而放弃了,但我会研究 RPM。

我最初开始使用 Qt 和 C++ 开发该应用程序,但不幸的是,它们的移动前端不太好,所以我最终放弃了这个想法。另一方面,React Native 虽然远非完美,但对于获得外观相当不错的应用程序来说要好得多,而无需从头开始做所有事情。然后我使用它和 Electron 的原因是它允许我用 JS 编写所有后端,然后我可以与三个应用程序共享它并支持 5 种不同的操作系统。大概 80% 的代码在应用程序之间共享,这节省了大量时间。例如,同步和加密后端很复杂,但由于它们是共享的,我可以专注于使它们尽可能健壮,并且任何改进都将自动使所有应用程序受益。

回复 ,作者:Sam Wan (未验证)

这非常有趣!虽然对我来说,一个杀手级功能是搜索,包括 PDF 文件和 Evernote OCR 识别的图片。不幸的是,如果没有专用的服务器端组件,这有点难以复制。

是的,PDF 文件确实需要 OCR。我还没有研究过它,我想知道是否有任何好的开源选项?(即使是服务器端的,在这种情况下,用户可以选择自行托管它)。

回复 ,作者:Lazza (未验证)

嗯,谷歌的 Tesseract 非常出色,它可以 OCR 图片和 PDF 文件。我不知道它是否可以处理旋转的文本,Evernote 似乎可以很好地处理旋转的文本。(实际示例:我让 Evernote OCR 识别我用智能手机拍摄的地图照片,然后我能够搜索街道名称)

此外,Evernote 不仅 OCR 文本,而且还为每个单词保留 2 或 3 个“最有可能”的匹配项,因此搜索更容易,因为它变得类似于模糊匹配。

在一个不相关的问题上,很遗憾我无法通过电子邮件订阅评论,因此我可能会错过这里未来的回复。:(

回复 ,作者:laurent

我尝试从您的网站下载 Joplin Windows 应用程序,但我的 Norton 扫描仪收到了病毒警告,引用了 WS.Reputation.1,随后阻止了它的安装。您是否知道这个问题?

如果您有兴趣通过 Norton 解决此警告,也想与您分享以下信息。

已更新
2012 年 2 月 15 日下午 3:15:47
类型:其他
风险影响:高
受影响的系统:Windows

白名单
希望加快其新软件应用程序的信誉建立过程的软件开发人员应将新应用程序提交给 Symantec 白名单计划。该计划的详细信息可以在这里找到 (https://submit.symantec.com/false_positive/)。

争议
如果您认为某个程序被 Symantec 基于信誉的安全系统错误分类,那么您可以使用此 Web 表单提交争议(URL 不再有效)。

感谢您告知我。Symantec 过分谨慎了,因为该应用程序已签名,并且我认为 Microsoft 现在已接受该应用程序通过 SmartScreen。我已经向 Symantec 提交了一份误报报告。

回复 ,作者:John Pugh (未验证)

Symantec 现在已将该应用程序列入白名单。再次感谢您告知我!

关于提交 64146。

经过进一步分析和调查,我们已验证您的提交,因此,以下文件的检测将从我们的产品中删除

文件名:Joplin-Setup-0.10.39.exe
MD5: 0176fb217c5073470cbc9df351692cd4
SHA256: 566bd166f812cbe74441eecab9123fd74d77d68b88a4d516b6563f2227c60cd7
注意:白名单可能需要长达 24 小时才能通过 Live Update 生效

回复 ,作者:John Pugh (未验证)

看起来很棒!迫不及待想看看这个项目如何进展!

对于 OCR,请查看 Tesseract https://sourceforge.net/projects/tesseract-ocr/

我注意到 Markdown 换行符,通过在一行末尾添加两个空格,不起作用!?(安卓版本)
GFM 表格确实有效 :-)

snap 包怎么样?

我在平板电脑上安装了 Android 应用程序,但找不到同步到本地服务器的选项。我没有任何 MS-Windows 系统,因此 OneDrive 即使对于我的测试也不是可行的选项。我在我的家庭网络上有几台 Slackware 服务器可用,因此更喜欢使用其中一台。这也将为我在路上使用 VPN 时提供安全的同步选项。

是否有人构建了 Slackware 安装包或尝试过 npm2tgz 实用程序?我的所有工作站也在 Slackware 上运行。

不确定这是否适用于您的具体情况,但那里有一个与本地同步相关的线程 - https://github.com/laurent22/joplin/issues/61

除了实施 Nextcloud 支持(可以自托管)之外,我仍在考虑让应用程序在自定义设置中同步的选项。

回复 ,作者:Robert McConnell (未验证)

最安全的选择是具有每个用户的子目录的自托管服务器。但是设置我自己的 Nextcloud 服务器可能有点过头了。它应该是一个简单的服务器,带有加密驱动器,为同步添加端到端加密,并使用预共享的主密钥来保护传输中的数据。然后加密存储在设备/PC 上的数据,唯一的漏洞是实际查看的内容。即使是上述针对远程用户的 VPN 选项也可能足以满足许多企业的需求。我的上一家雇主对所有移动和远程员工都使用了 VPN。在下雪天,我可以从家访问我的办公室电脑。

您是否有同步协议的任何文档?我现在退休了,但我以前实现过 Unix 守护程序和 MS-Windows 服务。

问题不是我是否偏执,而是我是否足够偏执。

回复 ,作者:laurent

我正在同步到我的 MEGA.nz 帐户中的一个文件夹。这应该可以处理端到端加密和版本控制。到目前为止,它似乎运行良好。

当我运行其他平台时,我会进一步评论 - 在这一点上,我只安装了 MacOS 版本。

您的意思是您通过 Mega 同步了两台 macOS 计算机?如果它有效,那就太好了,是的,如果您发现任何问题,请告诉我。如果它有效,我将在文档中提及这一点,因为这将是支持任何云服务的简单方法,而无需开发特定的驱动程序。

回复 ,作者:ron phillips

不,我打错了。我现在正在同步 Ubuntu 和 MacOS,并且运行良好。我即将尝试 Windows,所以完成后我会回复。

回复 ,作者:laurent

嗯,Windows 也可以工作。我只是将任何 Joplin 桌面指向 /whatever/MEGA/joplin,然后点击“同步”。这将非常方便!感谢您的努力!

回复 ,作者:laurent

抱歉,当我刚开始时它工作正常,但现在更新不稳定。我会尝试确定它们何时工作以及何时不工作。

感谢您的更新。我可以想到的一个原因是文件系统上的同步依赖于文件时间戳(与 OneDrive 不同,后者提供 delta API 来查找已更改的内容),并且如果应用程序更改这些时间戳,可能会出现问题。

回复 ,作者:ron phillips

嗯,无论如何,这值得一试。我考虑过存储 ENEX 文件,并在每次打开桌面 Joplin 时导入它们,但我没有看到如何从 Joplin 导出它们。

这在计划中吗?

回复 ,作者:laurent

您想导出什么?我不认为将来会有导出到 enex 的选项,但是会有一个导出到 Joplin 格式的选项(它已经在 cli 工具中可用)

回复 ,作者:ron phillips

太棒了,终于有机会摆脱 Evernote 了!

Nextcloud 实现将非常棒!等待 Evernote 的良好替代品。

看起来很棒!我会尽快尝试一下,因为我已经寻找 Evernote 替代品一段时间了。Nextcloud 同步会很棒,然后我们可以自托管

感谢您的出色工作。我今天才发现 joplin,但已经非常喜欢它了!
我希望在未来的 joplin 中看到一些功能。
* 一款 iPad 应用程序,可以利用更大的屏幕。
* 在 iOS 上,joplin 应该启用“用其他应用打开”,这样就可以在其他应用中打开笔记和附件。它应该能够保存到新的 iOS 文件管理器。
* 我更希望附件/资源保留其文件扩展名,这样 windows 预览就可以用于快速查看它们以检查文件内容。特别是当您的目标之一是不锁定用户时。
* 我希望集成 cryptomator。这样,就可以将文件和附件以未加密的形式留在设备和计算机上,以便其他软件可以访问,但将其加密同步到云中。
* 在我的计算机上启用加密,然后在 ipad 中收到输入密码的消息,我本希望有一个更清晰的指示器,指示在哪里填写密码。我第二次才看到它。
* 一些用于快速格式化笔记的 GUI 按钮,例如插入一个大表格。
* 使用复制/粘贴输入照片和文本
* 调整照片大小的选项

但即使现在 Joplin 也是一款出色的软件,也是以前缺少的东西!
谢谢!

Laurent,您是英雄!!

在 Springpad 关闭大门后,我感到需要自托管的笔记系统。当我迁移到 Evernote 时,它也变成了一匹垂死的马。在这个快速变化的世界中,害怕丢失笔记和最喜欢的应用程序是真实的,而您的步骤正在减轻其中的一些。

以下是一些建议-

1) Web Clipper 非常重要。如果 Web Clipper 不可能,那么基于书签的 javascript Clipper 对于添加书签非常有用。
2) 与其他服务的集成,例如 wekan(https://www.kanbanote.com/ 的替代品)可能是另一个有用的选项。

再次感谢,
AJ

今天试了一下。通过 WebDAV 连接到外部服务器上的 OwnCloud 非常轻松。Evernote 结束了!非常感谢!你给了我们自由!

Laurent,太棒了。我刚刚从 Evernote 切换了所有笔记本。期待 Chrome Web 插件,以便更容易复制。
对于 Evernote,我已经不太满意一年左右了,因为搜索非常慢,几乎每次都失败。笔记应用程序应该将搜索做到最好。只有这样它才会受欢迎。

知识共享许可协议本作品根据知识共享署名-相同方式共享 4.0 国际许可协议获得许可。
© . All rights reserved.