{"id":15712227,"url":"https://github.com/statico/dotfiles","last_synced_at":"2025-04-14T08:55:11.532Z","repository":{"id":741775,"uuid":"392701","full_name":"statico/dotfiles","owner":"statico","description":":floppy_disk:  Ian's dotfiles, utils, and Zsh/Vim/tmux configs","archived":false,"fork":false,"pushed_at":"2025-04-01T18:52:25.000Z","size":23939,"stargazers_count":703,"open_issues_count":0,"forks_count":91,"subscribers_count":22,"default_branch":"main","last_synced_at":"2025-04-07T01:11:14.868Z","etag":null,"topics":["bash","dotfiles","dotfiles-manager","emacs-configuration","gitconfig","javascript","postgresql","tmux","vim","vim-configuration","vim-plugins","vimrc","visual-studio-code","vscode","zsh","zshrc"],"latest_commit_sha":null,"homepage":"https://langworth.com/","language":"Perl","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/statico.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["statico"],"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2009-12-02T11:56:55.000Z","updated_at":"2025-04-04T20:59:40.000Z","dependencies_parsed_at":"2023-07-09T09:03:28.549Z","dependency_job_id":"e72b5a9b-191b-4629-a7c7-058a3d900ddf","html_url":"https://github.com/statico/dotfiles","commit_stats":{"total_commits":1192,"total_committers":11,"mean_commits":"108.36363636363636","dds":"0.20973154362416102","last_synced_commit":"d04ad0240a8f5383899bdfbaaf94cf815e105742"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/statico%2Fdotfiles","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/statico%2Fdotfiles/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/statico%2Fdotfiles/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/statico%2Fdotfiles/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/statico","download_url":"https://codeload.github.com/statico/dotfiles/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248852109,"owners_count":21171839,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bash","dotfiles","dotfiles-manager","emacs-configuration","gitconfig","javascript","postgresql","tmux","vim","vim-configuration","vim-plugins","vimrc","visual-studio-code","vscode","zsh","zshrc"],"created_at":"2024-10-03T21:15:14.238Z","updated_at":"2025-04-14T08:55:11.507Z","avatar_url":"https://github.com/statico.png","language":"Perl","readme":"# 💾 Ian's Dotfiles and Vim config\n\n[![build status](https://img.shields.io/github/actions/workflow/status/statico/dotfiles/build.yml?branch=main\u0026style=flat-square)](https://ghcr.io/statico/dotfiles)\n\nThese are my dotfiles. There are many like them, but these are mine. This started around 2001 or so when I used many different operating systems and environments. Now I mostly use macOS and Linux but still keep the environment in sync.\n\n![CleanShot 2021-10-01 at 20 15 23@2x](https://user-images.githubusercontent.com/137158/135730113-495868f0-e4ad-4e8a-a10e-7f07be402e9d.png)\n\nFavorite font at the moment: [Iosevka Term](https://typeof.net/Iosevka/)\n\n### Demo\n\n```\n$ docker run --rm -it ghcr.io/statico/dotfiles\ndemouser@987552d4c629:/\n〉\n```\n\nA random prompt color is picked at first install. Edit `.zshlocal` for details.\n\n### Installation\n\n1. `curl -sL https://statico.link/zsh | zsh`\n1. `chsh` or otherwise set your shell to use [Zsh](http://www.zsh.org/)\n1. Restart your shell\n\nOptionally create a `.postinstall` with some machine-specific commands, like `git config --global user.email \"my-work-email@example.com\"`\". You can also create a `.vimlocal` and `.gvimlocal` for machine-specific Vim customizations.\n\n### Customizing\n\n- Fork this repo\n- Update `install.zsh` to point at your own\n- Go nuts\n\n### Highlights (or, Why I Use This)\n\nMy first boss told me that I should have a digital _toolkit_ -- a set of tools that I keep with me that I can use anywhere. In college I used many different kinds of Unix variants, and so it made sense to build a kit that could bootstrap my environment anywhere. Today, I use macOS, Windows, and various distributions of Linux, and this kit has proven invaluable in getting set up quickly on new hardware and VMs.\n\nWhile this project includes a huge collection of configuration snippets I've collected over the years, a few parts stand out and are things I use daily:\n\n- My [`zshrc`](https://github.com/statico/dotfiles/blob/main/.zshrc), which has a minimal, customized prompt that I like the best, as well as many aliases and shortcuts to standardize environments (like making sure Unicode displays properly and `ls` shows colors) and reduce keystrokes (like with my ~60 or so Git aliases). There are also a few functions that make host-specific customizations easy using a `.zshlocal` script which never gets checked in. There are tons of tricks in there so it's worth a skim.\n\n- My [`vimrc`](https://github.com/statico/dotfiles/blob/main/.vim/vimrc), which many people became interested in after reading my [articles about Vim](https://blog.langworth.com). I also have [an `update.sh` script](https://github.com/statico/dotfiles/blob/main/.vim/update.sh) which installs all of the Vim plugins and themes I like to use, and it gets run as part of the Zsh update process (aliased to `ZU`). Is my Vim update thing better than Vundle or another plugin manager? Maybe. It's very simple and fast and works everywhere, so I stick with it.\n\n### Why Zsh instead of Bash?\n\nOnly a few reasons, honestly:\n\n- Easier completion - I can type `/u/l/b/x`\u003ckbd\u003eTab\u003c/kbd\u003e and that completes to `/usr/local/bin/x`\n\n- I'm able to hack \u003ckbd\u003eCtrl-W\u003c/kbd\u003e to delete to the previous word _or_ slash, so `/usr/local/bin`\u003ckbd\u003eCtrl-W\u003c/kbd\u003e becomes `/usr/local/`\n\n- I've got a thing that shows me five red dots when a completion is in progress, such as when completing files from remote SSH servers.\n\n- Globbing - The `**` recursive operator and qualifiers like `(.)` and `(/)` for globbing are essential, like `rm **/.DS_Store`\n\n- Legacy - I started using Zsh in 2002 or so when it was edgy.\n\n### Common Tricks\n\nHere's what I use the most often on the command line:\n\n- `j foo` to `cd` to the most commonly used directory that fuzzy-matches foo (via [autojump](https://github.com/wting/autojump))\n- `l` and `ll` for long directory listings, `ltr` for showing the most recent files\n- Other single-character aliases: `g` for `git`, `d` for `docker`, `dc` for `docker-compose`, `k` for `tree`, `y` for `yarn`\n- \u003ckbd\u003eMeta-L\u003c/kbd\u003e which appends `2\u003e\u00261|less` to the command and hits \u003ckbd\u003eEnter\u003c/kbd\u003e, running the command and viewing its output in a pager\n- `ZU` to update Vim plugins or just `ZR` to restart Zsh after a .zshrc change\n- Searching with `rg` ([ripgrep](https://github.com/BurntSushi/ripgrep)), then \u003ckbd\u003eCtrl-A\u003c/kbd\u003e\u003ckbd\u003ev\u003c/kbd\u003e\u003ckbd\u003eEnter\u003c/kbd\u003e (changing `rg` to `vrg`) to edit all of the files that matched in Vim\n- `cd`ing to a directory and then using \u003ckbd\u003eMeta-P\u003c/kbd\u003e to pop to the previous directory (since `auto_pushd` is enabled and silent)\n- `psl` to search for processes (since I never remember the `pgrep` syntax and it's never been consistent across platforms)\n- `open` and `trash` commands that work across macOS and Linux\n- If I'm typing a command but realize that I need to do something else first, \u003ckbd\u003eMeta-Q\u003c/kbd\u003e queues the current command and clears the command line, then pastes it back in after I enter and run another command first.\n- Git commands: `st` for status, `gd` for a git diff, `gl` for a quick log, `sci \u003cmessage\u003e` to commit everything with a message, or `gap` to cherry pick and then `gc \u003cmessage\u003e` to commit.\n- \u003ckbd\u003eCtrl-G Ctrl-G\u003c/kbd\u003e quick switches to a git branch thanks to [fzf-git.sh](https://github.com/junegunn/fzf-git.sh)\n- Fuzzy history search using \u003ckbd\u003eCtrl-R\u003c/kbd\u003e and [FZF](https://github.com/junegunn/fzf)\n- Each host gets a different `colorprompt` command in its `~/.zshlocal`. I use `ansimodes` or `256-colors.sh` to pick a color. (Both are already in the `~/bin/` directory, which is added to the `$PATH`.)\n\n### See also\n\n- [Oh My Zsh](https://github.com/robbyrussell/oh-my-zsh) which is a very popular way of customizing Zsh (but not all dotfiles or Vim)\n- http://github.com/jbalogh/dotfiles which this was modeled after\n","funding_links":["https://github.com/sponsors/statico"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstatico%2Fdotfiles","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstatico%2Fdotfiles","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstatico%2Fdotfiles/lists"}