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 [命令] 显示有关特定命令的信息

如果帮助信息未完全显示,请多次按 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 安装有点糟糕——为什么不使用存储库,这样更容易访问?我在页面顶部看到了一个红帽徽标 ;),而且 RPM 很容易编写。

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

你好,

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

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

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

回复 ,来自 Sam Wan (未验证)

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

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

回复 ,来自 Lazza (未验证)

嗯,Google 的 Tesseract 非常棒,它可以对图片和 PDF 文件进行 OCR。我不知道它是否可以处理旋转的文本,而 Evernote 似乎可以很好地处理。(实际例子:我让 Evernote OCR 识别了一张我用智能手机拍摄的地图照片,然后我就能够搜索街道名称了)

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

另外,题外话,很遗憾我无法通过电子邮件订阅评论,所以我可能会错过未来的回复。 :(

回复 ,来自 laurent

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

如果你们有兴趣通过 Norton 解决此警告,我还想与你们分享以下信息。

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

白名单
想要加速其新软件应用程序的声誉建立过程的软件开发人员,应向赛门铁克的白名单计划提交新的应用程序。该计划的详细信息可以在这里找到 (https://submit.symantec.com/false_positive/)。

争议
如果您认为程序被赛门铁克基于信誉的安全系统错误分类,那么您可以使用此 Web 表单提交争议(URL 已失效)。

感谢您告知我。赛门铁克过于谨慎了,因为该应用程序已签名,而且我认为微软现在已经接受该应用程序通过 SmartScreen。我已经向赛门铁克提交了一份误报报告。

回复 ,来自 John Pugh (未验证)

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

关于提交编号 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 上运行。

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

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

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

回复 ,来自 laurent

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

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

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

回复 ,来自 ron phillips

不,我打错了。我目前正在同步 Ubuntu 和 MacOS,它运行良好。我即将尝试 Windows,所以完成后我会回来查看。

回复 ,来自 laurent

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

回复 ,来自 laurent

抱歉,它最初启动时工作正常,但现在更新不稳定。我会尝试确定它们何时工作以及何时不工作。

感谢您的更新。我能想到的一个原因是,文件系统上的同步依赖于文件时间戳(与 OneDrive 不同,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 网页插件,使复制更容易。
我对 Evernote 大约一年左右的时间不太满意,因为搜索非常慢,几乎每次都失败。一个笔记应用程序应该把搜索做到最好。只有这样它才会受欢迎。

© . All rights reserved.