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 (未验证)

这非常有趣!虽然对我来说,一个杀手级功能是搜索,包括 Evernote OCR 识别的 PDF 文件和图片。不幸的是,如果没有专用的服务器端组件,这有点难以复制。

是的,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 选项对于许多企业来说也可能足够了。我的上一家雇主对所有移动和远程员工都使用了该选项。在下雪天,我可以从家访问我的办公室电脑。

您是否有任何关于同步协议的文档?我现在退休了,但我以前曾实现过 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) Web clipper 非常重要。如果 webclipper 不可能实现,那么基于书签的 javascript clipper 将对书签非常有用。
2) 与其他服务集成,例如 wekan(https://www.kanbanote.com/ 的替代品)可能是另一个有用的选项。

再次感谢,
AJ

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

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

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