Our great sponsors
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
-
WorkOS
The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
-
ohmyzsh
🙃 A delightful community-driven (with 2,300+ contributors) framework for managing your zsh configuration. Includes 300+ optional plugins (rails, git, macOS, hub, docker, homebrew, node, php, python, etc), 140+ themes to spice up your morning, and an auto-update tool so that makes it easy to keep up with the latest updates from the community.
#!/usr/bin/env fish # Configure my shell's prompt starship init fish | source # Make it easy to switch to commonly-used directories zoxide init fish | source # Set up my ruby environment with rbenv status --is-interactive; and source (rbenv init -|psub) set -gx PATH "$HOME/.rbenv/bin" $PATH # Use VS Code as the default editor and block until the file is closed set -x EDITOR 'code --wait' # Make skim do the right thing by default set -x SKIM_DEFAULT_COMMAND "fd --type f" ## Elixir and Erlang # Elixir package timeout to prevent stalled downloads set -x HEX_HTTP_TIMEOUT 59 # Elixir IEx history config set -x ERL_AFLAGS '-kernel shell_history enabled' ## Rust # Enable a shared Cargo target directory to cut down on disk usage set -x CARGO_TARGET_DIR $HOME/.cargo/shared_target # Ensure that Cargo binaries are in the PATH set PATH $HOME/.cargo/bin/ $PATH # Helpful expansions abbr -a -g gp git push abbr -a -g gc git commit -asm abbr -a -g gst git status # Helpful aliases command -q exa; and alias la="exa -abghl --git --color=automatic" command -q exa; and alias ll="exa -bghl --git --color=automatic" # Fisher! if not functions -q fisher set -q XDG_CONFIG_HOME; or set XDG_CONFIG_HOME ~/.config curl https://git.io/fisher --create-dirs -sLo $XDG_CONFIG_HOME/fish/functions/fisher.fish fish -c fisher end ## Node # Volta config set -gx VOLTA_HOME "$HOME/.volta" set -gx PATH "$VOLTA_HOME/bin" $PATH
At some point, perhaps ~10 years ago, I was introduced to ZSH with the venerable Oh My ZSH framework. For me, this was a huge awakening because it taught me about how much shell improvements can impact your life. I gradually evolved my ZSH setup to use package managers like antigen and began to invest more in creature comforts.
Since I'm a big fan of toolchains as code, I've fallen in love with volta for managing my Node.js and Yarn versions. Don't forget commands like volta pin in Node.js projects to lock in versions to your package.json file!
I use zoxide to quickly switch to recently used directories, or to paths which I use particularly commonly. It can be hard to remember to use z instead of cd but once you get the hang of it you'll never go back.
Even though ls is a good-old standby, I prefer the aliases for ll and la that rely on exa. These aliases default to showing important information like git status and can even prevent me from needing to launch subsequent, exploratory commands.
My setup relies heavily on rbenv since I use Ruby for automation all over the place.
The Starship prompt is a terrific alternative to slower prompts written in pure shell. It supports a whole variety of status features, is quite performant, and has easy-to-understand configuration options.
Tools like skim work great with others like fd to provide additional functionality when it comes to locating files and filtering through search results. I also use skim's sk command pretty heavily in other scripts when interactivity is required.
At some point, perhaps ~10 years ago, I was introduced to ZSH with the venerable Oh My ZSH framework. For me, this was a huge awakening because it taught me about how much shell improvements can impact your life. I gradually evolved my ZSH setup to use package managers like antigen and began to invest more in creature comforts.
Tools like skim work great with others like fd to provide additional functionality when it comes to locating files and filtering through search results. I also use skim's sk command pretty heavily in other scripts when interactivity is required.