From 0b6b9b07f35e47d0c556e3240cfa4792f594eff1 Mon Sep 17 00:00:00 2001 From: Thomas Schmucker Date: Fri, 24 Mar 2023 17:05:45 +0100 Subject: erster Import --- install.sh | 20 ++++++++ nvim/init.vim | 5 ++ nvim/key-bindings.vim | 16 +++++++ nvim/settings.vim | 49 ++++++++++++++++++++ tmux/tmux.conf | 24 ++++++++++ zsh/aliases | 1 + zsh/prompt | 123 ++++++++++++++++++++++++++++++++++++++++++++++++++ zsh/zshenv | 17 +++++++ zsh/zshrc | 33 ++++++++++++++ 9 files changed, 288 insertions(+) create mode 100755 install.sh create mode 100644 nvim/init.vim create mode 100644 nvim/key-bindings.vim create mode 100644 nvim/settings.vim create mode 100644 tmux/tmux.conf create mode 100644 zsh/aliases create mode 100644 zsh/prompt create mode 100644 zsh/zshenv create mode 100644 zsh/zshrc diff --git a/install.sh b/install.sh new file mode 100755 index 0000000..cfd8da7 --- /dev/null +++ b/install.sh @@ -0,0 +1,20 @@ +#!/bin/sh + +CONFIG=~/.config +mkdir -p "$CONFIG" + +# tmux +cp -R tmux "$CONFIG" + +# nvim +cp -R nvim "$CONFIG" + +# zsh +mkdir -p "$CONFIG/zsh" + +cp zsh/zshenv ~/.zshenv + +cp zsh/zshrc "$CONFIG/zsh/.zshrc" +cp zsh/aliases "$CONFIG/zsh/aliases" +cp zsh/prompt "$CONFIG/zsh/prompt" + diff --git a/nvim/init.vim b/nvim/init.vim new file mode 100644 index 0000000..c470257 --- /dev/null +++ b/nvim/init.vim @@ -0,0 +1,5 @@ +" nvim/init.vim + +source /home/t/.config/nvim/settings.vim +source /home/t/.config/nvim/key-bindings.vim + diff --git a/nvim/key-bindings.vim b/nvim/key-bindings.vim new file mode 100644 index 0000000..bd573a4 --- /dev/null +++ b/nvim/key-bindings.vim @@ -0,0 +1,16 @@ +" nvim/key-bindings.vim + +let mapleader=',' + +nnoremap :tabprevious +nnoremap :tabnext +nnoremap :tabprevious +nnoremap :tabnext + +" besseres Verhalten von und +" https://vimrc-dissection.blogspot.com/2009/02/fixing-pageup-and-pagedown.html +map 1000 +map 1000 +imap 1000 +imap 1000 + diff --git a/nvim/settings.vim b/nvim/settings.vim new file mode 100644 index 0000000..b09bdc2 --- /dev/null +++ b/nvim/settings.vim @@ -0,0 +1,49 @@ +" nvim/settings.vim + +set number +set cursorline +set shortmess+=I +set nowrap +set nocompatible +set ruler +set wildmenu + +" Rechtsschreibprüfung +set spell +set spelllang=de,en + +" Optionen für ^n-Vervollständigung +set complete=.,w,b,u,t,i + +" bessere Suche +set hlsearch +set incsearch + +" Sonderzeichen anzeigen +set list +set listchars=tab:>\ ,trail:-,extends:>,precedes:<,nbsp:+ + +" automatisches Einlesen geänderter Dateien +set autoread + +" Suche rekursiv +set path+=** + +" Tabs +set noexpandtab +set tabstop=4 +set shiftwidth=4 +set softtabstop=0 + +" Einrückungen +set smartindent +set autoindent +set cindent + +" weitere Einstellungen +syntax enable +filetype plugin indent on + +" Farbschema +colorscheme habamax + diff --git a/tmux/tmux.conf b/tmux/tmux.conf new file mode 100644 index 0000000..343568c --- /dev/null +++ b/tmux/tmux.conf @@ -0,0 +1,24 @@ +set -g mouse on +set -g default-terminal "xterm-256color" +set -g status-left " " +set -g status-right "" +set -g base-index 1 +set -g pane-base-index 1 +set -g history-limit 10000 +set -g escape-time 0 +set -g aggressive-resize on +set -g window-status-style fg=black,bg=green +set -g window-status-current-style fg=black,bg=blue,bold +set -g mode-keys vi + +bind -n C-S-Left previous-window +bind -n C-S-Right next-window + +bind h select-pane -L +bind j select-pane -D +bind k select-pane -U +bind l select-pane -R + +bind m set -g mouse \; display "Mouse #{?mouse,ON,OFF}" +bind r source-file ~/.config/tmux/tmux.conf \; display-message "Config reloaded" + diff --git a/zsh/aliases b/zsh/aliases new file mode 100644 index 0000000..be6f057 --- /dev/null +++ b/zsh/aliases @@ -0,0 +1 @@ +alias mc='mc -u' diff --git a/zsh/prompt b/zsh/prompt new file mode 100644 index 0000000..0b3833a --- /dev/null +++ b/zsh/prompt @@ -0,0 +1,123 @@ +# Purification +# by Matthieu Cneude +# https://github.com/Phantas0s/purification + +# Based on: + +# Purity +# by Kevin Lanni +# https://github.com/therealklanni/purity +# MIT License + +# prompt: +# %F => color dict +# %f => reset color +# %~ => current path +# %* => time +# %n => username +# %m => shortname host +# %(?..) => prompt conditional - %(condition.true.false) + +# Display git status +# TODO to refactor with switch / using someting else than grep +# Might be faster using ripgrep too +git_prompt_status() { + local INDEX STATUS + + INDEX=$(command git status --porcelain -b 2> /dev/null) + + STATUS="" + + if $(echo "$INDEX" | command grep -E '^\?\? ' &> /dev/null); then + STATUS="$ZSH_THEME_GIT_PROMPT_UNTRACKED$STATUS" + fi + + if $(echo "$INDEX" | grep '^A ' &> /dev/null); then + STATUS="$ZSH_THEME_GIT_PROMPT_ADDED$STATUS" + elif $(echo "$INDEX" | grep '^M ' &> /dev/null); then + STATUS="$ZSH_THEME_GIT_PROMPT_ADDED$STATUS" + elif $(echo "$INDEX" | grep '^MM ' &> /dev/null); then + STATUS="$ZSH_THEME_GIT_PROMPT_ADDED$STATUS" + fi + + if $(echo "$INDEX" | grep '^ M ' &> /dev/null); then + STATUS="$ZSH_THEME_GIT_PROMPT_MODIFIED$STATUS" + elif $(echo "$INDEX" | grep '^AM ' &> /dev/null); then + STATUS="$ZSH_THEME_GIT_PROMPT_MODIFIED$STATUS" + elif $(echo "$INDEX" | grep '^MM ' &> /dev/null); then + STATUS="$ZSH_THEME_GIT_PROMPT_MODIFIED$STATUS" + elif $(echo "$INDEX" | grep '^ T ' &> /dev/null); then + STATUS="$ZSH_THEME_GIT_PROMPT_MODIFIED$STATUS" + fi + + if $(echo "$INDEX" | grep '^R ' &> /dev/null); then + STATUS="$ZSH_THEME_GIT_PROMPT_RENAMED$STATUS" + fi + + if $(echo "$INDEX" | grep '^ D ' &> /dev/null); then + STATUS="$ZSH_THEME_GIT_PROMPT_DELETED$STATUS" + elif $(echo "$INDEX" | grep '^D ' &> /dev/null); then + STATUS="$ZSH_THEME_GIT_PROMPT_DELETED$STATUS" + elif $(echo "$INDEX" | grep '^AD ' &> /dev/null); then + STATUS="$ZSH_THEME_GIT_PROMPT_DELETED$STATUS" + fi + + if $(command git rev-parse --verify refs/stash >/dev/null 2>&1); then + STATUS="$ZSH_THEME_GIT_PROMPT_STASHED$STATUS" + fi + + if $(echo "$INDEX" | grep '^UU ' &> /dev/null); then + STATUS="$ZSH_THEME_GIT_PROMPT_UNMERGED$STATUS" + fi + + if $(echo "$INDEX" | grep '^## [^ ]\+ .*ahead' &> /dev/null); then + STATUS="$ZSH_THEME_GIT_PROMPT_AHEAD$STATUS" + fi + + if $(echo "$INDEX" | grep '^## [^ ]\+ .*behind' &> /dev/null); then + STATUS="$ZSH_THEME_GIT_PROMPT_BEHIND$STATUS" + fi + + if $(echo "$INDEX" | grep '^## [^ ]\+ .*diverged' &> /dev/null); then + STATUS="$ZSH_THEME_GIT_PROMPT_DIVERGED$STATUS" + fi + + if [[ ! -z "$STATUS" ]]; then + echo " [ $STATUS]" + fi +} + +prompt_git_branch() { + autoload -Uz vcs_info + precmd_vcs_info() { vcs_info } + precmd_functions+=( precmd_vcs_info ) + setopt prompt_subst + zstyle ':vcs_info:git:*' formats '%b' +} + +prompt_git_info() { + [ ! -z "$vcs_info_msg_0_" ] && echo "$ZSH_THEME_GIT_PROMPT_PREFIX%F{white}$vcs_info_msg_0_%f$ZSH_THEME_GIT_PROMPT_SUFFIX" +} + +prompt_purification_setup() { + ZSH_THEME_GIT_PROMPT_PREFIX=" %F{red}λ%f:" + ZSH_THEME_GIT_PROMPT_DIRTY="" + ZSH_THEME_GIT_PROMPT_CLEAN="" + + ZSH_THEME_GIT_PROMPT_ADDED="%F{green}+%f " + ZSH_THEME_GIT_PROMPT_MODIFIED="%F{blue}M%f " + ZSH_THEME_GIT_PROMPT_DELETED="%F{red}x%f " + ZSH_THEME_GIT_PROMPT_RENAMED="%F{magenta}➜%f " + ZSH_THEME_GIT_PROMPT_UNMERGED="%F{yellow}═%f " + ZSH_THEME_GIT_PROMPT_UNTRACKED="%F{white}U%f " + ZSH_THEME_GIT_PROMPT_STASHED="%B%F{red}S%f%b " + ZSH_THEME_GIT_PROMPT_BEHIND="%B%F{red}B%f%b " + ZSH_THEME_GIT_PROMPT_AHEAD="%B%F{green}A%f%b " + + prompt_git_branch + RPROMPT='$(prompt_git_info) $(git_prompt_status)' + PROMPT=$'%F{white}%~ %B%F{blue}>%f%b ' +} + +prompt_purification_setup + diff --git a/zsh/zshenv b/zsh/zshenv new file mode 100644 index 0000000..78f6fda --- /dev/null +++ b/zsh/zshenv @@ -0,0 +1,17 @@ +export XDG_CONFIG_HOME="$HOME/.config" +export XDG_DATA_HOME="$XDG_CONFIG_HOME/local/share" +export XDG_CACHE_HOME="$XDG_CONFIG_HOME/cache" + +export EDITOR="nvim" +export VISUAL="nvim" + +export ZDOTDIR="$XDG_CONFIG_HOME/zsh" + +export HISTFILE="$ZDOTDIR/.zhistory" +export HISTSIZE=10000 +export SAVEHIST=10000 + +NPM_PACKAGES="${HOME}/.npm-packages" +export PATH="$PATH:$NPM_PACKAGES/bin" +export MANPATH="${MANPATH-$(manpath)}:$NPM_PACKAGES/share/man" + diff --git a/zsh/zshrc b/zsh/zshrc new file mode 100644 index 0000000..5789d80 --- /dev/null +++ b/zsh/zshrc @@ -0,0 +1,33 @@ +# Aliase +source $XDG_CONFIG_HOME/zsh/aliases + +# Optionen +setopt AUTO_PARAM_SLASH +unsetopt CASE_GLOB +setopt HIST_SAVE_NO_DUPS + +# Command completion +autoload -U compinit; compinit +_comp_options+=(globdots) # With hidden files + +bindkey -v +export KEYTIMEOUT=1 + +fpath=($XDG_CONFIG_HOME/zsh $fpath) +autoload -Uz prompt; prompt + +zmodload zsh/complist +bindkey -M menuselect 'h' vi-backward-char +bindkey -M menuselect 'k' vi-up-line-or-history +bindkey -M menuselect 'l' vi-forward-char +bindkey -M menuselect 'j' vi-down-line-or-history + +autoload -Uz surround +zle -N delete-surround surround +zle -N add-surround surround +zle -N change-surround surround +bindkey -M vicmd cs change-surround +bindkey -M vicmd ds delete-surround +bindkey -M vicmd ys add-surround +bindkey -M visual S add-surround + -- cgit v1.3