mirror of https://github.com/einverne/dotfiles.git
Ein Verne
4 years ago
5 changed files with 3311 additions and 181 deletions
@ -1,16 +1,6 @@ |
|||||||
# If you come from bash you might have to change your $PATH. |
# If you come from bash you might have to change your $PATH. |
||||||
# export PATH=$HOME/bin:/usr/local/bin:$PATH |
# export PATH=$HOME/bin:/usr/local/bin:$PATH |
||||||
|
|
||||||
if type brew &>/dev/null; then |
|
||||||
echo "brew completion" |
|
||||||
FPATH=$(brew --prefix)/share/zsh/site-functions:$FPATH |
|
||||||
fpath=($HOME/.asdf/completions $fpath) |
|
||||||
|
|
||||||
autoload -Uz compinit |
|
||||||
compinit |
|
||||||
fi |
|
||||||
|
|
||||||
autoload -Uz compinit && compinit |
|
||||||
# you need to git clone [email protected]:zsh-users/antigen.git to $HOME |
# you need to git clone [email protected]:zsh-users/antigen.git to $HOME |
||||||
if [[ -d $HOME/antigen ]]; then |
if [[ -d $HOME/antigen ]]; then |
||||||
source $HOME/antigen/antigen.zsh |
source $HOME/antigen/antigen.zsh |
||||||
@ -26,11 +16,14 @@ if [[ -f "$HOME/dotfiles/wp-completion.bash" ]]; then |
|||||||
source $HOME/dotfiles/wp-completion.bash |
source $HOME/dotfiles/wp-completion.bash |
||||||
fi |
fi |
||||||
|
|
||||||
|
export ASDF_DIR=$(brew --prefix asdf) |
||||||
|
|
||||||
# Load the oh-my-zsh's library. |
# Load the oh-my-zsh's library. |
||||||
antigen use oh-my-zsh |
antigen use oh-my-zsh |
||||||
|
|
||||||
# Bundles from the default repo (robbyrussell's oh-my-zsh). |
# Bundles from the default repo (robbyrussell's oh-my-zsh). |
||||||
antigen bundle asdf |
antigen bundle asdf |
||||||
|
antigen bundle gem |
||||||
antigen bundle git |
antigen bundle git |
||||||
antigen bundle git-extras |
antigen bundle git-extras |
||||||
antigen bundle git-flow |
antigen bundle git-flow |
||||||
@ -72,28 +65,26 @@ case `uname` in |
|||||||
Darwin) |
Darwin) |
||||||
antigen bundle brew |
antigen bundle brew |
||||||
antigen bundle brew-cask |
antigen bundle brew-cask |
||||||
antigen bundle gem |
|
||||||
antigen bundle osx |
antigen bundle osx |
||||||
;; |
;; |
||||||
FreeBSD) |
FreeBSD) |
||||||
;; |
;; |
||||||
esac |
esac |
||||||
|
|
||||||
if [[ $CURRENT_OS == 'OS X' ]]; then |
if type brew &>/dev/null; then |
||||||
antigen bundle brew |
echo "brew completion" |
||||||
antigen bundle brew-cask |
FPATH=$(brew --prefix)/share/zsh/site-functions:$FPATH |
||||||
antigen bundle gem |
#fpath=$(brew --prefix)/share/zsh-completions:$fpath |
||||||
antigen bundle osx |
fpath=($HOME/.asdf/completions $fpath) |
||||||
elif [[ $CURRENT_OS == 'Linux' ]]; then |
|
||||||
# None so far... |
|
||||||
|
|
||||||
if [[ $DISTRO == 'CentOS' ]]; then |
|
||||||
antigen bundle centos |
|
||||||
fi |
|
||||||
elif [[ $CURRENT_OS == 'Cygwin' ]]; then |
|
||||||
antigen bundle cygwin |
|
||||||
fi |
fi |
||||||
|
|
||||||
|
autoload -Uz compinit && compinit |
||||||
|
. $(brew --prefix asdf)/asdf.sh |
||||||
|
. $(brew --prefix asdf)/etc/bash_completion.d/asdf.bash |
||||||
|
|
||||||
|
|
||||||
# Load the theme. |
# Load the theme. |
||||||
# antigen theme agnoster |
# antigen theme agnoster |
||||||
# workaround for https://github.com/zsh-users/antigen/issues/675 |
# workaround for https://github.com/zsh-users/antigen/issues/675 |
||||||
@ -140,6 +131,7 @@ source $HOME/dotfiles/zsh/common.zsh |
|||||||
source $HOME/dotfiles/zsh/keybindings.zsh |
source $HOME/dotfiles/zsh/keybindings.zsh |
||||||
source $HOME/dotfiles/zsh/alias.zsh |
source $HOME/dotfiles/zsh/alias.zsh |
||||||
source $HOME/dotfiles/zsh/env.zsh |
source $HOME/dotfiles/zsh/env.zsh |
||||||
|
source $HOME/dotfiles/zsh/fzf.zsh |
||||||
|
|
||||||
case `uname` in |
case `uname` in |
||||||
Darwin) |
Darwin) |
||||||
@ -170,143 +162,4 @@ SPACESHIP_DIR_COLOR="${SPACESHIP_DIR_COLOR="cyan"}" |
|||||||
# usage adb-screencap > screen.png |
# usage adb-screencap > screen.png |
||||||
alias adbcap="adb shell screencap -p" |
alias adbcap="adb shell screencap -p" |
||||||
|
|
||||||
# fzf config |
|
||||||
[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh |
|
||||||
# export FZF_DEFAULT_COMMAND='ag --hidden --ignore .git --ignore .idea -l -g ""' |
|
||||||
export FZF_DEFAULT_COMMAND='fd --type f --hidden --exclude .git --exclude .idea ""' |
|
||||||
#export FZF_DEFAULT_OPTS="--reverse --inline-info" |
|
||||||
export FZF_DEFAULT_OPTS="--height 40% --layout=reverse --preview '(highlight -O ansi {} || cat {}) 2> /dev/null | head -500'" |
|
||||||
|
|
||||||
# fe [FUZZY PATTERN] - Open the selected file with the default editor |
|
||||||
# - Bypass fuzzy finder if there's only one match (--select-1) |
|
||||||
# - Exit if there's no match (--exit-0) |
|
||||||
fe() { |
|
||||||
local files |
|
||||||
IFS=$'\n' files=($(fzf-tmux --query="$1" --multi --select-1 --exit-0)) |
|
||||||
[[ -n "$files" ]] && ${EDITOR:-vim} "${files[@]}" |
|
||||||
} |
|
||||||
|
|
||||||
# Modified version where you can press |
|
||||||
# - CTRL-O to open with `open` command, |
|
||||||
# - CTRL-E or Enter key to open with the $EDITOR |
|
||||||
fo() { |
|
||||||
local out file key |
|
||||||
IFS=$'\n' out=("$(fzf-tmux --query="$1" --exit-0 --expect=ctrl-o,ctrl-e)") |
|
||||||
key=$(head -1 <<< "$out") |
|
||||||
file=$(head -2 <<< "$out" | tail -1) |
|
||||||
if [ -n "$file" ]; then |
|
||||||
[ "$key" = ctrl-o ] && open "$file" || ${EDITOR:-vim} "$file" |
|
||||||
fi |
|
||||||
} |
|
||||||
|
|
||||||
# Use fd and fzf to get the args to a command. |
|
||||||
# Works only with zsh |
|
||||||
# Examples: |
|
||||||
# f mv # To move files. You can write the destination after selecting the files. |
|
||||||
# f 'echo Selected:' |
|
||||||
# f 'echo Selected music:' --extention mp3 |
|
||||||
# fm rm # To rm files in current directory |
|
||||||
f() { |
|
||||||
sels=( "${(@f)$(fd "${fd_default[@]}" "${@:2}"|fz)}" ) |
|
||||||
test -n "$sels" && print -z -- "$1 ${sels[@]:q:q}" |
|
||||||
} |
|
||||||
|
|
||||||
# Like f, but not recursive. |
|
||||||
fm() f "$@" --max-depth 1 |
|
||||||
|
|
||||||
# Deps |
|
||||||
alias fz="fzf-noempty --bind 'tab:toggle,shift-tab:toggle+beginning-of-line+kill-line,ctrl-j:toggle+beginning-of-line+kill-line,ctrl-t:top' --color=light -1 -m" |
|
||||||
fzf-noempty () { |
|
||||||
local in="$(</dev/stdin)" |
|
||||||
test -z "$in" && ( |
|
||||||
exit 130 |
|
||||||
) || { |
|
||||||
ec "$in" | fzf "$@" |
|
||||||
} |
|
||||||
} |
|
||||||
ec () { |
|
||||||
if [[ -n $ZSH_VERSION ]] |
|
||||||
then |
|
||||||
print -r -- "$@" |
|
||||||
else |
|
||||||
echo -E -- "$@" |
|
||||||
fi |
|
||||||
} |
|
||||||
|
|
||||||
# fd - cd to selected directory |
|
||||||
fd() { |
|
||||||
local dir |
|
||||||
dir=$(find ${1:-.} -path '*/\.*' -prune \ |
|
||||||
-o -type d -print 2> /dev/null | fzf +m) && |
|
||||||
cd "$dir" |
|
||||||
} |
|
||||||
|
|
||||||
# fh - repeat history |
|
||||||
fh() { |
|
||||||
print -z $( ([ -n "$ZSH_NAME" ] && fc -l 1 || history) | fzf +s --tac | sed -r 's/ *[0-9]*\*? *//' | sed -r 's/\\/\\\\/g') |
|
||||||
} |
|
||||||
|
|
||||||
# fkill - kill process |
|
||||||
fkill() { |
|
||||||
local pid |
|
||||||
pid=$(ps -ef |grep -v ^root | sed 1d | fzf -m | awk '{print $2}') |
|
||||||
|
|
||||||
if [ "x$pid" != "x" ] |
|
||||||
then |
|
||||||
echo $pid | xargs kill -${1:-9} |
|
||||||
fi |
|
||||||
} |
|
||||||
|
|
||||||
# tm - create new tmux session, or switch to existing one. Works from within tmux too. (@bag-man) |
|
||||||
# `tm` will allow you to select your tmux session via fzf. |
|
||||||
# `tm irc` will attach to the irc session (if it exists), else it will create it. |
|
||||||
|
|
||||||
tm() { |
|
||||||
[[ -n "$TMUX" ]] && change="switch-client" || change="attach-session" |
|
||||||
if [ $1 ]; then |
|
||||||
tmux $change -t "$1" 2>/dev/null || (tmux new-session -d -s $1 && tmux $change -t "$1"); return |
|
||||||
fi |
|
||||||
session=$(tmux list-sessions -F "#{session_name}" 2>/dev/null | fzf --exit-0) && tmux $change -t "$session" || echo "No sessions found." |
|
||||||
} |
|
||||||
|
|
||||||
# fs [FUZZY PATTERN] - Select selected tmux session |
|
||||||
# - Bypass fuzzy finder if there's only one match (--select-1) |
|
||||||
# - Exit if there's no match (--exit-0) |
|
||||||
fs() { |
|
||||||
local session |
|
||||||
session=$(tmux list-sessions -F "#{session_name}" | \ |
|
||||||
fzf --query="$1" --select-1 --exit-0) && |
|
||||||
tmux switch-client -t "$session" |
|
||||||
} |
|
||||||
|
|
||||||
unalias z 2> /dev/null |
|
||||||
z() { |
|
||||||
[ $# -gt 0 ] && _z "$*" && return |
|
||||||
cd "$(_z -l 2>&1 | fzf --height 40% --nth 2.. --reverse --inline-info +s --tac --query "${*##-* }" | sed 's/^[0-9,.]* *//')" |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
#alias lp="lpass show -c --password $(lpass ls | fzf | awk '{print $(NF)}' | sed 's/\]//g')" |
|
||||||
gcbr() { |
|
||||||
result=$(git branch -a --color=always | grep -v '/HEAD\s' | sort | |
|
||||||
fzf --height 50% --border --ansi --tac --preview-window right:70% \ |
|
||||||
--preview 'git log --oneline --graph --date=short --pretty="format:%C(auto)%cd %h%d %s" $(sed s/^..// <<< {} | cut -d" " -f1) | head -'$LINES | |
|
||||||
sed 's/^..//' | cut -d' ' -f1) |
|
||||||
|
|
||||||
if [[ $result != "" ]]; then |
|
||||||
if [[ $result == remotes/* ]]; then |
|
||||||
git checkout --track $(echo $result | sed 's#remotes/##') |
|
||||||
else |
|
||||||
git checkout "$result" |
|
||||||
fi |
|
||||||
fi |
|
||||||
} |
|
||||||
|
|
||||||
gfs() { |
|
||||||
git -c color.status=always status --short | |
|
||||||
fzf --height 50% --border --ansi --multi --ansi --nth 2..,.. \ |
|
||||||
--preview '(git diff --color=always -- {-1} | sed 1,4d; cat {-1}) | head -500' | |
|
||||||
cut -c4- | sed 's/.* -> //' |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in new issue