These 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.
Favorite font at the moment: Iosevka Term
$ docker run --rm -it ghcr.io/statico/dotfiles
demouser@987552d4c629:/
〉
A random prompt color is picked at first install. Edit .zshlocal for details.
curl -sL statico.link/zsh | zsh(redirects to theinstall.zshfile in this repo)chshor otherwise set your shell to use Zsh- Restart your shell
Optionally 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 (though I primarily use Neovim now, the Vim config is kept for historical reasons).
- Fork this repo
- Update
install.zshto point at your own - Go nuts
My 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.
While 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:
-
My
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 andlsshows 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.zshlocalscript which never gets checked in. There are tons of tricks in there so it's worth a skim. -
My Neovim configuration (in
.config/nvim/init.lua), which I use as my primary editor. I also keep my oldvimrcfor historical reasons, which many people became interested in after reading my articles about Vim.
Only a few reasons, honestly:
-
Easier completion - I can type
/u/l/b/xTab and that completes to/usr/local/bin/x -
I'm able to hack Ctrl-W to delete to the previous word or slash, so
/usr/local/binCtrl-W becomes/usr/local/ -
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.
-
Globbing - The
**recursive operator and qualifiers like(.)and(/)for globbing are essential, likerm **/.DS_Store -
Legacy - I started using Zsh in 2002 or so when it was edgy.
Here's what I use the most often on the command line:
j footocdto the most commonly used directory that fuzzy-matches foo (via autojump)landllfor long directory listings,ltrfor showing the most recent files- Other single-character aliases:
gforgit,dfordocker,dcfordocker-compose,kfortree,yforyarn - Meta-L which appends
2>&1|lessto the command and hits Enter, running the command and viewing its output in a pager ZUto update Neovim plugins or justZRto restart Zsh after a .zshrc change- Searching with
rg(ripgrep), then Ctrl-AvEnter (changingrgtovrg) to edit all of the files that matched in Neovim cding to a directory and then using Meta-P to pop to the previous directory (sinceauto_pushdis enabled and silent)pslto search for processes (since I never remember thepgrepsyntax and it's never been consistent across platforms)openandtrashcommands that work across macOS and Linux- If I'm typing a command but realize that I need to do something else first, Meta-Q queues the current command and clears the command line, then pastes it back in after I enter and run another command first.
- Git commands:
stfor status,gdfor a git diff,glfor a quick log,sci <message>to commit everything with a message, orgapto cherry pick and thengc <message>to commit. - Ctrl-G Ctrl-G quick switches to a git branch thanks to fzf-git.sh
- Fuzzy history search using Ctrl-R and FZF
- Each host gets a different
colorpromptcommand in its~/.zshlocal. I useansimodesor256-colors.shto pick a color. (Both are already in the~/bin/directory, which is added to the$PATH.)
- Oh My Zsh which is a very popular way of customizing Zsh (but not all dotfiles or Neovim)
- http://github.com/jbalogh/dotfiles which this was modeled after