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

以下是一些示例

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

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 [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

白名单
希望加速其新软件应用程序的声誉建立过程的软件开发人员应将新应用程序提交给赛门铁克的白名单程序。该程序的详细信息可以在这里找到 (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上运行。

不确定这是否适用于您的具体情况,但是那里有一个与本地同步相关的帖子 - https://github.com/laurent22/joplin/issues/61

除了实现Nextcloud支持(可以自托管)之外,我仍在考虑让应用程序在自定义设置中同步的选项。

回复 ,作者 Robert McConnell (未验证)

最安全的选择是使用自托管服务器,并为每个用户设置子目录。但是设置我自己的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) 网页剪辑器非常重要。如果网页剪辑器不可行,那么基于书签的javascript剪辑器对于添加书签将非常有用。
2) 与其他服务集成,例如wekan(https://www.kanbanote.com/ 的替代品)可能是另一个有用的选项。

再次感谢,
AJ

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

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

Creative Commons License本作品根据知识共享署名-相同方式共享 4.0 国际许可协议获得许可。
© . All rights reserved.