refactor: change to shorter triggers

This commit is contained in:
Dan 2026-06-09 09:55:45 +08:00
parent 3c46e21b34
commit ae993ef990
4 changed files with 491 additions and 736 deletions

View File

@ -1,40 +1,57 @@
# espanso match file
# For a complete introduction, visit the official docs at: https://espanso.org/docs/
# You can use this file to define the base matches (aka snippets)
# that will be available in every application when using espanso.
# Matches are substitution rules: when you type the "trigger" string
# it gets replaced by the "replace" string.
# yaml-language-server: $schema=https://raw.githubusercontent.com/espanso/espanso/dev/schemas/match.schema.json
# Base utilities - trigger schema: }b<command>
# b = base
matches:
# Simple text replacement
- trigger: ":espanso"
replace: "Hi there!"
# NOTE: espanso uses YAML to define matches, so pay attention to the indentation!
# But matches can also be dynamic:
# Print the current date
- trigger: ":date"
replace: "{{mydate}}"
# --- Dates & Times ---
- trigger: "}bd"
replace: "{{date}}"
vars:
- name: mydate
- name: date
type: date
params:
format: "%m/%d/%Y"
format: "%Y-%m-%d"
# Print the output of a shell command
- trigger: ":shell"
replace: "{{output}}"
- trigger: "}bt"
replace: "{{time}}"
vars:
- name: output
- name: time
type: date
params:
format: "%H:%M"
- trigger: "}bdt"
replace: "{{datetime}}"
vars:
- name: datetime
type: date
params:
format: "%Y-%m-%d %H:%M"
- trigger: "}bdts"
replace: "{{isodt}}"
vars:
- name: isodt
type: date
params:
format: "%Y-%m-%dT%H:%M:%S"
# --- Identifiers ---
- trigger: "}bu"
replace: "{{uuid}}"
vars:
- name: uuid
type: shell
params:
cmd: "echo 'Hello from your shell'"
cmd: "uuidgen | tr '[:upper:]' '[:lower:]'"
# And much more! For more information, visit the docs: https://espanso.org/docs/
- trigger: "}bp"
replace: "{{pwd}}"
vars:
- name: pwd
type: shell
params:
cmd: "openssl rand -base64 16 | tr -d '=+/'"
# --- Miscellaneous ---
- trigger: "}mutsl"
replace: "mutagen sync list"

View File

@ -1,210 +1,158 @@
# Docker Snippets for Espanso
# Docker snippets - trigger schema: }d<command>
# d = docker
matches:
# === Core Docker Commands ===
- trigger: "}dckr"
replace: "docker run $1$ $2$ $3$ $4$"
# === CORE COMMANDS ===
- trigger: "}dr"
replace: "docker run {{mode}} {{ports}} {{img}}"
vars:
- name: image
- name: img
type: choice
params:
values: ["$|$", "nginx", "postgres:15", "redis:alpine", "node:20"]
values: ["$|$", "nginx"]
- name: mode
type: choice
params:
values: ["", "-d", "-it"]
values: ["", "-d", "-it", "-d --rm"]
- name: ports
type: choice
params:
values: ["", "-p 8080:80", "-p 3000:3000", "-p 5432:5432"]
- name: volumes
type: choice
params:
values:
["", "-v $(pwd):/app", "-v ~/data:/var/lib/postgresql/data", ""]
- trigger: "}dckb"
replace: "docker build -t $1$ $2$"
- trigger: "}db"
replace: "docker build -t {{tag}} {{ctx}}"
vars:
- name: tag
type: choice
params:
values: ["$|$", "my-app:v1", "my-app:latest"]
- name: context
values: ["$|$", "my-app:latest"]
- name: ctx
type: choice
params:
values: [".", "/path/to/build/context", ""]
values: [".", "/path/to/context"]
- trigger: "}dckp"
replace: "docker push $1$"
vars:
- name: image
type: choice
params:
values: ["$|$", "my-app:v1", "registry.example.com/my-app:latest"]
- trigger: "}dp"
replace: "docker push $|$"
- trigger: "}dckpl"
replace: "docker pull $1$"
vars:
- name: image
type: choice
params:
values: ["$|$", "nginx:latest", "postgres:15-alpine"]
- trigger: "}dpl"
replace: "docker pull $|$"
- trigger: "}dckps"
replace: "docker ps $1$"
- trigger: "}dps"
replace: "docker ps {{opt}}"
vars:
- name: option
- name: opt
type: choice
params:
values:
["", "-a", "--format \"table {{.Names}}\t{{.Image}}\t{{.Ports}}\""]
["", "-a", '--format "table {{.Names}}\t{{.Image}}\t{{.Status}}"']
- trigger: "}dckim"
- trigger: "}di"
replace: "docker images"
- trigger: "}dckstop"
replace: "docker stop $1$"
vars:
- name: target
type: choice
params:
values: ["$|$", "<container-name>", "$(docker ps -q)"]
- trigger: "}dst"
replace: "docker stop $|$"
- trigger: "}dckstopa"
- trigger: "}dsta"
replace: "docker stop $(docker ps -q)"
label: Stop ALL running containers (use with caution!)
- trigger: "}dckrm"
replace: "docker rm $1$"
- trigger: "}drm"
replace: "docker rm $|$"
- trigger: "}drmi"
replace: "docker rmi $|$"
- trigger: "}dl"
replace: "docker logs -f $|$"
- trigger: "}de"
replace: "docker exec -it {{cnt}} {{cmd}}"
vars:
- name: target
- name: cnt
type: choice
params:
values: ["$|$", "<container-name>", "$(docker ps -aq)"]
values: ["$|$", "<container>"]
- name: cmd
type: choice
params:
values: ["sh", "bash", "/bin/bash"]
- trigger: "}dckrmi"
replace: "docker rmi $1$"
vars:
- name: target
type: choice
params:
values: ["$|$", "<image-name>", "$(docker images -q)"]
- trigger: "}dcklog"
replace: "docker logs -f $1$"
vars:
- name: container
type: choice
params:
values: ["$|$", "<container-name>"]
- trigger: "}dckex"
replace: "docker exec -it $1$ $2$"
vars:
- name: container
type: choice
params:
values: ["$|$", "<container-name>"]
- name: command
type: choice
params:
values: ["sh", "bash", "/bin/bash", ""]
- trigger: "}dckprune"
- trigger: "}dpr"
replace: "docker system prune -f"
- trigger: "}dckpruneall"
- trigger: "}dpra"
replace: "docker system prune -a --volumes -f"
label: Remove ALL unused Docker resources (irreversible!)
- trigger: "}dckinspect"
replace: "docker inspect $1$"
- trigger: "}din"
replace: "docker inspect $|$"
# === COMPOSE ===
- trigger: "}dcu"
replace: "docker compose up {{opt}}"
vars:
- name: target
- name: opt
type: choice
params:
values: ["$|$", "<container-name>", "<image-name>"]
values: ["$|$", "-d", "--build", "-d --build"]
# === Docker Compose Commands ===
- trigger: "}dckcu"
replace: "docker compose up $1$ $2$"
- trigger: "}dcd"
replace: "docker compose down {{opt}}"
vars:
- name: option
type: choice
params:
values: ["", "-d", "--build"]
- name: service
type: choice
params:
values: ["$|$", "", "web", "db", "redis"]
- trigger: "}dckcd"
replace: "docker compose down $1$"
vars:
- name: option
- name: opt
type: choice
params:
values: ["", "--volumes", "--rmi all"]
- trigger: "}dckcl"
replace: "docker compose logs -f $1$"
vars:
- name: service
type: choice
params:
values: ["$|$", "web", "db", ""]
- trigger: "}dcl"
replace: "docker compose logs -f $|$"
- trigger: "}dckex"
replace: "docker compose exec $1$ $2$"
- trigger: "}dce"
replace: "docker compose exec {{svc}} {{cmd}}"
vars:
- name: service
- name: svc
type: choice
params:
values: ["$|$", "web", "db"]
- name: command
values: ["$|$", "web", "db", "api"]
- name: cmd
type: choice
params:
values: ["sh", "bash", "python manage.py migrate", ""]
values: ["sh", "bash", "python manage.py migrate"]
- trigger: "}dckcb"
replace: "docker compose build $1$"
vars:
- name: service
type: choice
params:
values: ["$|$", "web", "db", ""]
- trigger: "}dcb"
replace: "docker compose build $|$"
# === Dockerfile Snippets ===
- trigger: "}dckfile"
# === DOCKERFILE SNIPPETS ===
- trigger: "}df"
replace: |
FROM $1$
FROM {{base}}
WORKDIR /app
COPY . .
RUN $2$
EXPOSE 80
CMD ["$3$"]
RUN {{run}}
EXPOSE {{port}}
CMD ["{{cmd}}"]
vars:
- name: base_image
- name: base
type: choice
params:
values: ["$|$", "alpine:latest", "ubuntu:22.04"]
- name: install_cmd
values: ["$|$", "node:20-alpine", "python:3.11-slim", "ubuntu:22.04"]
- name: run
type: choice
params:
values:
[
"apt update && apt install -y <package>",
"apk add --no-cache <package>",
"npm ci",
"pip install -r requirements.txt",
"",
"apt update && apt install -y <pkg>",
]
- name: start_cmd
- name: port
type: choice
params:
values:
["nginx -g 'daemon off;'", "python app.py", "node server.js", ""]
values: ["3000", "8000", "80", "8080"]
- name: cmd
type: choice
params:
values: ["npm start", "python app.py", "node server.js"]
- trigger: "}dckfile-node"
- trigger: "}dfn"
replace: |
FROM node:20-alpine
WORKDIR /app
@ -214,7 +162,7 @@ matches:
EXPOSE 3000
CMD ["npm", "start"]
- trigger: "}dckfile-py"
- trigger: "}dfp"
replace: |
FROM python:3.11-slim
WORKDIR /app
@ -224,26 +172,25 @@ matches:
EXPOSE 8000
CMD ["python", "app.py"]
# === Common Config Snippets ===
- trigger: "}dckignore"
# === CONFIG ===
- trigger: "}dign"
replace: |
.git
node_modules
.env
*.log
Dockerfile
.dockerignore
dist/
build/
.dockerignore
- trigger: "}dckenv"
replace: "ENV $1$=$2$"
- trigger: "}denv"
replace: "ENV {{key}}={{val}}"
vars:
- name: key
type: choice
params:
values: ["$|$", "NODE_ENV", "PORT", "DB_HOST", "DEBUG"]
- name: value
values: ["$|$", "NODE_ENV", "PORT", "DEBUG"]
- name: val
type: choice
params:
values: ["production", "3000", "localhost", "true", ""]
values: ["production", "3000", "true", "false"]

View File

@ -1,496 +1,293 @@
# Git Snippets for Espanso
# Git snippets - trigger schema: }g<command>
# g = git
matches:
# === BASIC COMMANDS ===
# Git init
- trigger: "}giti"
replace: "git init"
# Git clone
- trigger: "}gitcl"
replace: "git clone $1$"
# Git status
- trigger: "}gits"
# === DAILY COMMANDS (shortest) ===
- trigger: "}gs"
replace: "git status"
# Git add
- trigger: "}gita"
# replace: "git add $1$"
- trigger: "}ga"
replace: "git add {{what}}"
vars:
- name: "dot"
type: "choice"
- name: what
type: choice
params:
values:
- ". "
- ""
- name: "file"
type: "choice"
params:
values:
- "$|$"
- " <filename>"
replace: "git add {{dot}}{{file}}"
values: ["$|$", ".", "-p ", "-u ", "-A "]
# Git commit
- trigger: "}gitc"
- trigger: "}gc"
replace: 'git commit -m "$|$"'
# Git commit with amend
- trigger: "}gitcam"
- trigger: "}gca"
replace: 'git commit --amend -m "$|$"'
# Git commit all
- trigger: "}gitcal"
replace: 'git commit -am "$|$"'
- trigger: "}gcan"
replace: "git commit --amend --no-edit"
# Git push
- trigger: "}gitp"
#replace: "git push $1$ $2$"
- trigger: "}gp"
replace: "git push {{opt}}"
vars:
- name: "option"
type: "choice"
- name: opt
type: choice
params:
values:
- ""
- "--force"
- "--tags"
- name: "remote_branch"
type: "choice"
params:
values:
- ""
- "origin main"
- "origin master"
- "origin HEAD"
- "origin development"
replace: "git push {{option}} {{remote_branch}}"
values: ["$|$", "-u origin HEAD", "--force", "--tags"]
# Git pull
- trigger: "}gitpl"
#replace: "git pull $1$ $2$"
- trigger: "}gpl"
replace: "git pull {{opt}}"
vars:
- name: "option"
type: "choice"
- name: opt
type: choice
params:
values:
- ""
- "--rebase"
- name: "remote_branch"
type: "choice"
params:
values:
- ""
- "origin main"
- "origin master"
- "origin HEAD"
- "origin development"
replace: "git pull {{option}} {{remote_branch}}"
values: ["$|$", "--rebase", "origin main", "origin master"]
# Git fetch
- trigger: "}gitf"
# replace: "git fetch $1$"
- trigger: "}gf"
replace: "git fetch {{opt}}"
vars:
- name: "remote"
type: "choice"
- name: opt
type: choice
params:
values: ["$|$", "--all", "origin"]
- trigger: "}gcl"
replace: "git clone $|$"
# === BRANCHING ===
- trigger: "}gco"
replace: "git checkout {{opt}}"
vars:
- name: opt
type: choice
params:
values: ["$|$", "-b ", "main", "master", "-"]
- trigger: "}gb"
replace: "git branch {{opt}}"
vars:
- name: opt
type: choice
params:
values: ["$|$", "-d ", "-D ", "-a", "-r", "-m "]
- trigger: "}gm"
replace: "git merge {{opt}}"
vars:
- name: opt
type: choice
params:
values: ["$|$", "--no-ff ", "--squash ", "--abort"]
- trigger: "}gr"
replace: "git rebase {{opt}}"
vars:
- name: opt
type: choice
params:
values:
- ""
- "origin"
- "--all"
replace: "git fetch {{remote}}"
[
"$|$",
"-i HEAD~3",
"--abort",
"--continue",
"--skip",
"main",
"master",
]
# Git log
- trigger: "}gitlg"
- trigger: "}grem"
replace: "git remote {{opt}}"
vars:
- name: opt
type: choice
params:
values: ["-v", "add origin ", "remove ", "set-url origin "]
# === HISTORY & DIFF ===
- trigger: "}gd"
replace: "git diff {{opt}}"
vars:
- name: opt
type: choice
params:
values: ["$|$", "--staged", "HEAD~1", "--stat"]
- trigger: "}gl"
replace: "git log --oneline --graph --all"
# Git diff
- trigger: "}gitdf"
#replace: "git diff $1$"
- trigger: "}gls"
replace: "git log --oneline -10"
- trigger: "}gsh"
replace: "git show {{opt}}"
vars:
- name: "option"
type: "choice"
- name: opt
type: choice
params:
values:
- ""
- "--staged"
- "HEAD~1"
replace: "git diff {{option}}"
values: ["HEAD", "HEAD~1", "$|$"]
# Git checkout
- trigger: "}gitco"
#replace: "git checkout $1$"
# === STASH ===
- trigger: "}gst"
replace: "git stash {{opt}}"
vars:
- name: "what"
type: "choice"
- name: opt
type: choice
params:
values:
- ""
- "-b "
- "-- "
- name: "target"
type: "choice"
params:
values:
- "$|$"
- "main"
- "master"
- "development"
replace: "git checkout {{what}}{{target}}"
values: ["$|$", 'push -m "', "pop", "list", "apply", "drop", "clear"]
# Git branch
- trigger: "}gitb"
#replace: "git branch $1$"
vars:
- name: "option"
type: "choice"
params:
values:
- ""
- "-d "
- "-D "
- "-a"
- "-r"
- name: "branch"
type: "choice"
params:
values:
- "$|$"
- "feature/"
- "bugfix/"
- "hotfix/"
- "chore/"
- "test/"
replace: "git branch {{option}}{{branch}}"
# Git merge
- trigger: "}gitm"
#replace: "git merge $1$"
vars:
- name: "option"
type: "choice"
params:
values:
- ""
- "--no-ff "
- "--squash "
- "--abort"
- name: "branch"
type: "choice"
params:
values:
- "$|$"
- "main"
- "master"
- "development"
replace: "git merge {{option}}{{branch}}"
# Git rebase
- trigger: "}gitr"
#replace: "git rebase $1$"
vars:
- name: "option"
type: "choice"
params:
values:
- ""
- "-i "
- "--abort"
- "--continue"
- "--skip"
- name: "target"
type: "choice"
params:
values:
- "$|$"
- "main"
- "master"
- "HEAD~3"
- "development"
- "staging"
replace: "git rebase {{option}}{{target}}"
# Git stash
- trigger: "}gitsah"
#replace: "git stash $1$"
vars:
- name: "option"
type: "choice"
params:
values:
- ""
- 'push -m "$|$"'
- "pop"
- "list"
- "drop"
- "apply"
- "--include-untracked"
replace: "git stash {{option}}"
# Git remote
- trigger: "}gitr"
#replace: "git remote $1$"
vars:
- name: "option"
type: "choice"
params:
values:
- "-v"
- "add origin "
- "remove "
- name: "url"
type: "choice"
params:
values:
- "$|$"
- "https://github.com/user/repo.git"
replace: "git remote {{option}}{{url}}"
# Git reset
- trigger: "}gitrst"
#replace: "git reset $1$ $2$"
vars:
- name: "mode"
type: "choice"
params:
values:
- "--soft "
- "--hard "
- ""
- name: "target"
type: "choice"
params:
values:
- "HEAD~1"
- "HEAD~2"
- "HEAD~3"
- "$|$"
replace: "git reset {{mode}}{{target}}"
# Git clean
- trigger: "}gitcln"
#replace: "git clean -fd $1$"
vars:
- name: "dry"
type: "choice"
params:
values:
- ""
- "-n"
replace: "git clean -fd{{dry}}"
# Git show
- trigger: "}gitshow"
#replace: "git show $1$"
vars:
- name: "ref"
type: "choice"
params:
values:
- "HEAD"
- "HEAD~1"
- "$|$"
- "<commit-hash>"
replace: "git show {{ref}}"
# Git cherry-pick
- trigger: "}gitcp"
#replace: "git cherry-pick $1$"
vars:
- name: "option"
type: "choice"
params:
values:
- ""
- "-x "
- "--continue"
- "--abort"
- name: "commit"
type: "choice"
params:
values:
- "$|$"
- "<commit-hash>"
- "HEAD~1"
replace: "git cherry-pick {{option}}{{commit}}"
# Git revert
- trigger: "}gitrev"
#replace: "git revert $1$"
vars:
- name: "commit"
type: "choice"
params:
values:
- "HEAD"
- "HEAD~1"
- "$|$"
- "<commit-hash>"
replace: "git revert {{commit}}"
# Git bisect
- trigger: "}gitbst"
#replace: "git bisect $1$"
vars:
- name: "action"
type: "choice"
params:
values:
- "start"
- "good"
- "bad"
- "reset"
- "log"
replace: "git bisect {{action}}"
# Git blame
- trigger: "}gitblame"
#replace: "git blame $1$"
vars:
- name: "file"
type: "choice"
params:
values:
- "$|$"
- "<filename>"
replace: "git blame {{file}}"
# Git reflog
- trigger: "}gitrl"
#replace: "git reflog"
replace: "git reflog"
# Git config
- trigger: "}gitconf"
#replace: "git config --global $1$ $2$"
vars:
- name: "key"
type: "choice"
params:
values:
- "user.name"
- "user.email"
- "core.editor"
- "init.defaultBranch"
- name: "value"
type: "choice"
params:
values:
- "$|$"
- "Your Name"
- "your.email@example.com"
- "vim"
- "main"
replace: 'git config --global {{key}} "{{value}}"'
# === COMMIT MESSAGE CONVENTIONS ===
# Conventional Commits
- trigger: "}gitcc"
vars:
- name: "type"
type: "choice"
params:
values:
- "feat"
- "fix"
- "docs"
- "style"
- "refactor"
- "perf"
- "test"
- "chore"
- "revert"
- name: "scope"
type: "choice"
params:
values:
- ""
- "(auth)"
- "(api)"
- "(db)"
- "(ui)"
- "(cli)"
replace: "{{type}}{{scope}}: "
# Fix typo in commit
- trigger: "}gitfix"
replace: "fixup! $|$"
# Squash commit
- trigger: "}gitsquash"
replace: "squash! $|$"
# === BRANCH NAMING CONVENTIONS ===
# Release branch
- trigger: "}gitbr"
replace: "release/v$1$.$2$.$3$"
vars:
- name: "major"
type: "choice"
params:
values: ["0", "1", "2"]
- name: "minor"
type: "choice"
params:
values: ["0", "1", "2"]
- name: "patch"
type: "choice"
params:
values: ["0", "1", "2"]
# === TROUBLESHOOTING ===
# Discard local changes (CAREFUL!)
- trigger: "}gitdc"
replace: "git checkout -- $1$"
vars:
- name: "file"
type: "choice"
params:
values:
- "."
- "$|$"
- "<filename>"
# Undo last commit (keep changes)
- trigger: "}gitundo"
# === UNDO & RESET ===
- trigger: "}gu"
replace: "git reset --soft HEAD~1"
# Undo last commit (discard changes)
- trigger: "}gitundohard"
- trigger: "}guh"
replace: "git reset --hard HEAD~1"
# Remove untracked files (CAREFUL!)
- trigger: "}gitrmuntracked"
- trigger: "}grst"
replace: "git reset {{mode}}"
vars:
- name: mode
type: choice
params:
values: ["--soft HEAD~1", "--hard HEAD~1", "HEAD ", "$|$"]
- trigger: "}gdc"
replace: "git checkout -- {{opt}}"
vars:
- name: opt
type: choice
params:
values: ["$|$", "."]
- trigger: "}gcln"
replace: "git clean -fd{{opt}}"
vars:
- name: opt
type: choice
params:
values: ["", " -n"]
- trigger: "}grm"
replace: "git clean -fd"
# See what branch you're on
- trigger: "}gitcurrbranch"
# === CHERRY-PICK & REVERT ===
- trigger: "}gcp"
replace: "git cherry-pick {{opt}}"
vars:
- name: opt
type: choice
params:
values: ["$|$", "-x ", "--continue", "--abort"]
- trigger: "}grv"
replace: "git revert {{opt}}"
vars:
- name: opt
type: choice
params:
values: ["HEAD", "HEAD~1", "$|$"]
# === MISC ===
- trigger: "}gbl"
replace: "git blame $|$"
- trigger: "}grl"
replace: "git reflog"
- trigger: "}gbs"
replace: "git bisect {{opt}}"
vars:
- name: opt
type: choice
params:
values: ["start", "good", "bad", "reset"]
- trigger: "}gcfg"
replace: 'git config --global {{key}} "{{val}}"'
vars:
- name: key
type: choice
params:
values:
["user.name", "user.email", "core.editor", "init.defaultBranch"]
- name: val
type: choice
params:
values: ["$|$", "vim", "main"]
# === COMMIT CONVENTIONS ===
- trigger: "}gcc"
replace: "{{type}}{{scope}}: "
vars:
- name: type
type: choice
params:
values:
[
"feat",
"fix",
"docs",
"style",
"refactor",
"perf",
"test",
"chore",
]
- name: scope
type: choice
params:
values: ["", "(api)", "(ui)", "(db)", "(auth)", "(ci)"]
- trigger: "}gfix"
replace: "fixup! $|$"
- trigger: "}gsq"
replace: "squash! $|$"
# === BRANCH NAMES ===
- trigger: "}gbr"
replace: "release/v$|$"
- trigger: "}gcb"
replace: "git branch --show-current"
# List all branches with last commit
- trigger: "}gitbrl"
- trigger: "}gbv"
replace: "git branch -vva"
# Find deleted branches
- trigger: "}gitbrd"
replace: "git branch --merged | egrep -v \"(^\\*|main|master|develop)\""
- trigger: "}gbm"
replace: 'git branch --merged | egrep -v "(^\\*|main|master|develop)"'
# === GIT IGNORE ===
# === GITIGNORE ===
- trigger: "}gig"
replace: 'echo "$|$" >> .gitignore'
# Add to .gitignore
- trigger: "}gitignore"
replace: 'echo "$1$" >> .gitignore'
- trigger: "}gign"
replace: |
node_modules/
.env
npm-debug.log
dist/
build/
# Common .gitignore entries
- trigger: "}gitignode"
replace: "node_modules/\n.env\nnpm-debug.log"
- trigger: "}gipy"
replace: |
__pycache__/
*.pyc
.env
venv/
.venv/
*.egg-info/
- trigger: "}gitpython"
replace: "__pycache__/\n*.pyc\n.env\nvenv/\n.venv/\n*.egg-info/"
- trigger: "}giid"
replace: |
.idea/
*.iml
.vscode/
.DS_Store
- trigger: "}gitidea"
replace: ".idea/\n*.iml\n.vscode/\n.DS_Store"
- trigger: "}gitbuild"
replace: "dist/\nbuild/\n*.o\n*.obj\n*.exe\n*.dll\n*.so\n*.dylib"
- trigger: "}gibd"
replace: |
dist/
build/
*.o
*.obj
*.exe
*.dll
*.so
*.dylib

View File

@ -1,160 +1,154 @@
# SQL Snippets for Espanso
# SQL snippets - trigger schema: }s<command>
# s = sql
matches:
# Basic SELECT statement
- trigger: "}sqls"
# === DML ===
- trigger: "}ss"
replace: |
SELECT
[columns]
$1$
FROM
[table]
[WHERE conditions]
[ORDER BY column]
[LIMIT n];
$2$
$3$;
# SELECT with common clauses
- trigger: "}sqlsel"
- trigger: "}ssa"
replace: |
SELECT
$1$ -- columns
FROM
$2$ -- table
$3$ -- optional: WHERE, GROUP BY, etc.
$4$; -- optional: semicolon or other ending
$3$ -- WHERE, GROUP BY, etc.
$4$; -- ORDER BY, LIMIT
# INSERT statement
- trigger: "}sqli"
- trigger: "}si"
replace: |
INSERT INTO
[table] ([columns])
$1$ ($2$)
VALUES
([values]);
($3$);
# UPDATE statement
- trigger: "}sqlu"
- trigger: "}su"
replace: |
UPDATE
[table]
$1$
SET
[column] = [value]
[WHERE conditions];
$2$ = $3$
WHERE
$4$;
# DELETE statement
- trigger: "}sqld"
- trigger: "}sd"
replace: |
DELETE FROM
[table]
[WHERE conditions];
$1$
WHERE
$2$;
# CREATE TABLE
- trigger: "}sqlct"
# === DDL ===
- trigger: "}sc"
replace: |
CREATE TABLE [table] (
[column1] [type] [constraints],
[column2] [type] [constraints],
...
CREATE TABLE $1$ (
$2$ $3$ $4$,
$5$ $6$ $7$
);
# Common WHERE clauses
- trigger: "}sqlw"
- trigger: "}sci"
replace: "CREATE INDEX $1$ ON $2$ ($3$);"
- trigger: "}sct"
replace: "CREATE TABLE $1$ ($2$);"
# === CLAUSES ===
- trigger: "}sw"
replace: |
WHERE
[conditions]
$1$
# JOIN patterns
- trigger: "}sqlj"
- trigger: "}sj"
replace: |
[table1]
[JOIN_TYPE] JOIN [table2]
ON [table1].[key] = [table2].[key]
$1$ JOIN $2$
ON $3$.$4$ = $5$.$6$
# Aggregate functions
- trigger: "}sqlagg"
- trigger: "}so"
replace: |
ORDER BY
$1$ $2$
- trigger: "}sg"
replace: |
SELECT
[GROUP_BY_COLUMN],
COUNT(*) as count,
SUM([numeric_column]) as total,
AVG([numeric_column]) as average,
MAX([column]) as max_value,
MIN([column]) as min_value
FROM
[table]
GROUP BY
[GROUP_BY_COLUMN]
$1$
# Subquery pattern
- trigger: "}sqlsub"
- trigger: "}sl"
replace: "LIMIT $1$"
# === ADVANCED ===
- trigger: "}sa"
replace: |
SELECT
[columns]
$1$,
COUNT(*) AS cnt,
SUM($2$) AS total,
AVG($3$) AS avg_val
FROM
[table1]
WHERE [column] IN (
SELECT [column]
FROM [table2]
WHERE [conditions]
)
$4$
GROUP BY
$1$;
# Common SQL comments
- trigger: "}sqlc"
replace: "-- $|$"
- trigger: "}sqlcb"
replace: "/* $|$ */"
# Transaction wrapper
- trigger: "}sqltr"
- trigger: "}ssq"
replace: |
BEGIN TRANSACTION;
$|$
COMMIT;
-- ROLLBACK; -- uncomment to rollback instead
SELECT
$1$
FROM
$2$
WHERE $3$ IN (
SELECT $4$
FROM $5$
WHERE $6$
);
# CTE (Common Table Expression)
- trigger: "}sqlcte"
- trigger: "}scte"
replace: |
WITH [cte_name] AS (
WITH $1$ AS (
SELECT
[columns]
$2$
FROM
[table]
$3$
WHERE
[conditions]
$4$
)
SELECT
[columns]
$5$
FROM
[cte_name];
$1$;
# CASE statement
- trigger: "}sqlcase"
- trigger: "}scase"
replace: |
CASE
WHEN [condition1] THEN [result1]
WHEN [condition2] THEN [result2]
ELSE [default_result]
END as [alias]
WHEN $1$ THEN $2$
WHEN $3$ THEN $4$
ELSE $5$
END AS $6$
# Window functions pattern
- trigger: "}sqlwin"
- trigger: "}swin"
replace: |
SELECT
[columns],
[function]() OVER (
PARTITION BY [partition_column]
ORDER BY [order_column]
[ROWS/RANGE frame]
) as [alias]
FROM
[table]
$1$() OVER (
PARTITION BY $2$
ORDER BY $3$
) AS $4$
# Placeholders guide (use these in your templates):
# [columns] - list of columns (comma-separated or *)
# [table] - table name(s)
# [conditions] - WHERE clause conditions
# [JOIN_TYPE] - INNER, LEFT, RIGHT, FULL, CROSS
# [numeric_column] - column with numeric values for aggregates
# [GROUP_BY_COLUMN] - column to group by
# $1$, $2$ etc. - tab stops (use Tab to navigate)
# $|$ - final cursor position
# === TRANSACTIONS ===
- trigger: "}str"
replace: |
BEGIN;
$1$
COMMIT;
-- ROLLBACK;
# === COMMENTS ===
- trigger: "}scmt"
replace: "-- $|$"
- trigger: "}scmb"
replace: "/* $|$ */"