Terminal 插件高级使用案例
本文介绍 Terminal 插件的进阶配置,涵盖自动化脚本、多终端协作、项目特定配置和高级 Shell 技巧。
自动化脚本
每日工作流脚本
bash
#!/bin/bash
# daily-workflow.sh - 每日工作流自动化
# 进入今日日记目录
cd ~/Vault/Journal/Daily
# 创建今日日记(如不存在)
TODAY=$(date +%Y-%m-%d)
if [ ! -f "${TODAY}.md" ]; then
cp ~/Vault/Templates/Daily.md "${TODAY}.md"
echo "已创建今日日记: ${TODAY}.md"
fi
# Git 自动提交
cd ~/Vault
git add .
git commit -m "Daily: $(date '+%Y-%m-%d %H:%M')" 2>/dev/null
# 显示结果
echo "=== 今日状态 ==="
echo "日记: ${TODAY}.md"
git log -1 --onelineObsidian Shell Commands 集成
安装 Obsidian Shell Commands 插件后,可直接在命令面板运行脚本:
bash
#!/bin/bash
# update-index.sh - 更新笔记索引
cd ~/Vault
# 统计各类文件
echo "=== 笔记统计 ===" > Reports/index.md
echo "" >> Reports/index.md
echo "| 类型 | 数量 |" >> Reports/index.md
echo "|------|------|" >> Reports/index.md
echo "| Markdown | $(find . -name '*.md' | wc -l) |" >> Reports/index.md
echo "| 图片 | $(find . -name '*.png' -o -name '*.jpg' | wc -l) |" >> Reports/index.md
echo "| 附件 | $(find . -name '*.pdf' | wc -l) |" >> Reports/index.md
echo "索引已更新"多终端协作
分屏终端布局
javascript
// 使用 Obsidian Workspace 插件配置多面板
module.exports = {
layout: {
left: {
width: "30%",
children: [
{ type: "file-explorer" },
{ type: "terminal", shell: "bash" }
]
},
center: {
children: [
{ type: "editor" }
]
},
right: {
width: "30%",
children: [
{ type: "terminal", shell: "zsh" },
{ type: "terminal", shell: "powershell" }
]
}
}
};多终端同步
在多个终端标签中同步执行命令:
bash
# 在所有标签中执行相同命令
# Ctrl+Shift+L 选择「发送到所有标签」
git status
npm run build项目特定配置
.obsidianrc 配置
在项目文件夹中创建 .obsidianrc:
bash
# .obsidianrc for project-a
# 自动进入项目目录
PROJECT_DIR="04 - Projects/Project A"
cd ~/Vault/$PROJECT_DIR
# 设置快捷别名
alias pa="cd ~/Vault/$PROJECT_DIR"
alias pt="cd ~/Vault/$PROJECT_DIR/tests"
alias pd="cd ~/Vault/$PROJECT_DIR/docs"
# 自动激活虚拟环境
if [ -f "venv/bin/activate" ]; then
source venv/bin/activate
fi
# Git 自动提示
echo "Project A 目录"
git status -s条件启动脚本
bash
#!/bin/bash
# init-terminal.sh - 终端启动时根据目录执行不同配置
CURRENT_DIR=$(pwd)
if [[ "$CURRENT_DIR" == *"Journal/Daily"* ]]; then
echo "📅 日记模式"
alias today="ls -t *.md | head -1"
alias new="nvim $(date +%Y-%m-%d).md"
elif [[ "$CURRENT_DIR" == *"Projects"* ]]; then
echo "🗂️ 项目模式"
alias status="git status"
alias log="git log --oneline -10"
elif [[ "$CURRENT_DIR" == *"Archive"* ]]; then
echo "📦 归档模式"
alias clean="find . -name '*.tmp' -delete"
fi高级 Shell 技巧
Obsidian API 调用
bash
#!/bin/bash
# obsidian-api.sh - 通过 Obsidian URI 调用 API
# 获取笔记列表
obsidian://vault/VaultName?vault=VaultName
# 搜索关键词
obsidian://search?query=关键词
# 打开指定笔记
obsidian://open?vault=VaultName&file=笔记名称
# 创建新笔记
obsidian://new?vault=VaultName&path=路径/笔记名称.mdGit Hooks 集成
bash
#!/bin/bash
# .git/hooks/pre-commit - 提交前检查
# 检查是否有未保存的笔记
UNCOMMITTED=$(git diff --name-only | grep '\.md$' | wc -l)
if [ $UNCOMMITTED -gt 0 ]; then
echo "📝 发现 $UNCOMMITTED 个未提交的笔记"
git diff --name-only | grep '\.md$'
fi
# 检查笔记格式
for file in $(git diff --cached --name-only | grep '\.md$'); do
# 检查 YAML frontmatter
if ! head -1 "$file" | grep -q "^---"; then
echo "⚠️ $file 缺少 frontmatter"
fi
done
echo "✅ 检查完成"定时任务
bash
# crontab 配置示例
# 每天早上 8 点自动提交
0 8 * * * cd ~/Vault && git add . && git commit -m "Auto: $(date '\%Y-\%m-\%d')"
# 每周日凌晨整理归档
0 0 * * 0 cd ~/Vault && bash scripts/weekly-archive.sh
# 每小时备份笔记
0 * * * * cd ~/Vault && backup.sh与其他插件联动
Dataview 联动
bash
#!/bin/bash
# generate-report.sh - 生成数据报告
cd ~/Vault
# 查询并输出到报告
echo "# 数据报告 - $(date '+%Y-%m-%d')" > Reports/daily-report.md
echo "" >> Reports/daily-report.md
# 统计笔记数
NOTE_COUNT=$(find . -name '*.md' | wc -l)
echo "总笔记数: $NOTE_COUNT" >> Reports/daily-report.md
# 统计任务数
TASK_COUNT=$(grep -r "\- \[ \]" . --include="*.md" | wc -l)
DONE_COUNT=$(grep -r "\- \[x\]" . --include="*.md" | wc -l)
echo "待办任务: $TASK_COUNT" >> Reports/daily-report.md
echo "已完成任务: $DONE_COUNT" >> Reports/daily-report.md
echo "✅ 报告已生成"Templater 联动
bash
#!/bin/bash
# trigger-templater.sh - 触发 Templater 处理
# 打开指定笔记触发 Templater 渲染
obsidian://vault/VaultName?file=目标笔记
# 使用 Templater CLI(如有)
tp-cli render "目标笔记"性能优化
大仓库优化
bash
# 使用 fd 替代 find(更快)
fd -e md -x echo {}
# 使用 rg 替代 grep(更快)
rg -l "关键词" --type md
# 增量索引
git update-index --assume-unchanged large-files/终端历史优化
bash
# 设置历史记录大小
export HISTSIZE=10000
export SAVEHIST=10000
# 去重历史
export HISTCONTROL=ignoredups:erasedups
# 忽略特定命令
export HISTIGNORE="ls:cd ..:cd ~"常见问题
Q: 终端启动缓慢?
- 检查启动脚本是否过于复杂
- 简化
.bashrc或.zshrc - 使用懒加载别名
Q: 中文显示乱码?
确保终端编码为 UTF-8:
bash
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8Q: 如何在 Windows 使用?
Windows 用户可使用 WSL(Windows Subsystem for Linux)或 PowerShell 作为 Shell。
Q: 快捷命令冲突?
为不同项目设置不同的快捷命令前缀,如 proj:, daily:, git:。