terminal 插件教程
Terminal 插件使用指南
Terminal 是 Obsidian 中用于在笔记内部直接运行 Shell 命令的插件,支持多标签页、历史记录和常用命令快捷方式。
插件特点
| 特性 | 说明 |
|---|---|
| 💻 内嵌终端 | 在 Obsidian 面板中运行命令 |
| 📑 多标签页 | 支持多个终端标签 |
| 📜 命令历史 | 记录和复用历史命令 |
| ⚡ 快捷命令 | 保存常用命令快速执行 |
| 🔗 笔记集成 | 命令输出可直接插入笔记 |
安装插件
- 打开「设置」→「第三方插件」→ 关闭「安全模式」
- 点击「浏览」→ 搜索「obsidian-terminal」→ 安装并启用
基础配置
打开终端
| 方法 | 操作 |
|---|---|
| 命令面板 | Terminal: Open terminal |
| 快捷键 | 默认 Ctrl + `` (反引号) |
| 左侧边栏 | 点击 Terminal 图标 |
终端面板
┌──────────────────────────────────────────────────┐
│ [+] [bash] [zsh] [powershell] [×] [⛶] │
├──────────────────────────────────────────────────┤
│ user@obsidian:~/Vault $ █ │
│ │
│ │
│ │
│ │
├──────────────────────────────────────────────────┤
│ history │ shortcuts │ new tab │ settings │
└──────────────────────────────────────────────────┘基础命令
导航命令
| 命令 | 说明 |
|---|---|
pwd | 显示当前目录 |
cd <path> | 切换目录 |
ls | 列出文件 |
ls -la | 详细列表 |
find . -name "*.md" | 搜索 Markdown 文件 |
文件操作
| 命令 | 说明 |
|---|---|
cat file.md | 查看文件内容 |
head -n 20 file.md | 显示前 20 行 |
tail -n 10 file.md | 显示末尾 10 行 |
grep "关键词" file.md | 搜索关键词 |
Git 命令
| 命令 | 说明 |
|---|---|
git status | 查看状态 |
git log --oneline | 查看提交历史 |
git diff | 查看变更 |
git add . | 添加所有变更 |
多标签页
新建标签
- 点击
+按钮 - 或使用快捷键
Ctrl + Shift + T
切换标签
- 点击标签栏切换
- 或使用
Ctrl + Tab/Ctrl + Shift + Tab
标签操作
| 操作 | 命令 |
|---|---|
| 关闭标签 | Ctrl + W |
| 重命名标签 | 双击标签名 |
| 复制标签 | 右键 → Duplicate |
命令历史
查看历史
点击底部 history 或使用 ↑ / ↓ 键浏览历史命令。
搜索历史
Ctrl + R 打开历史搜索,输入关键词快速匹配。
历史配置
在设置中可配置:
- 最大历史记录数(默认 1000)
- 是否忽略敏感命令
- 历史持久化
快捷命令
创建快捷命令
- 打开设置 → Terminal → Shortcuts
- 点击 Add
- 配置命令和触发词
示例快捷命令
| 触发词 | 命令 | 说明 |
|---|---|---|
today | cd Journal/Daily && ls -t | head -1 | 打开今日日记 |
sync | git add . && git commit -m "auto" | 自动提交 |
findmd | find . -name "*.md" | wc -l | 统计笔记数 |
size | du -sh . | 查看仓库大小 |
使用快捷命令
在终端中输入触发词即可执行对应命令。
笔记集成
插入命令输出
- 在笔记中输入
``terminal创建代码块 - 输入要执行的命令
- 点击运行按钮或使用
Ctrl + Enter
terminal
```bash
ls -la
```输出自动插入
运行命令后,点击「Insert output into note」,结果自动插入到笔记中。
使用场景
快速查找笔记
bash
# 在仓库中搜索关键词
grep -r "Obsidian" . --include="*.md" | head -20
# 搜索特定标签
grep -r "#项目" . --include="*.md" | wc -l批量重命名
bash
# 将所有 .txt 文件改为 .md
for f in *.txt; do mv "$f" "${f%.txt}.md"; done数据统计
bash
# 统计各类型文件数量
echo "=== 文件统计 ===" && \
find . -type f -name "*.md" | wc -l && echo "Markdown 文件" && \
find . -type f -name "*.pdf" | wc -l && echo "PDF 文件"Git 工作流
bash
# 快速提交
git add . && git status
# 查看今日变更
git diff --stat $(git log -1 --format="%H")配置选项
| 选项 | 说明 | 默认值 |
|---|---|---|
| Shell | 使用的 Shell 程序 | bash |
| Starting directory | 起始目录 | Vault 根目录 |
| Font size | 字体大小 | 14px |
| Theme | 终端主题 | 与 Obsidian 同步 |
| Scrollback | 历史记录行数 | 10000 |
常见问题
Q: 终端无法启动?
- 确认系统安装了 bash/zsh
- 检查插件设置中的 Shell 路径
- 重启 Obsidian
Q: 命令输出乱码?
在设置中调整字符编码为 UTF-8。
Q: 如何使用 Windows PowerShell?
在设置中将 Shell 改为 powershell.exe。
Q: 快捷命令不生效?
检查触发词是否唯一,确认命令语法正确。
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:。