一个适合程序员的 Markdown 文档编辑和文档管理方案

我是一个重度的 Markdown 用户。长时间使用过 Day OneUlysses、MacDown,如你所料,最终都放弃了。

坦率讲,Day One 和 Ulysses 是你一打开就会觉得非常惊艳的产品,设计上侧重写作者的主观感受和体验,在细节的打磨上非常到位。但是 Day One 的代码质量实在一般,很多闪退 bug 经常把你的写作热情消灭得荡然无存,且没有一个像样的文档管理功能。Ulysses 虽然有文档管理功能,UI 更加惊艳,尤其是沉浸模式非常吸引人,让你觉得在使用艺术品写作,当然,也会让你产生使用它写作能够提高写作质量的错觉😂 不过,Ulysses 的文档管理和编辑设定更偏向于普通小白用户。这个本身是没有问题的,因为它的定位是让你享受写作,尽可能少的减少其他方面对用户的打扰。显然,作为一个经常需要从源代码级别去修改文档的用户来说,它的这种好意被我当成了一种功能的羸弱。

在很长一段时间内都没有找到满意的 Markdown 软件。于是,索性用回了只有简单编辑功能的 MacDown,同时也在摸索和完善适合自己使用习惯的 Markdown 文档管理和编辑方案。我理想中的 Makrdown 文档管理方案是这样的:

  1. 源代码级的 Markdown 文档编辑能力;不看重所见即所得的功能,且不能接受只提供所见即所得的编辑能力;
  2. 符合开发人员习惯的文档管理能力,像管理源代码一样管理我的 Markdown 文档,随时查找、编辑。
  3. 如果能够支持文档历史版本管理就更棒了。
  4. 成本不要太高,最好是免费的。

不卖关子,先说当前自己用下来比较舒服的方案:Visual Studio Code + Markdown Shortcuts + markdownlint + Bitbucket, 满足自己以上的所有需求,且成本为 0 .

选择 Visual Studio Code 作为编辑器是因为可以把自己写代码的那套文件查找和管理习惯继承过来,并且不需要重新学习和熟悉快捷键。 VS Code 本身支持 Markdown 文档编辑和预览,遗憾的是它的这两个功能都不强大,达不到自己快糙猛的要求。预览功能自己并不看重,因此选择性安装了两个插件(Markdown Shortcuts + markdownlint)来增强其编辑功能。

Markdown Shortcuts 提供了很多编辑 Makrdown 文档的风骚快捷键。我自己常用的有:

  • 快速转换成列表:

  • excel 表数据转表格:

其他命令如下:



markdownlint 则是一个语法检查 lint 工具。虽然 Markdown 语法很简单,但是因为经常编辑源代码和插入 html 代码,有一个 lint 还是能够辅助你提前发现很多 typos.

得益于 VS Code 强大而丰富的插件生态,Markdown 周边的各种功能都能通过这些插件解决,只有你想不到,没有插件没做到的。比如,如果你想导出文档为 PDF,你可以尝试 Markdown PDF; 如果你是数据公式重度用户,你可以使用 Markdown+Math
.

Bitbucket 则是用 git 来做文档的历史版本管理,免费,且支持私有仓库。如此一来,基本上编辑 Makrdown 与编写项目代码的有了相同的使用体验。

小结

习惯这东西本身就是个性化化的东西,并且一旦适应了就很难改变。以上方案只是一个我自己比较舒服的使用习惯。这个方案并不完美,比如它并没有考虑 Markdown 重度图片用户插图的效率问题。另一方面,Evernote 大陆版发布的新版本已经开始支持 Markdown 文档功能(国际版不支持哟)。如果,你是印象笔记的铁粉,不妨一试。

移除 macOS 中被企业策略强制安装的 Chrome 插件扩展的方法

公司配发的 Macbook 安装了一些监控软件,毕竟是办公设备,这点倒是无可厚非。但是,其中的 Forcepoint DLP Endpoint 会向日常使用的主力浏览器 Chrome 中安装一个 WebsenEndpoint 的扩展插件。

这个插件的作用不必多说,但是有一个副作用就是让 Chrome 无法自动填写任何网站用户名密码。每天要输入上百次的密码这种体力活是绝对不能忍受的。于是尝试卸载这个插件。但是这个插件是使用企业策略 (Installed by enterprise policy) 强制安装,无法在Chrome中下载。但是可以通过将与之关联的 Profile 删除实现卸载的作用:

但是过两天,Forcepoint 又会把这个插件装回来😂 不过没关系,我们有的是办法。

方法一:通过占用 Chrome 插件文件位置,防止真正插件重新装回

原理是这样的:Chrome 的插件安装在 ~/Library/Application Support/Google/Chrome/Default/Extensions 目录下:

除去 Temp, 每个文件夹对应一个插件。我们希望移除的插件的文件夹名称是 kmofofmjgmakbbmngpgmehldlaaafnjn。由于 macOS 文件夹下,相同名称的文件和文件夹只能存在一个。因此,我们只需要在插件删除以后,在这个目录下新建一个名称为 kmofofmjgmakbbmngpgmehldlaaafnjn 的空文件:

然后,再通过文件系统的 Lock 功能锁定改文件,防止该文件被 Forcpoint 删除:

至此,大功告成,so easy!

方法二:修改 Forcepoint DLP Endpoint 插件安装脚本,禁止强奸 Chrome

法一虽然可以防止Chrome被重新安装插件,但是过几天以后,你会在你的 Profiles 配置下发现,虽然 Chrome 插件安装失败了,但是依然会成功安装这个 Profile:

虽然不会干扰系统的任何功能,但是估计很多强迫症患者看到这个还是挺难受的……从图中我们可以看到,这个插件的路径在 /Library/Application Support/Websense Endpoint/DLP:

其中 setup_chrome_ext.sh 就是强插 Chrome 的脚本:

脚本写得简单粗暴:通过 $PROFILES -I -F "/Library/Application Support/Websense Endpoint/DLP/WebsenseEndpointExtension.config" 向系统强行安装 profile. 要防止其安装插件,把这行代码删除即可。但是,这个文件是属于 admin 用户组的,我们平时使用的账号,即使集合 sudo 也只是 wheel 用户组,是干不过 admin 的,导致我们无法在正常模式下编辑该文件:

因此,我们需要通过 Command (⌘)-R 重启到恢复模式,然后在 /Volumes/mac.os/Library/Application Support/Websense Endpoint/DLP 目录下,将对应代码删除即可。

至此,自己基本满意了🤔

后记

稍微浏览了一下 /Library/Application Support/Websense Endpoint 文件夹,发现其实这个软件不仅强插 Chrome, 还会强插 FireFox:

艾玛……proxy…吓死宝宝了,已经不想改脚本了。直接在恢复模式下删除文件,然后用方法一的方法,建了一个 Lock 文件锁定这个位置。什么,还有 upgrade.sh? 你怎么不上天呢,也一并删除了……突然想起,自己在无所不能的恢复模式下,要不整个软件一起删除了?想到隔天IT技术小哥可能过来找麻烦,就此打住吧😂

炎热焦灼的八月

显然,看到这个题目的时候,说明拖延症又犯了。

这个月天气炎热,个人也进入了一个相对焦灼的状态。从心里深刻的知道这不是一件坏事,只是当前面临的问题和挑战是需要去直面并迅速解决。

这个月最大的感慨是在「专注」上做得不够。导致很多事情都在上下文切换的过程中被肢解的支离破碎,完全没有了初心,当然离预期也就相去甚远了。

与之关联的另一个做得不好的点是「效率」。在思维体力上,自我感觉已经进入一个相对强韧的阶段,但是在解题效率上依然让自己常有隐忧。今天在路上,看了达里奥《原则》的个人生活部分。挺有启发的,他讲个人生活愿景的追求实现划分成5个阶段,每个阶段有给出了不同的原则。自我对照检查,我觉得自己在认清问题本质以及规划上面是存在严重问题的。导致问题主体识别出现偏差或错误,而规划上又没有达到完全开放大脑的状态,因此,无论是在视角高度还是做事深度上都深陷泥潭。

这个月尝试换一种心态和姿态与最爱的人相处。虽然依然做不到大脑完全开放的状态,但是意外的发现其实当我尝试这样去做的时候,至少我已经放下潜意识中的自我,不在用这种潜意识做一些理所当然的决定,然后筛选证据,去印证满足自己内心的欲望和幻想。妞儿给了自己机会让自己开了一个好头,期待自己后面的改变。

本月推荐的电影当然是《蚁人2》,因为这是这个月看过的唯一一部电影。适度的夸张而不荒谬,沉重的剧情总是用暖心的美式幽默裹挟,彩蛋中巧妙的与复联结合,这三点应该是本片让自己最喜欢的点。如果你还没去电影院,推荐你去看看。

本月推荐的书毫无疑问是《原则》。应该说这本书红黑的精装版本在很大程度上是可以让你在公共场所作为小资的装X读物的。但是,我觉得这本书的很多书评的确有点过誉这本书了。书的确不错,不过作者依然没有能够摆脱为了写一句话而堆砌一个章节的问题。并且,本质上,这其实就是大家口中最正宗的心灵鸡汤类读物。我并不反对心灵鸡汤,我只是很难理解为什么很多人总是向你表达自己不屑于心灵鸡汤读物的同时却认为《原则》是一本高大上的书。

就我个人而言,《原则》毫无疑问是一本让我受益匪浅的书。它让我自查出了很多自己以前认为理所当然的点,虽然我不一定完全同意其建议的原则和行事方式。但是,的确让我开始重新思考和认识一些事情。这与之前看到的陆奇给后辈的原则其实是相互呼应的:陆奇成功背后的故事:决定人生高度的,是这 7 条原则
。陆奇的给出的这些原则非常具体,但是做起来非常不易,摘录如下,以自勉:

  • 坚守价值观(坚持做对的事情)
  • 永远正能量
  • 高度自律
  • 每天学习
  • 把公司的事当成自己的事
  • 从我做起
  • 谦逊真诚

明天会认识很多优秀的新同学,带着小小的焦虑感,但一下能结识如此多有意思的灵魂,依然非常期待。