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 安装有点糟糕 - 为什么不使用存储库,这样就可以轻松访问?我在页面顶部看到了红帽徽标 ;),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 换行符,通过在行尾添加两个空格,不起作用!?(Android 版本)
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 不同,后者提供 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) 网页剪辑器非常重要。如果网页剪辑器不可行,那么基于书签的 javascript 剪辑器对于书签会非常有帮助。
2) 与其他服务集成,例如 wekan ( https://www.kanbanote.com/ 的替代方案) 可能是另一个有用的选项。

再次感谢,
AJ

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

Laurent,太棒了。我刚刚把我所有的笔记本从 Evernote 切换过来。期待 Chrome 网页插件,以便更轻松地复制。
在过去一年左右的时间里,我对 Evernote 不是非常满意,因为搜索速度非常慢,几乎每次都失败。一个笔记应用程序应该把搜索做到最好。只有这样它才会受欢迎。

Creative Commons License本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。
© . All rights reserved.