Skip to content

terminal 插件教程

Terminal 插件使用指南

Terminal 是 Obsidian 中用于在笔记内部直接运行 Shell 命令的插件,支持多标签页、历史记录和常用命令快捷方式。

插件特点

特性说明
💻 内嵌终端在 Obsidian 面板中运行命令
📑 多标签页支持多个终端标签
📜 命令历史记录和复用历史命令
⚡ 快捷命令保存常用命令快速执行
🔗 笔记集成命令输出可直接插入笔记

安装插件

  1. 打开「设置」→「第三方插件」→ 关闭「安全模式」
  2. 点击「浏览」→ 搜索「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)
  • 是否忽略敏感命令
  • 历史持久化

快捷命令

创建快捷命令

  1. 打开设置 → Terminal → Shortcuts
  2. 点击 Add
  3. 配置命令和触发词

示例快捷命令

触发词命令说明
todaycd Journal/Daily && ls -t | head -1打开今日日记
syncgit add . && git commit -m "auto"自动提交
findmdfind . -name "*.md" | wc -l统计笔记数
sizedu -sh .查看仓库大小

使用快捷命令

在终端中输入触发词即可执行对应命令。

笔记集成

插入命令输出

  1. 在笔记中输入 ``terminal 创建代码块
  2. 输入要执行的命令
  3. 点击运行按钮或使用 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: 终端无法启动?

  1. 确认系统安装了 bash/zsh
  2. 检查插件设置中的 Shell 路径
  3. 重启 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 --oneline

Obsidian 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=路径/笔记名称.md

Git 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: 终端启动缓慢?

  1. 检查启动脚本是否过于复杂
  2. 简化 .bashrc.zshrc
  3. 使用懒加载别名

Q: 中文显示乱码?

确保终端编码为 UTF-8:

bash
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8

Q: 如何在 Windows 使用?

Windows 用户可使用 WSL(Windows Subsystem for Linux)或 PowerShell 作为 Shell。

Q: 快捷命令冲突?

为不同项目设置不同的快捷命令前缀,如 proj:, daily:, git: