# -*-mode:sh-*- vim:ft=shell-script # ~/.zshrc # ============================================================================= # Executed by Z shell for interactive shells. # # See http://zsh.sourceforge.net/ # shellcheck shell=bash # shellcheck source=/dev/null # shellcheck disable=SC2034 # Hide default user from local prompt. export DEFAULT_USER="${USER}" # Disable autosuggestion for large buffers. export ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE="20" # Enable aynchronous mode. export ZSH_AUTOSUGGEST_USE_ASYNC=true # If you come from bash you might have to change your $PATH. # export PATH=$HOME/bin:/usr/local/bin:$PATH # Set path to your oh-my-zsh installation. export ZSH="${HOME}/.oh-my-zsh" # Set name of the theme to load --- if set to "random", it will # load a random theme each time oh-my-zsh is loaded, in which case, # to know which specific one was loaded, run: echo $RANDOM_THEME # See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes ZSH_THEME="agnoster" ZSH_THEME="powerlevel9k/powerlevel9k" ZSH_THEME="powerlevel10k/powerlevel10k" # Set list of themes to pick from when loading at random # Setting this variable when ZSH_THEME=random will cause zsh to load # a theme from this variable instead of looking in ~/.oh-my-zsh/themes/ # If set to an empty array, this variable will have no effect. # ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" ) # Uncomment the following line to use case-sensitive completion. CASE_SENSITIVE="true" # Uncomment the following line to use hyphen-insensitive completion. # Case-sensitive completion must be off. _ and - will be interchangeable. # HYPHEN_INSENSITIVE="true" # Uncomment the following line to disable bi-weekly auto-update checks. DISABLE_AUTO_UPDATE="true" # Uncomment the following line to automatically update without prompting. # DISABLE_UPDATE_PROMPT="true" # Uncomment the following line to change how often to auto-update (in days). # export UPDATE_ZSH_DAYS=13 # Uncomment the following line if pasting URLs and other text is messed up. # DISABLE_MAGIC_FUNCTIONS=true # Uncomment the following line to disable colors in ls. # DISABLE_LS_COLORS="true" # Uncomment the following line to disable auto-setting terminal title. # DISABLE_AUTO_TITLE="true" # Uncomment the following line to enable command auto-correction. # ENABLE_CORRECTION="true" # Uncomment the following line to display red dots whilst waiting for completion. COMPLETION_WAITING_DOTS="true" # Uncomment the following line if you want to disable marking untracked files # under VCS as dirty. This makes repository status check for large repositories # much, much faster. # DISABLE_UNTRACKED_FILES_DIRTY="true" # Uncomment the following line if you want to change the command execution time # stamp shown in the history command output. # You can set one of the optional three formats: # "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd" # or set a custom format using the strftime function format specifications, # see 'man strftime' for details. HIST_STAMPS="yyyy-mm-dd" # Would you like to use another custom folder than $ZSH/custom? # ZSH_CUSTOM=/path/to/new-custom-folder # Which plugins would you like to load? # Standard plugins can be found in ~/.oh-my-zsh/plugins/* # Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/ # Example format: plugins=(rails git textmate ruby lighthouse) # Add wisely, as too many plugins slow down shell startup. plugins=( # asdf # Integrates with ASDF extendable version manager colored-man-pages # Adds colors to man pages common-aliases # Aliases for many commonly used commands cp # Secure `cpv` function that uses `rsync` docker # Aliases for [Docker](https://www.docker.com/) docker-compose # Aliases for [Docker-Compose](https://docs.docker.com/compose/) dotenv # Load project ENV variables from folder `.env` files extract # Multi-format decompression function `x` history # Aliases for `history` command pj # Project Jump folder shortcuts rsync # Aliases for `rsync` command sublime # Aliases for [Sublime Text](https://www.sublimetext.com/) systemadmin # Utilities for SysAdmins. z # Tracks your most used directories. zsh-autosuggestions # Command suggestions based on history and completions (https://github.com/zsh-users/zsh-autosuggestions) zsh-syntax-highlighting # Fish shell like syntax highlighting (https://github.com/zsh-users/zsh-syntax-highlighting) ) # composer # Aliases for [Composer](https://getcomposer.org/) # symfony2 # Completion for [Symfony 2](https://symfony.com/) if [[ "$OSTYPE" =~ ^darwin ]]; then plugins+=( osx # Utilities for macOS ) fi # (debian, dnf, fedora, ubuntu) # Load theme Powerlevel10K if test "${ZSH_THEME#*powerlevel10k}" != "$ZSH_THEME"; then [ -f "$HOME"/.p10k.zsh ] && \. "$HOME"/.p10k.zsh fi # Load Oh My Zsh . "$ZSH"/oh-my-zsh.sh # User configuration if [ -d /usr/local/man ]; then export MANPATH="/usr/local/man:$MANPATH" fi # You may need to manually set your language environment export LANG=en_US.UTF-8 # Set preferred editor for local and remote sessions. if [[ -n $SSH_CONNECTION ]]; then export EDITOR='vim' elif command -v mvim > /dev/null; then export EDITOR='mvim'; else export EDITOR='vim' fi # Compilation flags # export ARCHFLAGS="-arch x86_64" # Set personal aliases, overriding those provided by oh-my-zsh libs, # plugins, and themes. Aliases can be placed here, though oh-my-zsh # users are encouraged to define aliases within the ZSH_CUSTOM folder. # For a full list of active aliases, run `alias`. # # Example aliases # alias zshconfig="mate ~/.zshrc" # alias ohmyzsh="mate ~/.oh-my-zsh" # Command-line shell completions # ----------------------------------------------------------------------------- # Provide Homebrew completions (if installed). # See https://docs.brew.sh/Shell-Completion if type brew &> /dev/null; then FPATH=$(brew --prefix)/share/zsh/site-functions:$FPATH fi # Provide Chezmoi completions (if installed). # See https://github.com/twpayne/chezmoi/blob/master/docs/REFERENCE.md if command -v chezmoi > /dev/null; then eval "$(chezmoi completion zsh)" fi # Development environments # ----------------------------------------------------------------------------- # Enable ASDF Extendable version manager (https://asdf-vm.com). # This should replace all language-secific version managers. ASDF_DIR="${ASDF_DIR:-$HOME/.asdf}" if [[ ! -d $ASDF_DIR ]] && type brew &> /dev/null; then ASDF_DIR="$(brew --prefix asdf)" fi [ -s "$ASDF_DIR/asdf.sh" ] && \. "$ASDF_DIR/asdf.sh" # Provide ASDF completions (already loaded if using Homebrew). if [ -s "$ASDF_DIR/completions" ]; then fpath=(${ASDF_DIR}/completions $fpath) # initialise completions with ZSH's compinit autoload -Uz compinit compinit fi # Enable Node Version Manager. export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # Provide Node completions. [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # Enable Python version management. if command -v pyenv > /dev/null; then eval "$(pyenv init -)" fi # Load Ruby version management. if command -v rbenv > /dev/null; then eval "$(rbenv init -)" fi # Add Ruby gems to PATH. if command -v ruby > /dev/null && command -v gem > /dev/null; then PATH="$(ruby -r rubygems -e 'puts Gem.user_dir')/bin:$PATH" fi # Provide Travis CI completions. [ -f "$HOME"/.travis/travis.sh ] && \. "$HOME"/.travis/travis.sh # Varia # ----------------------------------------------------------------------------- # Point ripgrep to its configuration file. # See https://github.com/BurntSushi/ripgrep/blob/master/GUIDE.md export RIPGREP_CONFIG_PATH="$HOME/.ripgreprc" # Includes # ----------------------------------------------------------------------------- # Load cross-compatible Bash functions declarations from separate file. if [ -f "$HOME"/.bash_functions ]; then \. "$HOME"/.bash_functions fi # Load cross-compatible Bash alias definitions from separate file. if [ -f "$HOME"/.bash_aliases ]; then \. "$HOME"/.bash_aliases fi # Load cross-compatible Bash custom code from separate file. if [ -f "$HOME"/.bash_extras ]; then \. "$HOME"/.bash_extras fi