新的blog写作workflow
2025-04-15
新的blog写作workflow
太棒了,你已经亲手打造出了一套专业级别的「Markdown 博客写作 + 论文管理 + 实时预览系统」⚡️
以下是你这一整条探索路线的完整总结,方便你保存为笔记或文档:
🧾 博客写作与 Markdown 实时预览系统:配置与使用总结
📌 写作目标
构建一个高效、可复用的 Markdown 写作系统,支持:
- 一键生成博客文件(含自动命名和初始内容)
- 自动在 Neovim 中打开
- 自动开启 Markdown 实时预览
- 自动打开浏览器(Safari 的 thesis profile)
- 快捷访问实时预览效果
✅ 一、基础配置工作
1. 安装 Neovim 插件 markdown-preview.nvim
使用 Lazy.nvim 插件管理器,添加如下配置:
{
'iamcco/markdown-preview.nvim',
build = 'cd app && npm install',
ft = { 'markdown' },
config = function()
vim.g.mkdp_auto_start = 0
vim.g.mkdp_auto_close = 1
vim.g.mkdp_browser = 'open -a "Safari"' -- 或 "Google Chrome"
vim.g.mkdp_port = 8080 -- 固定端口
vim.g.mkdp_echo_preview_url = 1 -- 在 Neovim 下方显示 URL
end,
}
安装依赖(一次性操作):
cd ~/.local/share/nvim/lazy/markdown-preview.nvim/app
npm install
2. 浏览器设置
- 在 Safari 创建了名为
thesis的 Profile - 将
http://localhost:8080设置为常驻预览页 - 可为该页面设置书签/快捷键,快速访问当前博客预览
⚡ 二、一键写作脚本 alias(newblog)
创建脚本文件 ~/.local/bin/newblog:
#!/bin/bash
BLOG_DIR=~/Dev/Jynxzzz.github.io/_posts
DATE=$(date +%F)
TITLE="$1"
if [ -z "$TITLE" ]; then
echo "❌ 用法: newblog \"标题内容\""
exit 1
fi
SAFE_TITLE=$(echo "$TITLE" | tr ' ' '-' | tr -cd '[:alnum:]\-_\u4e00-\u9fa5')
FILENAME="${DATE}-${SAFE_TITLE}.md"
FULLPATH="${BLOG_DIR}/${FILENAME}"
mkdir -p "$BLOG_DIR"
echo -e "## $DATE\n\n# $TITLE\n\n" > "$FULLPATH"
nvim "$FULLPATH" +"MarkdownPreview"
添加 alias 到 .zshrc:
export PATH="$HOME/.local/bin:$PATH"
alias blog='cd ~/Dev/Jynxzzz.github.io/_posts && nvim $(ls -t | head -n 1) +MarkdownPreview'
重新加载配置:
source ~/.zshrc
✍️ 三、使用方法
🆕 写新博客(含预览):
newblog 我的新博客标题
自动生成文件并打开浏览器预览:
_/_posts/2025-04-15-我的新博客标题.md
http://localhost:8080/page/1
🧭 快速打开最近博客预览:
blog
🧠 附加设置建议(可选):
- 使用 Typora 或 Obsidian 作为图文写作补充工具
- 在
.gitignore中排除临时稿:_posts/*草稿*.md - 可选扩展 Git 自动 commit + push 脚本
✅ 你已经完成的内容一览
| 功能 | 状态 |
|---|---|
newblog 脚本自动化生成博客 |
✅ |
| Neovim 实时预览插件配置完成 | ✅ |
| 端口固定 + 浏览器自动打开 | ✅ |
| Safari 快捷访问 + Profile 配置 | ✅ |
| alias 快捷打开博客 | ✅ |
| 实际成功预览博客 | ✅ |
📌 保存建议: 将这份总结保存为 .md 或 .docx 文件,也可以贴在你的 README.md 中,让未来的你感恩今天这位「愿意自己搞清楚一切」的自己。
如果你需要我生成一份排好版的文档或 PDF,直接告诉我格式,我可以生成 ✍️