From ae993ef990be60502c5f414450c9a3ddf8c910db Mon Sep 17 00:00:00 2001 From: Dan Date: Tue, 9 Jun 2026 09:55:45 +0800 Subject: [PATCH] refactor: change to shorter triggers --- match/base.yml | 77 ++++-- match/docker.yml | 239 +++++++--------- match/git.yml | 701 +++++++++++++++++------------------------------ match/sql.yml | 210 +++++++------- 4 files changed, 491 insertions(+), 736 deletions(-) diff --git a/match/base.yml b/match/base.yml index acc7123..fd17b47 100644 --- a/match/base.yml +++ b/match/base.yml @@ -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 +# 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/ \ No newline at end of file + - trigger: "}bp" + replace: "{{pwd}}" + vars: + - name: pwd + type: shell + params: + cmd: "openssl rand -base64 16 | tr -d '=+/'" + + # --- Miscellaneous --- + - trigger: "}mutsl" + replace: "mutagen sync list" diff --git a/match/docker.yml b/match/docker.yml index 13b36a1..ed0c2db 100644 --- a/match/docker.yml +++ b/match/docker.yml @@ -1,210 +1,158 @@ -# Docker Snippets for Espanso +# Docker snippets - trigger schema: }d +# 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: ["$|$", "", "$(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: ["$|$", "", "$(docker ps -aq)"] + values: ["$|$", ""] + - name: cmd + type: choice + params: + values: ["sh", "bash", "/bin/bash"] - - trigger: "}dckrmi" - replace: "docker rmi $1$" - vars: - - name: target - type: choice - params: - values: ["$|$", "", "$(docker images -q)"] - - - trigger: "}dcklog" - replace: "docker logs -f $1$" - vars: - - name: container - type: choice - params: - values: ["$|$", ""] - - - trigger: "}dckex" - replace: "docker exec -it $1$ $2$" - vars: - - name: container - type: choice - params: - values: ["$|$", ""] - - 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: ["$|$", "", ""] + 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 ", - "apk add --no-cache ", + "npm ci", "pip install -r requirements.txt", - "", + "apt update && apt install -y ", ] - - 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"] diff --git a/match/git.yml b/match/git.yml index 1515ec6..3460642 100644 --- a/match/git.yml +++ b/match/git.yml @@ -1,496 +1,293 @@ -# Git Snippets for Espanso +# Git snippets - trigger schema: }g +# 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: - - "$|$" - - " " - 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" - - "$|$" - - "" - 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: - - "$|$" - - "" - - "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" - - "$|$" - - "" - 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: - - "$|$" - - "" - 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: - - "." - - "$|$" - - "" - - # 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 diff --git a/match/sql.yml b/match/sql.yml index d455677..06e0492 100644 --- a/match/sql.yml +++ b/match/sql.yml @@ -1,160 +1,154 @@ -# SQL Snippets for Espanso +# SQL snippets - trigger schema: }s +# 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: "/* $|$ */"