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 将引用当前选定的笔记。

以下是一些示例

创建标题为“星期三会议”的新笔记

mknote "Wednesday's meeting"

创建一个新的待办事项

mktodo "Buy bread"

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

mv $n "Personal"

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

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

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

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

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

回复 ,作者:laurent

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

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

已更新
February 15, 2012 3:15:47 PM
类型:其他
风险影响:高
受影响的系统: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 换行符,通过在一行末尾添加两个空格,不起作用!?(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 不同,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 与外部 sefvervia 的 OwnCloud 连接非常轻松。Evernote 就此结束了!非常感谢!您给了我们自由!

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

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