Config files for zsh
This commit is contained in:
121
.p10k.omp.yml
Normal file
121
.p10k.omp.yml
Normal file
@@ -0,0 +1,121 @@
|
||||
# yaml-language-server: $schema=https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json
|
||||
|
||||
version: 2
|
||||
blocks:
|
||||
- type: prompt
|
||||
alignment: left
|
||||
newline: true
|
||||
segments:
|
||||
- type: text
|
||||
style: plain
|
||||
template: ╭─
|
||||
foreground: "#585858"
|
||||
|
||||
- type: os
|
||||
style: plain
|
||||
template: " {{ if .WSL }}WSL at {{ end }}{{.Icon}} "
|
||||
background: "#303030"
|
||||
foreground: "#26C6DA"
|
||||
|
||||
- type: text
|
||||
style: plain
|
||||
template:
|
||||
background: parentBackground
|
||||
foreground: "#8a8a8a"
|
||||
|
||||
- type: path
|
||||
style: plain
|
||||
template: ' {{ if eq .PWD "~" }} {{ else }} {{ end }}{{ .Parent }}'
|
||||
background: parentBackground
|
||||
foreground: "#0087af"
|
||||
|
||||
- type: path
|
||||
style: plain
|
||||
template: "<b>{{ .Path }}</b> "
|
||||
properties:
|
||||
style: folder
|
||||
background: parentBackground
|
||||
foreground: "#00afff"
|
||||
|
||||
- type: git
|
||||
style: plain
|
||||
template: "<#8a8a8a></> {{ if .UpstreamIcon}}{{ .UpstreamIcon }}{{ else }} {{ end }}{{ .HEAD }}{{ if .Working.Changed }} <#00afff>{{ .Working.String }}</>{{ end }} "
|
||||
background: parentBackground
|
||||
foreground: "#5fd700"
|
||||
properties:
|
||||
branch_icon: "<b> </b>"
|
||||
git_icon: " "
|
||||
github_icon: " "
|
||||
gitlab_icon: " "
|
||||
fetch_upstream_icon: true
|
||||
fetch_status: true
|
||||
|
||||
- type: text
|
||||
style: plain
|
||||
template:
|
||||
background: transparent
|
||||
foreground: parentBackground
|
||||
|
||||
- type: prompt
|
||||
alignment: right
|
||||
filler: "<#585858>-</>"
|
||||
segments:
|
||||
- type: text
|
||||
style: plain
|
||||
template: ""
|
||||
background: transparent
|
||||
foreground: parentForeground
|
||||
|
||||
- type: status
|
||||
style: plain
|
||||
template: " {{ if eq .Code 0 }}<#5faf00>✔</>{{ else }}{{.String}} ✘{{ end }}"
|
||||
background: parentForeground
|
||||
foreground: "#d70000"
|
||||
properties:
|
||||
always_enabled: true
|
||||
|
||||
- type: python
|
||||
style: plain
|
||||
template: " <#8a8a8a></> {{ .Venv }} "
|
||||
background: parentBackground
|
||||
foreground: "#00afaf"
|
||||
properties:
|
||||
fetch_virtual_env: true
|
||||
display_mode: environment
|
||||
|
||||
- type: executiontime
|
||||
style: plain
|
||||
template: " <#8a8a8a></> {{ .FormattedMs }} "
|
||||
background: parentBackground
|
||||
foreground: "#a8a8a8"
|
||||
properties:
|
||||
style: round
|
||||
|
||||
- type: time
|
||||
style: plain
|
||||
template: " <#8a8a8a></> {{ .CurrentDate | date .Format }} \uf017 "
|
||||
properties:
|
||||
time_format: "15:04:05"
|
||||
background: parentBackground
|
||||
foreground: "#5f8787"
|
||||
|
||||
- type: text
|
||||
style: plain
|
||||
template: "─╮"
|
||||
background: transparent
|
||||
foreground: "#585858"
|
||||
|
||||
- type: prompt
|
||||
alignment: left
|
||||
segments:
|
||||
- type: text
|
||||
style: plain
|
||||
foreground: "#585858"
|
||||
template: "╰─ "
|
||||
newline: true
|
||||
- type: rprompt
|
||||
segments:
|
||||
- type: text
|
||||
style: plain
|
||||
foreground: "#585858"
|
||||
template: "─╯"
|
||||
63
.zsh/colors.zsh
Normal file
63
.zsh/colors.zsh
Normal file
@@ -0,0 +1,63 @@
|
||||
# Use diff --color if available
|
||||
if command diff --color /dev/null{,} &>/dev/null; then
|
||||
function diff {
|
||||
command diff --color "$@"
|
||||
}
|
||||
fi
|
||||
|
||||
# Default coloring for BSD-based ls
|
||||
export LSCOLORS="Gxfxcxdxbxegedabagacad"
|
||||
|
||||
# Default coloring for GNU-based ls
|
||||
if [[ -z "$LS_COLORS" ]]; then
|
||||
# Define LS_COLORS via dircolors if available. Otherwise, set a default
|
||||
# equivalent to LSCOLORS (generated via https://geoff.greer.fm/lscolors)
|
||||
if (( $+commands[dircolors] )); then
|
||||
[[ -f "$HOME/.dircolors" ]] \
|
||||
&& source <(dircolors -b "$HOME/.dircolors") \
|
||||
|| source <(dircolors -b)
|
||||
else
|
||||
export LS_COLORS="di=1;36:ln=35:so=32:pi=33:ex=31:bd=34;46:cd=34;43:su=30;41:sg=30;46:tw=30;42:ow=30;43"
|
||||
fi
|
||||
fi
|
||||
|
||||
function test-ls-args {
|
||||
local cmd="$1" # ls, gls, colorls, ...
|
||||
local args="${@[2,-1]}" # arguments except the first one
|
||||
command "$cmd" "$args" /dev/null &>/dev/null
|
||||
}
|
||||
|
||||
# Find the option for using colors in ls, depending on the version
|
||||
case "$OSTYPE" in
|
||||
netbsd*)
|
||||
# On NetBSD, test if `gls` (GNU ls) is installed (this one supports colors);
|
||||
# otherwise, leave ls as is, because NetBSD's ls doesn't support -G
|
||||
test-ls-args gls --color && alias ls='gls --color=tty'
|
||||
;;
|
||||
openbsd*)
|
||||
# On OpenBSD, `gls` (ls from GNU coreutils) and `colorls` (ls from base,
|
||||
# with color and multibyte support) are available from ports.
|
||||
# `colorls` will be installed on purpose and can't be pulled in by installing
|
||||
# coreutils (which might be installed for ), so prefer it to `gls`.
|
||||
test-ls-args gls --color && alias ls='gls --color=tty'
|
||||
test-ls-args colorls -G && alias ls='colorls -G'
|
||||
;;
|
||||
(darwin|freebsd)*)
|
||||
# This alias works by default just using $LSCOLORS
|
||||
test-ls-args ls -G && alias ls='ls -G'
|
||||
# Only use GNU ls if installed and there are user defaults for $LS_COLORS,
|
||||
# as the default coloring scheme is not very pretty
|
||||
zstyle -t ':omz:lib:theme-and-appearance' gnu-ls \
|
||||
&& test-ls-args gls --color \
|
||||
&& alias ls='gls --color=tty'
|
||||
;;
|
||||
*)
|
||||
if test-ls-args ls --color; then
|
||||
alias ls='ls --color=tty'
|
||||
elif test-ls-args ls -G; then
|
||||
alias ls='ls -G'
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
unfunction test-ls-args
|
||||
106
.zsh/keybinds.zsh
Normal file
106
.zsh/keybinds.zsh
Normal file
@@ -0,0 +1,106 @@
|
||||
# http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html
|
||||
# http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Zle-Builtins
|
||||
# http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Standard-Widgets
|
||||
|
||||
# Make sure that the terminal is in application mode when zle is active, since
|
||||
# only then values from $terminfo are valid
|
||||
if (( ${+terminfo[smkx]} )) && (( ${+terminfo[rmkx]} )); then
|
||||
function zle-line-init() {
|
||||
echoti smkx
|
||||
}
|
||||
function zle-line-finish() {
|
||||
echoti rmkx
|
||||
}
|
||||
zle -N zle-line-init
|
||||
zle -N zle-line-finish
|
||||
fi
|
||||
|
||||
# Use emacs key bindings
|
||||
bindkey -e
|
||||
|
||||
# Start typing + [Up-Arrow] - fuzzy find history forward
|
||||
autoload -U up-line-or-beginning-search
|
||||
zle -N up-line-or-beginning-search
|
||||
|
||||
bindkey -M emacs "^[[A" up-line-or-beginning-search
|
||||
bindkey -M viins "^[[A" up-line-or-beginning-search
|
||||
bindkey -M vicmd "^[[A" up-line-or-beginning-search
|
||||
if [[ -n "${terminfo[kcuu1]}" ]]; then
|
||||
bindkey -M emacs "${terminfo[kcuu1]}" up-line-or-beginning-search
|
||||
bindkey -M viins "${terminfo[kcuu1]}" up-line-or-beginning-search
|
||||
bindkey -M vicmd "${terminfo[kcuu1]}" up-line-or-beginning-search
|
||||
fi
|
||||
|
||||
# Start typing + [Down-Arrow] - fuzzy find history backward
|
||||
autoload -U down-line-or-beginning-search
|
||||
zle -N down-line-or-beginning-search
|
||||
|
||||
bindkey -M emacs "^[[B" down-line-or-beginning-search
|
||||
bindkey -M viins "^[[B" down-line-or-beginning-search
|
||||
bindkey -M vicmd "^[[B" down-line-or-beginning-search
|
||||
if [[ -n "${terminfo[kcud1]}" ]]; then
|
||||
bindkey -M emacs "${terminfo[kcud1]}" down-line-or-beginning-search
|
||||
bindkey -M viins "${terminfo[kcud1]}" down-line-or-beginning-search
|
||||
bindkey -M vicmd "${terminfo[kcud1]}" down-line-or-beginning-search
|
||||
fi
|
||||
|
||||
# [Home] - Go to beginning of line
|
||||
if [[ -n "${terminfo[khome]}" ]]; then
|
||||
bindkey -M emacs "${terminfo[khome]}" beginning-of-line
|
||||
bindkey -M viins "${terminfo[khome]}" beginning-of-line
|
||||
bindkey -M vicmd "${terminfo[khome]}" beginning-of-line
|
||||
fi
|
||||
# [End] - Go to end of line
|
||||
if [[ -n "${terminfo[kend]}" ]]; then
|
||||
bindkey -M emacs "${terminfo[kend]}" end-of-line
|
||||
bindkey -M viins "${terminfo[kend]}" end-of-line
|
||||
bindkey -M vicmd "${terminfo[kend]}" end-of-line
|
||||
fi
|
||||
|
||||
# [Shift-Tab] - move through the completion menu backwards
|
||||
if [[ -n "${terminfo[kcbt]}" ]]; then
|
||||
bindkey -M emacs "${terminfo[kcbt]}" reverse-menu-complete
|
||||
bindkey -M viins "${terminfo[kcbt]}" reverse-menu-complete
|
||||
bindkey -M vicmd "${terminfo[kcbt]}" reverse-menu-complete
|
||||
fi
|
||||
|
||||
# [Backspace] - delete backward
|
||||
bindkey -M emacs '^?' backward-delete-char
|
||||
bindkey -M viins '^?' backward-delete-char
|
||||
bindkey -M vicmd '^?' backward-delete-char
|
||||
# [Delete] - delete forward
|
||||
if [[ -n "${terminfo[kdch1]}" ]]; then
|
||||
bindkey -M emacs "${terminfo[kdch1]}" delete-char
|
||||
bindkey -M viins "${terminfo[kdch1]}" delete-char
|
||||
bindkey -M vicmd "${terminfo[kdch1]}" delete-char
|
||||
else
|
||||
bindkey -M emacs "^[[3~" delete-char
|
||||
bindkey -M viins "^[[3~" delete-char
|
||||
bindkey -M vicmd "^[[3~" delete-char
|
||||
|
||||
bindkey -M emacs "^[3;5~" delete-char
|
||||
bindkey -M viins "^[3;5~" delete-char
|
||||
bindkey -M vicmd "^[3;5~" delete-char
|
||||
fi
|
||||
|
||||
# [Ctrl-Delete] - delete whole forward-word
|
||||
bindkey -M emacs '^[[3;5~' kill-word
|
||||
bindkey -M viins '^[[3;5~' kill-word
|
||||
bindkey -M vicmd '^[[3;5~' kill-word
|
||||
|
||||
# [Ctrl-RightArrow] - move forward one word
|
||||
bindkey -M emacs '^[[1;5C' forward-word
|
||||
bindkey -M viins '^[[1;5C' forward-word
|
||||
bindkey -M vicmd '^[[1;5C' forward-word
|
||||
# [Ctrl-LeftArrow] - move backward one word
|
||||
bindkey -M emacs '^[[1;5D' backward-word
|
||||
bindkey -M viins '^[[1;5D' backward-word
|
||||
bindkey -M vicmd '^[[1;5D' backward-word
|
||||
|
||||
|
||||
bindkey '^r' history-incremental-search-backward # [Ctrl-r] - Search backward incrementally for a specified string. The string may begin with ^ to anchor the search to the beginning of the line.
|
||||
|
||||
# Edit the current command line in $EDITOR
|
||||
autoload -U edit-command-line
|
||||
zle -N edit-command-line
|
||||
bindkey '\C-x\C-e' edit-command-line
|
||||
58
.zshrc
Normal file
58
.zshrc
Normal file
@@ -0,0 +1,58 @@
|
||||
ZINIT_HOME="${XDG_DATA_HOME:-${HOME}/.local/share}/zinit/zinit.git"
|
||||
|
||||
# Automatically download zinit
|
||||
if [ ! -d "$ZINIT_HOME" ]; then
|
||||
mkdir -p "$(dirname $ZINIT_HOME)"
|
||||
git clone https://github.com/zdharma-continuum/zinit.git "$ZINIT_HOME"
|
||||
fi
|
||||
|
||||
source "${ZINIT_HOME}/zinit.zsh"
|
||||
|
||||
# Plugins
|
||||
|
||||
zinit light zsh-users/zsh-syntax-highlighting
|
||||
zinit light zsh-users/zsh-completions
|
||||
zinit light zsh-users/zsh-autosuggestions
|
||||
zinit light Aloxaf/fzf-tab
|
||||
|
||||
zinit snippet OMZP::git
|
||||
zinit snippet OMZP::sudo
|
||||
|
||||
source ~/.zsh/keybinds.zsh
|
||||
source ~/.zsh/colors.zsh
|
||||
|
||||
# Load completions
|
||||
autoload -U compinit && compinit
|
||||
zinit cdreplay -q
|
||||
|
||||
# History
|
||||
HISTSIZE=5000
|
||||
HISTFILE=~/.zsh_history
|
||||
SAVEHIST=10000
|
||||
setopt share_history
|
||||
setopt hist_ignore_space
|
||||
setopt extended_history
|
||||
setopt hist_expire_dups_first
|
||||
setopt hist_ignore_dups
|
||||
setopt hist_verify
|
||||
|
||||
# Completion
|
||||
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}'
|
||||
zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}
|
||||
zstyle ':completion:*' special-dirs true
|
||||
zstyle ':completion:*' menu no
|
||||
zstyle ':fzf-tab:complete:cd:*' fzf-preview 'ls --color $realpath'
|
||||
zstyle ':completion:*:cd:*' tag-order local-directories directory-stack path-directories
|
||||
zstyle ':completion:*' use-cache yes
|
||||
zstyle ':completion:*' cache-path $ZSH_CACHE_DIR
|
||||
|
||||
setopt auto_menu
|
||||
setopt complete_in_word
|
||||
setopt always_to_end
|
||||
setopt autocd
|
||||
|
||||
# Aliases
|
||||
source ~/.aliases
|
||||
|
||||
eval "$(fzf --zsh)"
|
||||
eval "$(oh-my-posh init zsh --config '~/.p10k.omp.yml')"
|
||||
9
MANIFEST
Normal file
9
MANIFEST
Normal file
@@ -0,0 +1,9 @@
|
||||
.emacs|symlink|
|
||||
.emacs.local|symlink|
|
||||
.emacs.rc|symlink|
|
||||
.config/kitty|symlink|
|
||||
.config/starship.toml|symlink|
|
||||
.zshrc|symlink|
|
||||
.p10k.omp.yml|symlink|
|
||||
.zsh|symlink|
|
||||
.aliases|symlink|
|
||||
50
deploy.sh
Executable file
50
deploy.sh
Executable file
@@ -0,0 +1,50 @@
|
||||
#!/bin/bash
|
||||
|
||||
SCRIPT_DIR="$( cd "$( dirname "$BASH_SOURCE[0]" )" && pwd )"
|
||||
|
||||
symlinkFile() {
|
||||
filename="$SCRIPT_DIR/$1"
|
||||
destination="$HOME/$2/$1"
|
||||
|
||||
mkdir -p $(dirname "$destination")
|
||||
|
||||
if [ -L "$destination" ]; then
|
||||
echo "[WARNING] $filename already symlinked"
|
||||
return
|
||||
fi
|
||||
|
||||
if [ -e "$destination" ]; then
|
||||
echo "[ERROR] $destination exists but it's not a symlink. Please fix that manually"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
ln -s "$filename" "$destination"
|
||||
echo "[OK] $filename -> $destination"
|
||||
}
|
||||
|
||||
deployManifest() {
|
||||
for row in $(cat $SCRIPT_DIR/$1); do
|
||||
if [[ "$row" =~ ^#.* ]]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
filename=$(echo $row | cut -d \| -f 1)
|
||||
operation=$(echo $row | cut -d \| -f 2)
|
||||
destination=$(echo $row | cut -d \| -f 3)
|
||||
|
||||
case $operation in
|
||||
symlink)
|
||||
symlinkFile $filename $destination
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "[WARNING] Unknown operation $operation. Skipping..."
|
||||
;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
echo "--- Common configs ---"
|
||||
deployManifest MANIFEST
|
||||
echo "--- Linux configs ---"
|
||||
deployManifest MANIFEST.linux
|
||||
Reference in New Issue
Block a user