feat!: Alter most of major config files

- Bash: config file
- Zsh: config file
- Fish: config file and fish plugins
- Nvim: config files
- Kitty: config files
This commit is contained in:
Thomas Brasdefer 2025-01-03 00:39:01 +01:00
parent 646797117c
commit 04fd30ca73
Signed by: tombdf
GPG Key ID: A047E76CC4582988
20 changed files with 2434 additions and 918 deletions

View File

@ -13,9 +13,7 @@
url = "https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim" url = "https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim"
refreshPeriod = "168h" refreshPeriod = "168h"
[".config/kitty/kitty-themes"] [".config/kitty/theme.conf"]
type = "git-repo" type = "file"
url = "https://github.com/dexpota/kitty-themes.git" url = "https://raw.githubusercontent.com/kovidgoyal/kitty-themes/refs/heads/master/themes/GruvboxMaterialDarkSoft.conf"
refreshPeriod = "168h" refreshPeriod = "168h"
[".config/kitty/kitty-themes".clone]
args = ["--depth=1"]

View File

@ -66,7 +66,6 @@ The following sections will resume what usage you can have of different commands
### Commands ### Commands
With Zsh and Zinit, a lot of commands will be installed. They're very useful and powerful so it might be a good idea to learn what they are. With Zsh and Zinit, a lot of commands will be installed. They're very useful and powerful so it might be a good idea to learn what they are.
Note : Two keybindings are define in `.zshrc`. They are <Ctrl>p and <Crtl>n. Use them for navigate in your command history.
#### Zoxide #### Zoxide
**Commands** : `z` | `zi` **Commands** : `z` | `zi`

View File

@ -1,110 +1,56 @@
# ~/.bashrc: executed by bash(1) for non-login shells. ##########################################################################
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) #
# for examples # ██████╗ █████╗ ███████╗██╗ ██╗██████╗ ██████╗
# ██╔══██╗██╔══██╗██╔════╝██║ ██║██╔══██╗██╔════╝
# ██████╔╝███████║███████╗███████║██████╔╝██║
# ██╔══██╗██╔══██║╚════██║██╔══██║██╔══██╗██║
# ██████╔╝██║ ██║███████║██║ ██║██║ ██║╚██████╗
# ╚═════╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝
#
##########################################################################
# If not running interactively, don't do anything # bash configuration ------------------------------------------------------ {{{
# if not running interactively, don't do anything
case $- in case $- in
*i*) ;; *i*) ;;
*) return;; *) return;;
esac esac
export PATH="$HOME/.atuin/bin:$PATH" export path="$home/.atuin/bin:$path"
# history ------------------------------------------------------------------ {{{
# don't put duplicate lines or lines starting with space in the history. # don't put duplicate lines or lines starting with space in the history.
# See bash(1) for more options histcontrol=ignoreboth
HISTCONTROL=ignoreboth
# append to the history file, don't overwrite it # append to the history file, don't overwrite it
shopt -s histappend shopt -s histappend
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1) # for setting history length see histsize and histfilesize in bash(1)
HISTSIZE=1000 histsize=1000
HISTFILESIZE=2000 histfilesize=2000
# }}}
# general options ---------------------------------------------------------------- {{{
# check the window size after each command and, if necessary, # check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS. # update the values of lines and columns.
shopt -s checkwinsize shopt -s checkwinsize
# If set, the pattern "**" used in a pathname expansion context will # make less more friendly for non-text input files
# match all files and zero or more directories and subdirectories. [ -x /usr/bin/lesspipe ] && eval "$(shell=/bin/sh lesspipe)"
#shopt -s globstar
# make less more friendly for non-text input files, see lesspipe(1) # if this is an xterm set the title to user@host:dir
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)" case "$term" in
# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
debian_chroot=$(cat /etc/debian_chroot)
fi
# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
xterm-color|*-256color) color_prompt=yes;;
esac
# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
force_color_prompt=yes
if [ -n "$force_color_prompt" ]; then
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
# We have color support; assume it's compliant with Ecma-48
# (ISO/IEC-6429). (Lack of such support is extremely rare, and such
# a case would tend to support setf rather than setaf.)
color_prompt=yes
else
color_prompt=
fi
fi
if [ "$color_prompt" = yes ]; then
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt
# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*) xterm*|rxvt*)
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1" ps1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$ps1"
;; ;;
*) *)
;; ;;
esac esac
# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
alias ls='ls --color=auto'
#alias dir='dir --color=auto'
#alias vdir='vdir --color=auto'
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
fi
# colored GCC warnings and errors
#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'
# some more ls aliases
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'
alias c='clear'
alias csc='sudo cytech-site-change'
alias quit='exit'
alias compresse='echo "tar -cv [nomDuFichieràCompresser] -f [nomArchive].tar"'
alias cps='cp ~/Desktop/Programme/script-c/script.sh ./script.sh'
alias sql='mysql -u thomas -p'
alias waterfox='~/waterfox/waterfox'
# Add an "alert" alias for long running commands. Use like so:
# sleep 10; alert
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
# enable programmable completion features (you don't need to enable # enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile # this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc). # sources /etc/bash.bashrc).
@ -116,22 +62,98 @@ if ! shopt -oq posix; then
fi fi
fi fi
# Set the ssh-agent # setup custom completions
if ! pgrep -u "$USER" ssh-agent > /dev/null; then mkdir -p "$home/.completions"
# check if the command exists and if the completion file does not exist, generate it
generate_completion() {
local cmd=$1
local out_file="$home/.completions/$2"
local gen_cmd=$3
if command -v "$cmd" >/dev/null 2>&1 && [ ! -f "$out_file" ]; then
eval "$gen_cmd"
echo "generated completion for $cmd"
fi
}
generate_completion "atuin" "atuin.bash" "atuin gen-completions --shell bash --out-dir \$home/.completions"
generate_completion "chezmoi" "chezmoi.bash" "chezmoi completion bash --output=\$home/.completions/chezmoi.bash"
generate_completion "rip" "rip.bash" "rip completions bash > \$home/.completions/rip.bash"
source "$home/.completions/atuin.bash"
source "$home/.completions/chezmoi.bash"
source "$home/.completions/rip.bash"
# }}}
# }}}
# user configuration ------------------------------------------------------------------ {{{
# aliases ------------------------------------------------------------------ {{{
alias ls='lsd'
alias ll='ls -alf'
alias rm='rip'
alias cat='bat'
alias grep='rg'
alias find='fd -h'
alias c='clear'
alias quit='exit'
alias vi=$(which vim)
alias vim='nvim'
alias csc='sudo cytech-site-change'
alias compresse='echo "tar -cv [nomdufichieràcompresser] -f [nomarchive].tar"'
alias cps='cp ~/desktop/programme/script-c/script.sh ./script.sh'
alias sql='mysql -u thomas -p'
# }}}
# ssh configuration ---------------------------------------------------------------- {{{
# preferred editor for local and remote sessions
if [[ ! -n $ssh_connection ]]; then
export editor='nvim'
else
export editor='vim'
fi
# set the ssh-agent if it is not already running
if ! pgrep -u "$user" ssh-agent > /dev/null; then
eval "$(ssh-agent -s)" > /dev/null eval "$(ssh-agent -s)" > /dev/null
fi fi
export SSH_AUTH_SOCK=$(ssh-agent -s | grep -oP '(?<=SSH_AUTH_SOCK=)[^;]+')
# Add the keys to the agent
if [ -f ~/.ssh/id_ed25519 ] && ! ssh-add -l | grep -q id_ed25519; then
ssh-add ~/.ssh/id_ed25519 > /dev/null 2>&1
fi
if [ -f ~/.ssh/hexasec ] && ! ssh-add -l | grep -q hexasec; then
ssh-add ~/.ssh/hexasec > /dev/null 2>&1
fi
# function to add ssh keys to the agent
add_ssh_key() {
local key_path=$1
local key_name=$(basename "$key_path")
if [ -f "$key_path" ] && ! ssh-add -l | grep -q "$key_name"; then
ssh-add "$key_path" > /dev/null 2>&1
fi
}
# add personal ssh keys
add_ssh_key ~/.ssh/id_ed25519
add_ssh_key ~/.ssh/hexasec
# }}}
# }}}
# shell enhancements initialization ---------------------------------------------------------------- {{{
# allow zoxide to work and to replace cd
eval "$(zoxide init --cmd cd bash)" eval "$(zoxide init --cmd cd bash)"
# set the theme to use with oh my posh
eval "$(oh-my-posh init bash)" eval "$(oh-my-posh init bash)"
# or use starship
# eval "$(starship init bash)"
# initialize atuin
[[ -f ~/.bash-preexec.sh ]] && source ~/.bash-preexec.sh [[ -f ~/.bash-preexec.sh ]] && source ~/.bash-preexec.sh
eval "$(atuin init bash --disable-up-arrow)" eval "$(atuin init bash --disable-up-arrow)"
# }}}

View File

@ -91,7 +91,7 @@ set wildmode=list:longest
set wildignore=*.docx,*.jpg,*.png,*.gif,*.pdf,*.pyc,*.exe,*.flv,*.img,*.xlsx set wildignore=*.docx,*.jpg,*.png,*.gif,*.pdf,*.pyc,*.exe,*.flv,*.img,*.xlsx
" Permit the recognition of alias by vim " Permit the recognition of alias by vim
set shell=/bin/zsh set shell=/bin/bash
set shellcmdflag=-ic set shellcmdflag=-ic
" PLUGINS ---------------------------------------------------------------- {{{ " PLUGINS ---------------------------------------------------------------- {{{

View File

@ -24,13 +24,6 @@ fi
source $ZSH/zinit.zsh source $ZSH/zinit.zsh
# Theme ---------------------------------------------------------------- {{{
# Set the theme to use with Oh My Posh
eval "$(oh-my-posh init zsh --config $HOME/.config/ohmyposh/prompt.json)"
# }}}
# General options ---------------------------------------------------------------- {{{ # General options ---------------------------------------------------------------- {{{
# Uncomment the following line to use case-sensitive completion. # Uncomment the following line to use case-sensitive completion.
@ -94,10 +87,6 @@ setopt hist_ignore_all_dups # Ignore all duplicate commands
setopt hist_save_no_dups # Do not save duplicate commands setopt hist_save_no_dups # Do not save duplicate commands
setopt hist_find_no_dups # Do not display duplicate commands setopt hist_find_no_dups # Do not display duplicate commands
# Key bindings
bindkey "^p" history-search-backward # Search backward in history
bindkey "^n" history-search-forward # Search forward in history
# }}} # }}}
# Completion ---------------------------------------------------------------- {{{ # Completion ---------------------------------------------------------------- {{{
@ -115,6 +104,34 @@ zstyle ':completion:*' list-colors '${(s.:.)LS_COLORS}'
autoload -Uz +X compinit && compinit autoload -Uz +X compinit && compinit
autoload -Uz +X bashcompinit && bashcompinit autoload -Uz +X bashcompinit && bashcompinit
# Setup custom completions
mkdir -p "$HOME/.completions"
# Check if the command exists and if the completion file does not exist, generate it
generate_completion() {
local cmd=$1
local out_file="$HOME/.completions/$2"
local gen_cmd=$3
if command -v "$cmd" > /dev/null 2>&1 && [ ! -f "$out_file" ]; then
eval "$gen_cmd"
echo "Generated completion for $cmd"
fi
}
generate_completion "atuin" "atuin.zsh" "atuin gen-completions --shell zsh --out-dir \$HOME/.completions/"
generate_completion "chezmoi" "chezmoi.zsh" "chezmoi completion zsh --output=\$HOME/.completions/chezmoi.zsh"
generate_completion "rip" "rip.zsh" "rip completions zsh > \$HOME/.completions/rip.zsh"
# The default name of the completion file for atuin is `_atuin`
# as it follows the convention of zsh_completions files
# Rename it to `atuin.zsh` to be consistent with the other custom completion files
if [ -f "$HOME/.completions/_atuin" ]; then mv "$HOME/.completions/_atuin" "$HOME/.completions/atuin.zsh"; fi
source "$HOME/.completions/atuin.zsh"
source "$HOME/.completions/chezmoi.zsh"
source "$HOME/.completions/rip.zsh"
# -q is for quiet; actually run all the `compdef's saved before `compinit` call # -q is for quiet; actually run all the `compdef's saved before `compinit` call
# (`compinit' declares the `compdef' function, so it cannot be used until # (`compinit' declares the `compdef' function, so it cannot be used until
# `compinit' is ran; Zinit solves this via intercepting the `compdef'-calls and # `compinit' is ran; Zinit solves this via intercepting the `compdef'-calls and
@ -127,8 +144,13 @@ zinit cdreplay -q
# User configuration ---------------------------------------------------------------- {{{ # User configuration ---------------------------------------------------------------- {{{
# Compilation flags
# export ARCHFLAGS="-arch x86_64"
# SSH Configuration ---------------------------------------------------------------- {{{
# Preferred editor for local and remote sessions # Preferred editor for local and remote sessions
if [[ -n $SSH_CONNECTION ]]; then if [[ ! -n $SSH_CONNECTION ]]; then
export EDITOR='nvim' export EDITOR='nvim'
else else
export EDITOR='vim' export EDITOR='vim'
@ -138,17 +160,21 @@ fi
if ! pgrep -u "$USER" ssh-agent > /dev/null; then if ! pgrep -u "$USER" ssh-agent > /dev/null; then
eval "$(ssh-agent -s)" > /dev/null eval "$(ssh-agent -s)" > /dev/null
fi fi
export SSH_AUTH_SOCK=$(ssh-agent -s | grep -oP '(?<=SSH_AUTH_SOCK=)[^;]+')
# Add the keys to the agent
if [ -f ~/.ssh/id_ed25519 ] && ! ssh-add -l | grep -q id_ed25519; then
ssh-add ~/.ssh/id_ed25519 > /dev/null 2>&1
fi
if [ -f ~/.ssh/hexasec ] && ! ssh-add -l | grep -q hexasec; then
ssh-add ~/.ssh/hexasec > /dev/null 2>&1
fi
# Compilation flags # Add the keys to the agent
# export ARCHFLAGS="-arch x86_64" add_ssh_key() {
local key_path=$1
local key_name=$(basename "$key_path")
if [ -f "$key_path" ] && ! ssh-add -l | grep -q "$key_name"; then
ssh-add "$key_path" > /dev/null 2>&1
fi
}
# Personal SSH keys
add_ssh_key ~/.ssh/id_ed25519
add_ssh_key ~/.ssh/hexasec
# }}}
# Aliases ---------------------------------------------------------------- {{{ # Aliases ---------------------------------------------------------------- {{{
@ -172,10 +198,21 @@ alias vim='nvim'
# }}} # }}}
# }}}
# Shell enhancements initialization ---------------------------------------------------------------- {{{
# Allow zoxide to work and to replace cd # Allow zoxide to work and to replace cd
eval "$(zoxide init --cmd cd zsh)" eval "$(zoxide init --cmd cd zsh)"
# Initialize atuin # Initialize atuin
eval "$(atuin init zsh --disable-up-arrow)" # eval "$(atuin init zsh --disable-up-arrow)"
# Set the theme to use with Oh My Posh
eval "$(oh-my-posh init zsh --config $HOME/.config/ohmyposh/prompt.json)"
# Or Starship
eval "$(starship init zsh)"
# }}} # }}}

View File

@ -30,8 +30,8 @@ encryption = "age"
{{- end }} {{- end }}
[git] [git]
autoCommit = true autoCommit = false
autoPush = true autoPush = false
commitMessageTemplatePath = "~/.gitmessage" commitMessageTemplatePath = "~/.gitmessage"
[git.commit] [git.commit]

View File

@ -1,58 +1,123 @@
############################################################################################################
#
# ██████╗ ██████╗ ███╗ ██╗███████╗██╗ ██████╗ ███████╗██╗███████╗██╗ ██╗
# ██╔════╝██╔═══██╗████╗ ██║██╔════╝██║██╔════╝ ██╔════╝██║██╔════╝██║ ██║
# ██║ ██║ ██║██╔██╗ ██║█████╗ ██║██║ ███╗ █████╗ ██║███████╗███████║
# ██║ ██║ ██║██║╚██╗██║██╔══╝ ██║██║ ██║ ██╔══╝ ██║╚════██║██╔══██║
# ╚██████╗╚██████╔╝██║ ╚████║██║ ██║╚██████╔╝██╗██║ ██║███████║██║ ██║
# ╚═════╝ ╚═════╝ ╚═╝ ╚═══╝╚═╝ ╚═╝ ╚═════╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
#
############################################################################################################
# Fish configuration ------------------------------------------------------------- {{{
set fish_greeting set fish_greeting
# Plugins installation and configuration export LS_COLORS="$(vivid generate gruvbox-dark)"
# The fish_inclusion variable is used to avoid multiple inclusions of the plugins
# because of the fish configuration file being sourced every time fisher is called
# Everything related to the plugins must be in the if block
if not set -q fish_inclusion
set -U fish_inclusion 1 # Plugins installation and configuration ------------------------------------------------------------- {{{
function install_fisher_plugin # Check if fisher is installed
set -l plugin_path $argv[1] if not set -q _fisher_plugins
set -l plugin_name $argv[2] curl -sL https://raw.githubusercontent.com/jorgebucaran/fisher/main/functions/fisher.fish | source && fisher install jorgebucaran/fisher
if not test -e $plugin_path
if test $plugin_name = "jorgebucaran/fisher"
# Install Fisher
curl -sL https://raw.githubusercontent.com/jorgebucaran/fisher/main/functions/fisher.fish | source && fisher install $plugin_name
else
fisher install $plugin_name
end
end
end end
install_fisher_plugin ~/.config/fish/functions/fisher.fish jorgebucaran/fisher # Configuration for automatic Fisher package manager updates
install_fisher_plugin ~/.config/fish/functions/theme_gruvbox.fish jomik/fish-gruvbox # Gruvbox theme for bg and fg # Update interval is set to one day (86400 seconds)
install_fisher_plugin ~/.config/fish/conf.d/gruvbox.fish sujaybokil/fish-gruvbox # Gruvbox theme for syntax highlighting set -g FISHER_UPDATE_INTERVAL 86400
install_fisher_plugin ~/.config/fish/conf.d/autopair.fish jorgebucaran/autopair.fish set -g fisher_update_timestamp_file ~/.cache/fisher_last_update
install_fisher_plugin ~/.config/fish/conf.d/sponge.fish meaningful-ooo/sponge
install_fisher_plugin ~/.config/fish/conf.d/abbr_tips.fish gazorby/fish-abbreviation-tips # Get the last modification timestamp of a file
install_fisher_plugin ~/.config/fish/conf.d/venv.fish nakulj/auto-venv function get_file_timestamp
install_fisher_plugin ~/.config/fish/conf.d/color-manual.fish goranmoomin/fish-color-manual stat --format=%Y "$argv[1]" 2>/dev/null
end
# Check if Fisher needs to be updated based on the timestamp file
function needs_update
set -l current_time (date +%s)
if not test -e "$fisher_update_timestamp_file"
return 0
end
set -l file_time (get_file_timestamp "$fisher_update_timestamp_file")
test "$current_time" -gt 0 -a "$file_time" -gt 0
and test (math "$current_time - $file_time") -gt $FISHER_UPDATE_INTERVAL
end
# Update Fisher packages if needed and update timestamp
function update_fisher
mkdir -p (dirname $fisher_update_timestamp_file)
if needs_update
fisher update > /dev/null 2>&1
touch "$fisher_update_timestamp_file"
end
end
# Run Fisher update check only in interactive shells
if status is-interactive
update_fisher
end
theme_gruvbox dark soft theme_gruvbox dark soft
set sponge_regex_patterns '^\s+.*' set sponge_regex_patterns '^\s+.*'
set sponge_allow_previously_successful true set sponge_allow_previously_successful true
set -eU fish_inclusion # }}}
# Completion ------------------------------------------------------------- {{{
if command -v atuin >/dev/null 2>&1 && not test -f $HOME/.config/fish/completions/atuin.fish
atuin gen-completions --shell fish --out-dir $HOME/.config/fish/completions
echo "Atuin completions generated"
end end
# Set the ssh agent if command -v chezmoi >/dev/null 2>&1 && not test -f $HOME/.config/fish/completions/chezmoi.fish
chezmoi completion fish --output=$HOME/.config/fish/completions/chezmoi.fish
echo "Chezmoi completions generated"
end
if command -v rip >/dev/null 2>&1 && not test -f $HOME/.config/fish/completions/rip.fish
rip completion fish > $HOME/.config/fish/completions/rip.fish
echo "Rip completions generated"
end
# }}}
# }}}
# User configuration ---------------------------------------------------------------- {{{
# SSH Configuration ---------------------------------------------------------------- {{{
# Preferred editor for local and remote sessions
if not set -q SSH_CONNECTION
set -x EDITOR nvim
else
set -x EDITOR vim
end
# Set the ssh agent if it is not already running
if not pgrep ssh-agent >/dev/null if not pgrep ssh-agent >/dev/null
eval (ssh-agent -c | string split ';') eval (ssh-agent -s)
end
set -x SSH_AUTH_SOCK (ssh-agent -s | grep -oP '(?<=SSH_AUTH_SOCK=)[^;]+')
# Set the ssh keys
if [ -f ~/.ssh/id_ed25519 ]; and not ssh-add -l | grep -q id_ed25519
ssh-add ~/.ssh/id_ed25519 > /dev/null 2>&1
end
if [ -f ~/.ssh/hexasec ]; and not ssh-add -l | grep -q hexasec
ssh-add ~/.ssh/hexasec > /dev/null 2>&1
end end
# Set personal aliases # Function to add SSH keys to the agent
function add_ssh_key
set key_path $argv[1]
set key_name (basename $key_path)
if test -f $key_path; and not ssh-add -l | grep -q $key_name
ssh-add $key_path > /dev/null 2>&1
end
end
# Add personal SSH keys
add_ssh_key ~/.ssh/id_ed25519
add_ssh_key ~/.ssh/hexasec
# }}}
# Aliases ---------------------------------------------------------------- {{{
# For a full list of active aliases, run `alias`. # For a full list of active aliases, run `alias`.
alias ls='lsd' alias ls='lsd'
alias ll='ls -alF' alias ll='ls -alF'
@ -70,11 +135,26 @@ alias maj='~/./miseajour.sh'
alias vi=(which vim) alias vi=(which vim)
alias vim='nvim' alias vim='nvim'
# }}}
# }}}
# Shell enhancements initialization ---------------------------------------------------------------- {{{
# Set the Oh-My-Posh prompt # Set the Oh-My-Posh prompt
oh-my-posh init fish --config $HOME/.config/ohmyposh/prompt.json | source #oh-my-posh init fish --config $HOME/.config/ohmyposh/prompt.json | source
# Or Starship
function starship_transient_prompt_func
starship module character
end
starship init fish | source
enable_transience
# Allow zoxide to work and to replace cd # Allow zoxide to work and to replace cd
zoxide init --cmd cd fish | source zoxide init --cmd cd fish | source
# Set atuin # Set atuin
atuin init fish | source atuin init fish | source
# }}}

File diff suppressed because it is too large Load Diff

View File

@ -1 +0,0 @@
{{ .chezmoi.homeDir }}/.config/kitty/kitty-themes/themes/gruvbox_dark.conf

View File

@ -68,3 +68,12 @@ vim.api.nvim_create_autocmd({ "UIEnter", "BufReadPost", "BufNewFile" }, {
end end
end, end,
}) })
-- fix lspsaga codeaction causing buffer issues
vim.api.nvim_create_autocmd("BufAdd", {
callback = function(args)
if vim.bo[args.buf].buflisted then
print(args.buf)
end
end,
})

View File

@ -143,6 +143,7 @@ local options = {
virt_text = "󱓻 ", virt_text = "󱓻 ",
highlight = { hex = true, lspvars = true }, highlight = { hex = true, lspvars = true },
}, },
} }
local status, chadrc = pcall(require, "chadrc") local status, chadrc = pcall(require, "chadrc")

View File

@ -5,10 +5,22 @@ local lspconfig = require("lspconfig")
local nvlsp = require("nvchad.configs.lspconfig") local nvlsp = require("nvchad.configs.lspconfig")
local servers = { "jdtls", "html", "cssls", "clangd", "pylsp", "basedpyright", "ruff" } local servers = { "jdtls", "html", "cssls", "clangd", "pylsp", "basedpyright", "ruff" }
local nomap = vim.keymap.del
for _, lsp in ipairs(servers) do for _, lsp in ipairs(servers) do
lspconfig[lsp].setup({ lspconfig[lsp].setup({
on_init = nvlsp.on_init, on_init = nvlsp.on_init,
on_attach = nvlsp.on_attach, on_attach = function(client, bufnr)
nvlsp.on_attach(client, bufnr)
nomap("n", "gD", { buffer = bufnr })
nomap("n", "gd", { buffer = bufnr })
nomap("n", "gi", { buffer = bufnr })
nomap("n", "<leader>sh", { buffer = bufnr })
nomap("n", "<leader>D", { buffer = bufnr })
nomap("n", "<leader>ra", { buffer = bufnr })
nomap("n", "<leader>ca", { buffer = bufnr })
nomap("n", "gr", { buffer = bufnr })
end,
capabilities = nvlsp.capabilities, capabilities = nvlsp.capabilities,
}) })
end end

View File

@ -1,12 +1,5 @@
local map = vim.keymap.set local map = vim.keymap.set
map("i", "<C-b>", "<ESC>^i", { desc = "Move Beginning of line" })
map("i", "<C-e>", "<End>", { desc = "Move End of line" })
map("i", "<C-h>", "<Left>", { desc = "Move Left" })
map("i", "<C-l>", "<Right>", { desc = "Move Right" })
map("i", "<C-j>", "<Down>", { desc = "Move Down" })
map("i", "<C-k>", "<Up>", { desc = "Move Up" })
map("n", "<Esc>", "<cmd>noh<CR>", { desc = "General Clear highlights" }) map("n", "<Esc>", "<cmd>noh<CR>", { desc = "General Clear highlights" })
map("n", "<C-s>", "<cmd>w<CR>", { desc = "File Save" }) map("n", "<C-s>", "<cmd>w<CR>", { desc = "File Save" })
@ -21,22 +14,14 @@ map("n", "<leader>fm", function()
end, { desc = "Format Files" }) end, { desc = "Format Files" })
-- lsp mappings -- lsp mappings
map("n", "<A-CR>", "<cmd>Lspsaga code_action<CR>", { desc = "Lsp code action" }) map({ "n", "v" }, "<A-CR>", "<cmd>Lspsaga code_action<CR>", { desc = "LSP code action" })
map("v", "<A-CR>", "<cmd>Lspsaga code_action<CR>", { desc = "Lsp code action" }) map({ "n", "v" }, "<A-p>", "<cmd>Lspsaga peek_definition<CR>", { desc = "LSP peek definition" })
map("n", "<A-p>", "<cmd>Lspsaga peek_definition<CR>", { desc = "Lsp peek definition" }) map({ "n", "v" }, "<A-P>", "<cmd>Lspsaga peek_type_definition<CR>", { desc = "LSP peek type definition" })
map("n", "<A-P>", "<cmd>Lspsaga peek_type_definition<CR>", { desc = "Lsp peek type definition" }) map({ "n", "v" }, "<A-g>", "<cmd>Lspsaga goto_definition<CR>", { desc = "LSP goto definition" })
map("v", "<A-p>", "<cmd>Lspsaga peek_definition<CR>", { desc = "Lsp peek definition" }) map({ "n", "v" }, "<A-G>", "<cmd>Lspsaga goto_type_definition<CR>", { desc = "LSP goto type definition" })
map("v", "<A-P>", "<cmd>Lspsaga peek_type_definition<CR>", { desc = "Lsp peek type definition" }) map({ "n", "v" }, "<A-r>", "<cmd>Lspsaga rename ++project<CR>", { desc = "LSP rename" })
map("n", "<A-g>", "<cmd>Lspsaga goto_definition<CR>", { desc = "Lsp goto definition" }) map({ "n", "v" }, "<A-d>", "<cmd>Lspsaga diagnostic_jump_next<CR>", { desc = "LSP diagnostic next" })
map("n", "<A-G>", "<cmd>Lspsaga goto_type_definition<CR>", { desc = "Lsp goto type definition" }) map({ "n", "v" }, "<A-D>", "<cmd>Lspsaga diagnostic_jump_prev<CR>", { desc = "LSP diagnostic previous" })
map("v", "<A-g>", "<cmd>Lspsaga goto_definition<CR>", { desc = "Lsp goto definition" })
map("v", "<A-G>", "<cmd>Lspsaga goto_type_definition<CR>", { desc = "Lsp goto type definition" })
map("n", "<A-r>", "<cmd>Lspsaga rename ++project<CR>", { desc = "Lsp rename" })
map("v", "<A-r>", "<cmd>Lspsaga rename ++project<CR>", { desc = "Lsp rename" })
map("n", "<A-d>", "<cmd>Lspsaga diagnostic_jump_next<CR>", { desc = "Lsp diagnostic next" })
map("v", "<A-d>", "<cmd>Lspsaga diagnostic_jump_next<CR>", { desc = "Lsp diagnostic next" })
map("n", "<A-D>", "<cmd>Lspsaga diagnostic_jump_prev<CR>", { desc = "Lsp diagnostic previous" })
map("v", "<A-D>", "<cmd>Lspsaga diagnostic_jump_prev<CR>", { desc = "Lsp diagnostic previous" })
-- tabufline -- tabufline
map("n", "<leader>b", "<cmd>enew<CR>", { desc = "Buffer New" }) map("n", "<leader>b", "<cmd>enew<CR>", { desc = "Buffer New" })
@ -53,17 +38,16 @@ map("n", "<leader>x", function()
require("nvchad.tabufline").close_buffer() require("nvchad.tabufline").close_buffer()
end, { desc = "Buffer Close" }) end, { desc = "Buffer Close" })
map("n", "<leader>t", "<cmd>tabnew<CR>", { desc = "Tab New" })
-- Comment -- Comment
map("n", "<leader>/", "gcc", { desc = "Comment toggle", remap = true }) map("n", "<leader>/", "gcc", { desc = "Comment toggle", remap = true })
map("v", "<leader>/", "gc", { desc = "Comment toggle", remap = true }) map("v", "<leader>/", "gc", { desc = "Comment toggle", remap = true })
-- Spider nvim movement -- Spider nvim movement
map("n", "w", "<cmd>lua require('spider').motion('w')<CR>", {desc = "Spider Move to next word"}) map({ "n", "v" }, "w", "<cmd>lua require('spider').motion('w')<CR>", {desc = "Spider Move to next word"})
map("n", "b", "<cmd>lua require('spider').motion('b')<CR>", {desc = "Spider Move to previous word"}) map({ "n", "v" }, "b", "<cmd>lua require('spider').motion('b')<CR>", {desc = "Spider Move to previous word"})
map("n", "e", "<cmd>lua require('spider').motion('e')<CR>", {desc = "Spider Move to end of word"}) map({ "n", "v" }, "e", "<cmd>lua require('spider').motion('e')<CR>", {desc = "Spider Move to end of word"})
map("v", "w", "<cmd>lua require('spider').motion('w')<CR>", {desc = "Spider Move to next word"})
map("v", "b", "<cmd>lua require('spider').motion('b')<CR>", {desc = "Spider Move to previous word"})
map("v", "e", "<cmd>lua require('spider').motion('e')<CR>", {desc = "Spider Move to end of word"})
-- nvimtree -- nvimtree
map("n", "<C-n>", "<cmd>NvimTreeToggle<CR>", { desc = "Nvimtree Toggle window" }) map("n", "<C-n>", "<cmd>NvimTreeToggle<CR>", { desc = "Nvimtree Toggle window" })
@ -91,33 +75,33 @@ map(
-- terminal -- terminal
map("t", "<C-x>", "<C-\\><C-N>", { desc = "Terminal Escape terminal mode" }) map("t", "<C-x>", "<C-\\><C-N>", { desc = "Terminal Escape terminal mode" })
-- new terminals
map("n", "<leader>h", function()
require("nvchad.term").new { pos = "sp", size = 0.3 }
end, { desc = "Terminal New horizontal term" })
map("n", "<leader>v", function()
require("nvchad.term").new { pos = "vsp", size = 0.3 }
end, { desc = "Terminal New vertical window" })
-- toggleable
map({ "n", "t" }, "<A-v>", function()
require("nvchad.term").toggle { pos = "vsp", id = "vtoggleTerm", size = 0.3 }
end, { desc = "Terminal Toggleable vertical term" })
map({ "n", "t" }, "<A-h>", function()
require("nvchad.term").toggle { pos = "sp", id = "htoggleTerm", size = 0.3 }
end, { desc = "Terminal New horizontal term" })
map({ "n", "t" }, "<A-i>", function()
require("nvchad.term").toggle { pos = "float", id = "floatTerm" }
end, { desc = "Terminal Toggle Floating term" })
map("t", "<ESC>", function() map("t", "<ESC>", function()
local win = vim.api.nvim_get_current_win() local win = vim.api.nvim_get_current_win()
vim.api.nvim_win_close(win, true) vim.api.nvim_win_close(win, true)
end, { desc = "Terminal Close term in terminal mode" }) end, { desc = "Terminal Close term in terminal mode" })
-- new terminals
map("n", "<leader>h", function()
require("nvchad.term").new { pos = "sp", size = 0.4 }
end, { desc = "Terminal New horizontal term" })
map("n", "<leader>v", function()
require("nvchad.term").new { pos = "vsp", size = 0.5 }
end, { desc = "Terminal New vertical window" })
-- toggleable
-- map({ "n", "t" }, "<A-v>", function()
-- require("nvchad.term").toggle { pos = "vsp", id = "vtoggleTerm", size = 0.3 }
-- end, { desc = "Terminal Toggleable vertical term" })
--
-- map({ "n", "t" }, "<A-h>", function()
-- require("nvchad.term").toggle { pos = "sp", id = "htoggleTerm", size = 0.3 }
-- end, { desc = "Terminal New horizontal term" })
--
-- map({ "n", "t" }, "<A-i>", function()
-- require("nvchad.term").toggle { pos = "float", id = "floatTerm" }
-- end, { desc = "Terminal Toggle Floating term" })
-- whichkey -- whichkey
map("n", "<leader>wK", "<cmd>WhichKey <CR>", { desc = "Whichkey all keymaps" }) map("n", "<leader>wK", "<cmd>WhichKey <CR>", { desc = "Whichkey all keymaps" })
@ -142,24 +126,33 @@ map("n", "<leader>cc", function()
end, { desc = "Blankline Jump to current context" }) end, { desc = "Blankline Jump to current context" })
-- copilotchat -- copilotchat
map("n", "<leader>cch", function() map({ "n", "v" }, "<leader>ccp", function()
local actions = require("CopilotChat.actions")
require("CopilotChat.integrations.telescope").pick(actions.help_actions())
end, { desc = "CopilotChat - Help actions" })
map("n", "<leader>ccp", function()
local actions = require("CopilotChat.actions")
require("CopilotChat.integrations.telescope").pick(actions.prompt_actions())
end, { desc = "CopilotChat - Prompt actions" })
map("v", "<leader>cch", function()
local actions = require("CopilotChat.actions")
require("CopilotChat.integrations.telescope").pick(actions.help_actions())
end, { desc = "CopilotChat - Help actions" })
map("v", "<leader>ccp", function()
local actions = require("CopilotChat.actions") local actions = require("CopilotChat.actions")
require("CopilotChat.integrations.telescope").pick(actions.prompt_actions()) require("CopilotChat.integrations.telescope").pick(actions.prompt_actions())
end, { desc = "CopilotChat - Prompt actions" }) end, { desc = "CopilotChat - Prompt actions" })
map({ "n", "v" }, "<leader>ccq", function()
local input = vim.fn.input("Quick Chat: ")
if input ~= "" then
require("CopilotChat").ask(input, { selection = require("CopilotChat.select").buffer })
end
end, { desc = "CopilotChat - Quick chat" })
map({ "n", "v" }, "<leader>ccf", function()
require("CopilotChat").ask("Fix this, using the lsp diagnostics if needed", { selection = require("CopilotChat.select").visual })
end, { desc = "CopilotChat - Fix this" })
-- menu
-- vim.keymap.set("n", "<C-t>", function()
-- require("menu").open("default")
-- end, {})
--
-- vim.keymap.set("n", "<RightMouse>", function()
-- vim.cmd.exec '"normal! \\<RightMouse>"'
--
-- local options = vim.bo.ft == "NvimTree" and "nvimtree" or "default"
-- require("menu").open(options, { mouse = true })
-- end, {})
-- Custom mappings -- Custom mappings
@ -188,14 +181,21 @@ map({ "n", "v" }, "P", "\"+P")
map("n", "<leader>a", function() map("n", "<leader>a", function()
require("treesj").toggle() require("treesj").toggle()
end, { desc = "Extends or retracts an instruction block" }) end, { desc = "Extends or retracts an instruction block" })
map("n", "<leader>gb", "<cmd>Gitsigns blame<CR>", { desc = "Git blame" }) map({ "n", "v" }, "<leader>gb", "<cmd>Gitsigns blame<CR>", { desc = "Git blame" })
map("v", "<leader>gb", "<cmd>Gitsigns blame<CR>", { desc = "Git blame" }) map("i", "jj", "<ESC>", { desc = "Enter normal mode" })
map("i", "jj", "<ESC>", { desc = "Go into normal mode" })
map("i", "<C-d>", "<ESC>ddi", { desc = "Delete a line" }) map("i", "<C-d>", "<ESC>ddi", { desc = "Delete a line" })
map("i", "<C-b>", "<ESC>^i", { desc = "Move Beginning of line" })
map("i", "<C-e>", "<End>", { desc = "Move End of line" })
map("i", "<C-j>", "<Left>", { desc = "Move Left" })
map("i", "<C-m>", "<Right>", { desc = "Move Right" })
map("i", "<C-k>", "<Down>", { desc = "Move Down" })
map("i", "<C-l>", "<Up>", { desc = "Move Up" })
-- Disable mappings -- Disable mappings
-- local nomap = vim.keymap.del -- local nomap = vim.keymap.del
-- LSP unmappings are set in configs/lspconfig.lua
-- nomap("n", "h") -- nomap("n", "h")
-- nomap("n", "j") -- nomap("n", "j")
-- nomap("n", "k") -- nomap("n", "k")

View File

@ -9,5 +9,7 @@ vim.opt.softtabstop = 4
vim.opt.shell = "/usr/local/bin/fish" vim.opt.shell = "/usr/local/bin/fish"
vim.opt.foldmethod = "marker"
-- local o = vim.o -- local o = vim.o
-- o.cursorlineopt ='both' -- to enable cursorline! -- o.cursorlineopt ='both' -- to enable cursorline!

View File

@ -37,7 +37,9 @@ return {
config = function() config = function()
require('lspsaga').setup({ require('lspsaga').setup({
lightbulb = { lightbulb = {
enabled = false,
virtual_text = false, virtual_text = false,
sign = false,
}, },
code_action = { code_action = {
extend_gitsigns = true, extend_gitsigns = true,

View File

@ -271,26 +271,10 @@ local plugins = {
model = "claude-3.5-sonnet", model = "claude-3.5-sonnet",
}, },
keys = { keys = {
{
"<leader>ccq",
function()
local input = vim.fn.input("Quick Chat: ")
if input ~= "" then
require("CopilotChat").ask(input, { selection = require("CopilotChat.select").buffer })
end
end,
desc = "CopilotChat - Quick chat",
},
{
"<leader>ccf",
function()
require("CopilotChat").ask("Fix this, using the lsp diagnostics if needed", { selection = require("CopilotChat.select").visual })
end,
desc = "CopilotChat - Fix this",
},
}, },
config = function () config = function ()
require('CopilotChat').setup({ require('CopilotChat').setup({
model = "claude-3.5-sonnet",
highlight_headers = false, highlight_headers = false,
separator = '---', separator = '---',
error_header = '> [!ERROR] Error', error_header = '> [!ERROR] Error',

View File

@ -0,0 +1,171 @@
"$schema" = 'https://starship.rs/config-schema.json'
continuation_prompt = '▶▶ '
format = """
[](color_orange)\
$os\
$username\
[](bg:color_yellow fg:color_orange)\
$directory\
[](fg:color_yellow bg:color_aqua)\
$git_branch\
$git_status\
[](fg:color_aqua bg:color_blue)\
$c\
$rust\
$golang\
$nodejs\
$php\
$java\
$kotlin\
$haskell\
$python\
[](fg:color_blue bg:color_bg3)\
$docker_context\
$conda\
[](fg:color_bg3 bg:color_bg1)\
$time\
[ ](fg:color_bg1)\
$line_break$character"""
palette = 'gruvbox_dark'
[palettes.gruvbox_dark]
color_fg0 = '#fbf1c7'
color_bg1 = '#3c3836'
color_bg3 = '#665c54'
color_blue = '#458588'
color_aqua = '#689d6a'
color_green = '#98971a'
color_orange = '#d65d0e'
color_purple = '#b16286'
color_red = '#cc241d'
color_yellow = '#d79921'
[os]
disabled = false
style = "bg:color_orange fg:color_fg0"
[os.symbols]
Windows = "󰍲"
Ubuntu = "󰕈"
SUSE = ""
Raspbian = "󰐿"
Mint = "󰣭"
Macos = "󰀵"
Manjaro = ""
Linux = "󰌽"
Gentoo = "󰣨"
Fedora = "󰣛"
Alpine = ""
Amazon = ""
Android = ""
Arch = "󰣇"
Artix = "󰣇"
EndeavourOS = ""
CentOS = ""
Debian = "󰣚"
Redhat = "󱄛"
RedHatEnterprise = "󱄛"
Pop = ""
[username]
show_always = true
style_user = "bg:color_orange fg:color_fg0"
style_root = "bg:color_orange fg:color_fg0"
format = '[ $user ]($style)'
[directory]
style = "fg:color_fg0 bg:color_yellow"
format = "[ $path ]($style)"
truncation_length = 3
truncation_symbol = "…/"
[directory.substitutions]
"Documents" = "󰈙 "
"Downloads" = " "
"Music" = "󰝚 "
"Pictures" = " "
"Developer" = "󰲋 "
[git_branch]
symbol = ""
style = "bg:color_aqua"
format = '[[ $symbol $branch ](fg:color_fg0 bg:color_aqua)]($style)'
[git_status]
style = "bg:color_aqua"
format = '[[($all_status$ahead_behind )](fg:color_fg0 bg:color_aqua)]($style)'
[nodejs]
symbol = ""
style = "bg:color_blue"
format = '[[ $symbol( $version) ](fg:color_fg0 bg:color_blue)]($style)'
[c]
symbol = " "
style = "bg:color_blue"
format = '[[ $symbol( $version) ](fg:color_fg0 bg:color_blue)]($style)'
[rust]
symbol = ""
style = "bg:color_blue"
format = '[[ $symbol( $version) ](fg:color_fg0 bg:color_blue)]($style)'
[golang]
symbol = ""
style = "bg:color_blue"
format = '[[ $symbol( $version) ](fg:color_fg0 bg:color_blue)]($style)'
[php]
symbol = ""
style = "bg:color_blue"
format = '[[ $symbol( $version) ](fg:color_fg0 bg:color_blue)]($style)'
[java]
symbol = ""
style = "bg:color_blue"
format = '[[ $symbol( $version) ](fg:color_fg0 bg:color_blue)]($style)'
[kotlin]
symbol = ""
style = "bg:color_blue"
format = '[[ $symbol( $version) ](fg:color_fg0 bg:color_blue)]($style)'
[haskell]
symbol = ""
style = "bg:color_blue"
format = '[[ $symbol( $version) ](fg:color_fg0 bg:color_blue)]($style)'
[python]
symbol = ""
style = "bg:color_blue"
format = '[[ $symbol( $version) ](fg:color_fg0 bg:color_blue)]($style)'
[docker_context]
symbol = ""
style = "bg:color_bg3"
format = '[[ $symbol( $context) ](fg:#83a598 bg:color_bg3)]($style)'
[conda]
style = "bg:color_bg3"
format = '[[ $symbol( $environment) ](fg:#83a598 bg:color_bg3)]($style)'
[time]
disabled = false
time_format = "%R"
style = "bg:color_bg1"
format = '[[  $time ](fg:color_fg0 bg:color_bg1)]($style)'
[line_break]
disabled = false
[character]
disabled = false
success_symbol = '[](bold fg:color_green)'
error_symbol = '[](bold fg:color_red)'
vimcmd_symbol = '[](bold fg:color_green)'
vimcmd_replace_one_symbol = '[](bold fg:color_purple)'
vimcmd_replace_symbol = '[](bold fg:color_purple)'
vimcmd_visual_symbol = '[](bold fg:color_yellow)'

View File

@ -121,7 +121,7 @@ arch_package_manager = "pacman"
# aura_pacman_arguments = "" # aura_pacman_arguments = ""
# garuda_update_arguments = "" # garuda_update_arguments = ""
# show_arch_news = true show_arch_news = true
# trizen_arguments = "--devel" # trizen_arguments = "--devel"
@ -202,7 +202,7 @@ arch_package_manager = "pacman"
[firmware] [firmware]
# Offer to update firmware; if false just check for and display available updates # Offer to update firmware; if false just check for and display available updates
# upgrade = true upgrade = true
[vagrant] [vagrant]

View File

@ -16,6 +16,9 @@ mkdir -p ~/.config/fish/
echo -e "${BLUE}Installing Oh-My-Posh...${DEFAULT}" echo -e "${BLUE}Installing Oh-My-Posh...${DEFAULT}"
check_installation "yay -S --noconfirm --needed" "oh-my-posh" check_installation "yay -S --noconfirm --needed" "oh-my-posh"
echo -e "${BLUE}Installing Starship...${DEFAULT}"
check_installation "sudo pacman -S --noconfirm --needed" "starship"
# Installing navigation and search tools # Installing navigation and search tools
echo -e "${GREEN}Installing navigation and search tools...${DEFAULT}" echo -e "${GREEN}Installing navigation and search tools...${DEFAULT}"
@ -73,6 +76,10 @@ check_installation "yay -S --noconfirm --needed" "sshs"
echo -e "${BLUE}Installing Atuin...${DEFAULT}" echo -e "${BLUE}Installing Atuin...${DEFAULT}"
check_installation "pacman -S --noconfirm --needed" "atuin" check_installation "pacman -S --noconfirm --needed" "atuin"
# Vivid - A tool for generating LS_COLORS
echo -e "${BLUE}Installing Vivid...${DEFAULT}"
check_installation "sudo pacman -S --noconfirm --needed" "vivid"
# Changing the default shell to Fish # Changing the default shell to Fish
echo -e "${GREEN}Setting Fish as default shell...${DEFAULT}" echo -e "${GREEN}Setting Fish as default shell...${DEFAULT}"
chsh -s $(which fish) chsh -s $(which fish)

View File

@ -54,6 +54,7 @@ zsh
powerline powerline
fish fish
oh-my-posh oh-my-posh
starship
zoxide fzf zoxide fzf
lsd lsd
rm-improved-git rm-improved-git
@ -66,3 +67,4 @@ tealdeer
git-delta git-delta
sshs sshs
atuin atuin
vivid