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 安装有点糟糕 - 为什么不使用存储库,以便易于访问?我在页面顶部看到了红帽徽标 ;),并且 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 上运行。

最安全的选择是具有每个用户子目录的自托管服务器。但是设置我自己的 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 提供 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 非常重要。如果 webclipper 不可能,那么基于书签的 javascript clipper 将对书签非常有用。
2) 与其他服务集成,例如 wekan(https://www.kanbanote.com/ 的替代方案)可能是另一个有用的选择。

再次感谢,
AJ

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

很棒的工作 Laurent。我刚刚从 Evernote 切换了所有笔记本。期待 Chrome 网页插件,以便更轻松地复制。
我对 Evernote 大约一年左右的时间不太满意,因为搜索非常慢,几乎每次都失败。笔记应用程序应该把搜索做到最好。只有这样它才会流行。

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 获得许可。
© . All rights reserved.