diff --git a/examples.md b/examples.md new file mode 100644 index 0000000..1b909fa --- /dev/null +++ b/examples.md @@ -0,0 +1,93 @@ +Useful examples +=============== + +Opening files and directories +----------------------------- + +```sh +# 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 file + file=$(fzf --query="$1" --select-1 --exit-0) + [ -n "$file" ] && ${EDITOR:-vim} "$file" +} +``` + +```sh +# fd - cd to selected directory +fd() { + local dir + dir=$(find ${1:-*} -path '*/\.*' -prune \ + -o -type d -print 2> /dev/null | fzf +m) && + cd "$dir" +} +``` + +```sh +# fda - including hidden directories +fda() { + local dir + dir=$(find ${1:-.} -type d 2> /dev/null | fzf +m) && cd "$dir" +} +``` + +Command history +--------------- + +```sh +# fh - repeat history +fh() { + eval $(([ -n "$ZSH_NAME" ] && fc -l 1 || history) | fzf +s | sed 's/ *[0-9]* *//') +} +``` + +Processes +--------- + +```sh +# fkill - kill process +fkill() { + ps -ef | sed 1d | fzf -m | awk '{print $2}' | xargs kill -${1:-9} +} +``` + +Git +--- + +```sh +# fbr - checkout git branch +fbr() { + local branches branch + branches=$(git branch) && + branch=$(echo "$branches" | fzf +s +m) && + git checkout $(echo "$branch" | sed "s/.* //") +} +``` + +```sh +# fco - checkout git commit +fco() { + local commits commit + commits=$(git log --pretty=oneline --abbrev-commit --reverse) && + commit=$(echo "$commits" | fzf +s +m -e) && + git checkout $(echo "$commit" | sed "s/ .*//") +} +``` + +ctags +----- + +```sh +# ftags - search ctags +ftags() { + local line + [ -e tags ] && + line=$( + awk 'BEGIN { FS="\t" } !/^!/ {print toupper($4)"\t"$1"\t"$2"\t"$3}' tags | + cut -c1-80 | fzf --nth=1,2 + ) && $EDITOR $(cut -f3 <<< "$line") -c "set nocst" \ + -c "silent tag $(cut -f2 <<< "$line")" +} +```