超高颜值+丝滑体验+多端同步,技术人Markdown笔记的最佳实践

前言

本篇是一个小的经验篇,介绍下我平时用什么工具写笔记写文章的。

现在写东西当然主推 Markdown 语法了,比富文本要方便太多,现在大多数新闻博客类平台应该都支持Markdown的语法,即使不支持 Markdown 转富文本的方式也非常多,总之用Markdown写东西,简单、灵活、跨平台,对普通人来说上手成本低,对技术人更是不二之选,如果你还不知道什么是Markdown,那赶紧去了解下吧,Markdown官方教程

我是 Markdown 的重度使用者,平时无论是记笔记还是写文章基本每天都离不开,所以我对Markdown编辑器有比较高的使用需求。

需求

我需要写东西主要有以下几种场景:

  1. 工作记录
  2. 记录技术相关笔记
  3. 写文章,主要是技术类
  4. 技术之外的笔记(比如菜谱、旅游攻略、生活备忘)

所以对于工具有以下需求:

多端同步

  • 主要是公司办公电脑,和家里的个人电脑要同步,其次是pc端,ipad,手机同步

编辑体验

  • 编辑体验非常重要,用Markdown语法写,正常会有编辑区和预览区这种是体验最差的,一些优秀的编辑器会将两种融合一起,减少语法使用成本增强视觉效果。

视觉效果

  • 好的视觉效果大大增强阅读体验

插入图片

  • 文章里经常会夹带图片,图片如果存储在本地就会比较麻烦

Typora 最好用的 Markdown 编辑器

Markdown编辑器我尝试过非常多这次我只推荐一个,就是Typora,毫不夸张的说用了这么久,我没见过有其他哪个md编辑器的编辑体验和视觉效果是比他做的更好的了。

美中不足的就是Typora 现在已经收费,15美元一次买断不算便宜,以前免费的时候我一直用,收费后我用过一段时间其他的,因为以前写东西的需求没有这么多,现在写的多了Typora在写作体验上确实有很大帮助。

优点

  • 编辑即所见的编辑体验
  • 美观的样式
  • 丝滑流畅的体验
  • 可完全扩展的主题(官网有大量样式主题,或者完全自己开发css样式)
  • 收费后迭代的版本体验更加流畅舒适了

缺点

  • 收费,15美元买断
  • 纯本地编辑器,没有联网功能,无法做到多端同步

Typora收费后,我改用了有道云笔记,因为当时用起来体验还行,主要能通过账号多端联网同步,在pc和手机端都有不错的编辑体验。

但是我现在不得不公平公正的说一下现在的有道云笔记就是一坨💩。一大堆乱七八糟的内容,各种推广广告,操作卡顿慢半拍,打开个笔记 loading 几秒,炒个菜翻一翻记得菜谱菜都糊了。劝大家尽量不用。过阵子可能广告直接插你笔记里,整个看广告解锁笔记,太恶心了。枉我开过一年会员,越来越垃圾。

Typora 自定义主题样式

Typora 官网有大量主题可供选择,如果没有满意的还可以通过写css的方式完全自定义主题。

我在一个现有主题基础上,fork出一份,根据自己的喜好稍加改动,写了个新主题,欢迎使用。反正我觉得这个视觉效果我写东西是很舒服的。

特点

  • 深色主题,符合编码习惯的vscode样式风格。
  • 自适应加宽了内容编辑区,宽屏体验更好。
  • 色彩舒适,视觉体验好

具体可看:github地址:https://github.com/wwenj/typora-NB-theme

示例图

Typora 图片自动上传

Typora 对于文内的图片有多重解决方案,允许你在插入图片时自定义做一些操作,比如将所有图片放到统一目录下,或者统一上传图床。

通常来讲上传图片是最方便的,Typora 提供多种上传图床相关服务,只需要本地简单配置下就好了,具体请看:官方文档,图片上传到图片非常有利于内容的传播,要迁移到其他平台直接复制就好了。

Typora 跨端同步

Typora 只是个本地编辑器是没办法实现跨端的,那云端存储的问题只能自己解决,可以上传github、云盘、其他云端存储、甚至自建服务。

以我的经验这种要长久使用的东西,越简单越好,最简单的当然就是上传到 github 上,上传 github 对技术人员来讲非常简单,但有个很常见的问题就是很容易忘记提交,比如你在公司忘记提交,回家想继续写那就很难受了。

本地脚本同步

自动同步到 github 很简单写个脚本,定时每隔一小时自动上传一次,这个脚本一直在后台跑着就可以了,能完全避免忘记提交的问题。

javascript 复制代码
// git_auto_push.js
const { exec } = require('child_process');
const path = require('path');
​
const repoPath = '~/Desktop/myNode'; // 请替换为您的Git仓库路径
​
const pullAddCommit = () => {
    exec(`cd ${repoPath} && git pull && git add . && git commit -m "AUTO_PUSH"`, (error, stdout, stderr) => {
        if (error) {
            console.log('内容push失败:\n' + stderr);
        } else {
            console.log('内容push成功\n');
            console.log(stdout);
        }
    });
};
​
// 每小时执行一次
setInterval(pullAddCommit, 1000 * 60 * 60);
// 启动时立即执行一次
pullAddCommit(); 
​

开机自启动脚本

虽然脚本可以避免忘记提交,但是你可能忘记启动脚本,所以将脚本启动放在电脑的开机自启里,这样就永远不可能忘记同步了。我用 mac 为例将该脚本放到开机自启动执行。

  • 创建一个plist文件(例如:com.node.gitautopush.plist)并放置在 ~/Library/LaunchAgents/ 目录下。
  • 这个plist文件应该包含如下内容:
xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.node.gitautopush</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/local/bin/node</string>
        <string>/Users/name/Desktop/myNote/push.js</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>StandardErrorPath</key>
    <string>/tmp/com.node.gitautopush.err</string>
    <key>StandardOutPath</key>
    <string>/tmp/com.node.gitautopush.out</string>
</dict>
</plist>
​
  • 打开终端并执行以下命令来加载任务:

    bash 复制代码
    launchctl load /Users/name/Library/LaunchAgents/com.node.gitautopush.plist

加入自启动任务前你一定要在命令行测试,保证该脚本能正常执行。

这样我们就完成了pc端的多端同步,并且没有任何心智负担。

手机端同步

Typora 是没有手机端的,所以手机端我就直接使用 Github App,Github 对于 Markdown 语法的渲染效果其实是很棒的,只不过如果有编辑的需求会稍微麻烦点,但也没办法,手机端去写 Markdown 本身就不太方便,而且我在手机是很少去专门写长文,很多时候只是记一些零散的东西,所以对我来说实际影响并不大。

总结

本文介绍了通过Typora编辑器 、自定义主题、上传图床、Github、自动化同步实现一套用 Markdown 语法写记录的最佳实践,唯一美中不足就是在手机端确实没有好的方式编辑 Markdown 。希望对你有帮助,如果你有更好的方式,也欢迎在评论区交流。

原创声明

原创文章,转载请注明作者和文章原链接 阿祖zu

相关推荐
dr李四维8 分钟前
iOS构建版本以及Hbuilder打iOS的ipa包全流程
前端·笔记·ios·产品运营·产品经理·xcode
雯0609~29 分钟前
网页F12:缓存的使用(设值、取值、删除)
前端·缓存
℘团子এ32 分钟前
vue3中如何上传文件到腾讯云的桶(cosbrowser)
前端·javascript·腾讯云
学习前端的小z38 分钟前
【前端】深入理解 JavaScript 逻辑运算符的优先级与短路求值机制
开发语言·前端·javascript
彭世瑜1 小时前
ts: TypeScript跳过检查/忽略类型检查
前端·javascript·typescript
FØund4041 小时前
antd form.setFieldsValue问题总结
前端·react.js·typescript·html
Backstroke fish1 小时前
Token刷新机制
前端·javascript·vue.js·typescript·vue
小五Five1 小时前
TypeScript项目中Axios的封装
开发语言·前端·javascript
小曲程序1 小时前
vue3 封装request请求
java·前端·typescript·vue
临枫5411 小时前
Nuxt3封装网络请求 useFetch & $fetch
前端·javascript·vue.js·typescript