Joplin 简介,一款开源的 Evernote 替代品

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

opensource.com

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

当我发现 Evernote 更改了其定价模式,并且我希望我的 4,000 多个笔记以更开放的格式存储,不受任何专有解决方案的束缚时,我便开始开发 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 (未验证)

嗯,Google 的 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

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

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

感谢您告知我。赛门铁克不必要地小心,因为应用程序已签名,并且我认为 Microsoft 现在已接受该应用程序通过 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 表格确实有效 :-)

快照呢?

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

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

最安全的选择是具有每个用户子目录的自托管服务器。但是设置我自己的 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 不同,OneDrive 提供了一个增量 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.