Skip to content

Instantly share code, notes, and snippets.

@zurfyx
Last active February 18, 2026 16:01
Show Gist options
  • Select an option

  • Save zurfyx/9ae0ffc3436ff7a08dcb97ff1df66bd9 to your computer and use it in GitHub Desktop.

Select an option

Save zurfyx/9ae0ffc3436ff7a08dcb97ff1df66bd9 to your computer and use it in GitHub Desktop.
Dot files
[user]
name = Gerard Rovira
email = gerard.rovira.sanchez@gmail.com
[gpg]
program = gpg2
[alias]
tree = log --oneline --graph --color --all --decorate
sbranch = for-each-ref --count=10 --sort=-committerdate refs/heads/ --format='%(refname:short)'
pr = "!f() { if [ $# -lt 1 ]; then echo \"Usage: git pr <id> [<remote>] # assuming <remote>[=origin] is on GitHub\"; else git checkout -q \"$(git rev-parse --verify HEAD)\" && git fetch -fv \"${2:-origin}\" pull/\"$1\"/head:pr/\"$1\" && git checkout pr/\"$1\"; fi; }; f"
ac = "!f() { git add . && git commit -m \"$*\"; }; f"
acp = "!f() { \
set -e; \
branch=$(git symbolic-ref --short HEAD); \
git add .; \
git commit -m \"$*\"; \
\
if git rev-parse --abbrev-ref --symbolic-full-name @{u} >/dev/null 2>&1; then \
git push; \
exit 0; \
fi; \
\
for remote in origin $(git remote); do \
if git push --dry-run \"$remote\" \"$branch\" >/dev/null 2>&1; then \
git push -u \"$remote\" \"$branch\"; \
exit 0; \
fi; \
done; \
\
echo \"No writable remote found\" >&2; \
exit 1; \
}; f"
sync = "!f() { \
branch=$(git symbolic-ref --short HEAD) || exit 1; \
git fetch upstream || exit 1; \
git rebase upstream/$branch || exit 1; \
git push origin $branch; \
}; f"
[init]
defaultBranch = main
[credential]
helper = osxkeychain
# History (interactive)
HISTSIZE=130000
SAVEHIST=130000
HISTFILE="$HOME/.zsh_history"
setopt SHARE_HISTORY
setopt HIST_IGNORE_ALL_DUPS
setopt HIST_REDUCE_BLANKS
setopt INC_APPEND_HISTORY
# If you truly want "unlimited-ish" history like HISTFILESIZE=-1 in bash:
# zsh doesn't use HISTFILESIZE the same way; SAVEHIST controls what gets saved.
# Prompt: show colored exit codes for last pipeline
function _prompt_pipestatus() {
local -a ps
ps=(${pipestatus[@]})
local out="" s
for s in "${ps[@]}"; do
if [[ $s -eq 0 ]]; then
out+="%F{green}0%f "
else
out+="%F{red}${s}%f "
fi
done
out="${out% }"
PROMPT="[Exit: ${out}] $ "
}
autoload -Uz add-zsh-hook
add-zsh-hook precmd _prompt_pipestatus
# Aliases
alias .="cd ."
alias ..="cd .."
alias ...="cd ../.."
alias ....="cd ../../.."
alias .....="cd ../../../.."
alias Code="cd $HOME/Code"
alias la="ls -la"
alias lint-staged=""
alias 7z="7zz"
alias brew-clean="brew autoremove && brew cleanup"
alias clauded="claude --dangerously-skip-permissions"
alias codexd="codex --dangerously-bypass-approvals-and-sandbox"
alias gclaw="ssh -N -L 18789:127.0.0.1:18789 gclaw"
alias emulator="cd ~/fbsource/fbandroid/ && ./scripts/start_emulator -gpu host"
alias emulator86="EMULATOR_ABI=x86 ~/fbsource/fbandroid/scripts/ && ./scripts/start_emulator -gpu host"
alias quicklog_update="/Users/gerardrovira/fbsource/fbandroid/scripts/quicklog/quicklog_update.sh"
alias qlu=quicklog_update
# Functions
incognito () {
env -i HOME="$HOME" USER="$USER" PATH="$PATH" TERM="$TERM" \
HISTFILE=/dev/null HISTSIZE=0 SAVEHIST=0 \
zsh -f
}
shell-integration = zsh
macos-titlebar-style = tabs
window-padding-x = 12
font-size = 20
mouse-hide-while-typing = false
scrollback-limit = 1073741824 # 1 GB
clipboard-paste-protection = false
# Move between splits (no prefix)
keybind = super+left=goto_split:left
keybind = super+down=goto_split:bottom
keybind = super+up=goto_split:top
keybind = super+right=goto_split:right
# Prefix-style actions (Cmd+A instead of Ctrl+A)
keybind = super+a>left=new_split:left
keybind = super+a>down=new_split:down
keybind = super+a>up=new_split:up
keybind = super+a>right=new_split:right
keybind = super+a>z=toggle_split_zoom
keybind = super+a>n=next_tab
keybind = super+a>p=previous_tab
# Other
keybind = super+n=new_window
keybind = super+r=reload_config
window-save-state = always
// Place your key bindings in this file to override the defaults
// https://code.visualstudio.com/docs/getstarted/keybindings#_when-clause-contexts
[
{
"key": "ctrl+j",
"command": "workbench.action.terminal.focus",
"when": "editorFocus"
},
{
"key": "ctrl+j",
"command": "workbench.action.focusActiveEditorGroup",
"when": "terminalFocus"
},
{
"key": "ctrl+l",
"command": "extension.jumpy-word"
},
{
"key": "ctrl+e",
"command": "editor.action.showHover",
"when": "editorTextFocus"
},
{ "key": "shift+cmd+t", "command": "workbench.action.newWindowTab" },
{ "key": "shift+cmd+m", "command": "workbench.action.mergeAllWindowTabs" }
]
{
// ─────────────────────────────────────────────────────────────────────────────
// Editor
// ─────────────────────────────────────────────────────────────────────────────
"editor.fontSize": 17,
"editor.tabSize": 2,
"editor.detectIndentation": true,
"editor.rulers": [
100
],
"editor.wordWrapColumn": 100,
"editor.cursorBlinking": "smooth",
"editor.cursorSmoothCaretAnimation": "on",
"editor.dragAndDrop": true,
"editor.minimap.enabled": false,
// ─────────────────────────────────────────────────────────────────────────────
// Workbench / UI
// ─────────────────────────────────────────────────────────────────────────────
"breadcrumbs.enabled": false,
"workbench.editor.enablePreview": false,
"workbench.editor.wrapTabs": true,
"workbench.editor.empty.hint": "hidden",
"workbench.layoutControl.enabled": false,
"workbench.colorCustomizations": {
"[Default Dark Modern]": {
// This is the pill (and often what makes that top row feel too light)
"commandCenter.background": "#1e1e1f",
"commandCenter.activeBackground": "#1e1e1f",
"commandCenter.border": "#00000000",
// These help the surrounding chrome blend so the seam disappears
"activityBar.background": "#1e1e1f",
"sideBar.background": "#1e1e1f",
// This one is the usual culprit for the “big light strip” under the native bar
"editorGroupHeader.noTabsBackground": "#1e1e1f",
"editorGroupHeader.tabsBackground": "#1e1e1f",
"sideBarSectionHeader.background": "#1e1e1f",
"sideBarSectionHeader.foreground": "#CCCCCC",
"sideBarSectionHeader.border": "#00000000",
"terminal.background": "#1e1e1f",
"panel.background": "#1e1e1f",
},
},
// ─────────────────────────────────────────────────────────────────────────────
// Explorer / Diff
// ─────────────────────────────────────────────────────────────────────────────
"explorer.openEditors.visible": 0,
"explorer.confirmDragAndDrop": false,
"diffEditor.ignoreTrimWhitespace": false,
// ─────────────────────────────────────────────────────────────────────────────
// Window
// ─────────────────────────────────────────────────────────────────────────────
"window.nativeTabs": true,
"window.openNewWindowsInNativeTabs": true,
"window.systemColorTheme": "dark",
"window.confirmBeforeClose": "always",
// Command Center toggle
"window.commandCenter": false,
// ─────────────────────────────────────────────────────────────────────────────
// Git
// ─────────────────────────────────────────────────────────────────────────────
"git.confirmSync": false,
"git.autofetch": false,
"git.enableSmartCommit": true,
"git.enableCommitSigning": true,
"git.autorefresh": true,
"git.decorations.enabled": true,
"git.untrackedChanges": "hidden",
"git.statusLimit": 1000,
// ─────────────────────────────────────────────────────────────────────────────
// Language features / validation
// ─────────────────────────────────────────────────────────────────────────────
"html.autoClosingTags": false,
"javascript.validate.enable": false,
// TypeScript performance / behavior
"typescript.tsserver.maxTsServerMemory": 4096,
"typescript.disableAutomaticTypeAcquisition": true,
"typescript.tsserver.experimental.enableProjectDiagnostics": false,
// ─────────────────────────────────────────────────────────────────────────────
// Formatting (per-language)
// ─────────────────────────────────────────────────────────────────────────────
"[javascript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
},
"[json]": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
},
"[typescript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
},
"[typescriptreact]": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
},
"[python]": {
"editor.formatOnType": true,
},
// ─────────────────────────────────────────────────────────────────────────────
// Terminal
// ─────────────────────────────────────────────────────────────────────────────
"terminal.integrated.enableMultiLinePasteWarning": "never",
"terminal.integrated.defaultProfile.osx": "zsh",
// ─────────────────────────────────────────────────────────────────────────────
// Search / File watching
// ─────────────────────────────────────────────────────────────────────────────
"files.watcherExclude": {
"**/.git/**": true,
"**/.pnpm/**": true,
"**/node_modules/**": true,
"**/node_modules/.pnpm/**": true,
"**/dist/**": true,
"**/build/**": true,
"**/.next/**": true
},
"search.exclude": {
"**/.git/**": true,
"**/.pnpm/**": true,
"**/node_modules/**": true,
"**/node_modules/.pnpm/**": true,
"**/dist/**": true,
"**/build/**": true,
"**/.next/**": true,
"**/bower_components/**": true,
"**/*.code-search/**": true
},
"search.followSymlinks": false,
"search.ripgrep.maxThreads": 2,
"search.useIgnoreFiles": true,
"search.useGlobalIgnoreFiles": true,
"search.useParentIgnoreFiles": true,
// ─────────────────────────────────────────────────────────────────────────────
// Extensions
// ─────────────────────────────────────────────────────────────────────────────
"code-runner.saveFileBeforeRun": true,
"redhat.telemetry.enabled": true,
// GitLens UI tweaks
"gitlens.currentLine.enabled": false,
"gitlens.hovers.currentLine.over": "line",
"gitlens.codeLens.enabled": false,
"gitlens.hovers.enabled": false,
// GitLens AI (updated format)
"gitlens.ai.model": "openai:gpt-4-turbo",
// Copilot
"github.copilot.enable": {
"*": false,
"plaintext": false,
"markdown": false,
"scminput": false,
},
"github.copilot.nextEditSuggestions.enabled": true,
// Copilot Chat / tools
"chat.tools.terminal.autoApprove": {
"npm test": true,
"/^cat \\.husky/pre-commit \\| od -c$/": {
"approve": true,
"matchCommandLine": true,
},
"npm run type-check": true,
},
"git.replaceTagsWhenPull": true,
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment