From 2f996582893ff4db47d084e1774b7434bc3f9d5d Mon Sep 17 00:00:00 2001 From: Eric Torres Date: Thu, 3 Jan 2019 13:46:05 -0800 Subject: [PATCH] Update zsh directory structure --- zsh/_fless.zsh | 0 zsh/plugins.d/cf.zsh | 20 +++++++ zsh/plugins.d/ef.zsh | 79 +++++++++++++++++++++++++ zsh/{_fedit.zsh => plugins.d/fedit.zsh} | 3 +- zsh/plugins.d/fless.zsh | 3 + zsh/plugins.d/mkcd.zsh | 8 +++ 6 files changed, 111 insertions(+), 2 deletions(-) delete mode 100644 zsh/_fless.zsh create mode 100644 zsh/plugins.d/cf.zsh create mode 100644 zsh/plugins.d/ef.zsh rename zsh/{_fedit.zsh => plugins.d/fedit.zsh} (83%) create mode 100644 zsh/plugins.d/fless.zsh create mode 100644 zsh/plugins.d/mkcd.zsh diff --git a/zsh/_fless.zsh b/zsh/_fless.zsh deleted file mode 100644 index e69de29..0000000 diff --git a/zsh/plugins.d/cf.zsh b/zsh/plugins.d/cf.zsh new file mode 100644 index 0000000..ee57642 --- /dev/null +++ b/zsh/plugins.d/cf.zsh @@ -0,0 +1,20 @@ +# Fuzzy cd from anywhere +# Dependencies +# - fzf +# - mlocate +cf() { + [[ -z "${*}" ]] && return 1 + [[ ! -x /usr/bin/fzf ]] && return 1 + + dir="$(locate --all --ignore-case --null -- "${@}" | fzf --read0 --select-1 --exit-0)" + + [[ -z "${dir}" ]] && return 1 + + if [[ -f "${dir}" ]]; then + cd "${dir%/*}" + else + cd "${dir}" + fi +} + +autoload -Uz cf diff --git a/zsh/plugins.d/ef.zsh b/zsh/plugins.d/ef.zsh new file mode 100644 index 0000000..e441618 --- /dev/null +++ b/zsh/plugins.d/ef.zsh @@ -0,0 +1,79 @@ +# ef - fuzzy find a file and edit it +# Dependencies +# - fzf +# - mlocate + +_ef_help() { +cat << done +Usage: ef [-h|--help] [-E|--editor editor] [patterns] + +Options: + -h print this help page + -E, --editor use a different editor (default: ${EDITOR:-none}) +done +} + +ef() { + # Pre-run correctness checks + editor= + file= + + while true; do + case "${1}" in + "-E"|"--editor") + case "${2}" in + ""|-*) + printf '%s\n' "Not an editor or none entered" >&2 + return 1 + ;; + *) + editor="${2}" + ;; + esac + shift 2 + continue + ;; + --editor=*) + editor="${1#*=}" + [[ -z "${editor}" ]] && printf '%s\n' "Editor not entered" >&2 && return 1 + shift + continue + ;; + "-h"|"--help") + _ef_help + return + ;; + --) + shift + break + ;; + -?) + printf '%s\n' "Unknown option: ${1}" >&2 + return 1 + ;; + *) + break + ;; + esac + done + + if [[ -z "${editor:-${EDITOR}}" ]]; then + printf '%s\n' "No editor found" >&2 + return 1 + fi + + file="$(locate --all --ignore-case --null -- "${@}" | fzf --read0 --exit-0 --select-1 --no-mouse)" + + if [[ -z "${file}" ]]; then + return 1 + fi + + if [[ -w "${file}" ]]; then + "${editor:-${EDITOR}}" -- "${file}" + else + sudo --edit -- "${file}" + fi +} + +#zle -N ef +#bindkey -M viins '^o' ef diff --git a/zsh/_fedit.zsh b/zsh/plugins.d/fedit.zsh similarity index 83% rename from zsh/_fedit.zsh rename to zsh/plugins.d/fedit.zsh index ce954cf..b6ea9d3 100644 --- a/zsh/_fedit.zsh +++ b/zsh/plugins.d/fedit.zsh @@ -1,5 +1,4 @@ -#!/usr/bin/bash - +# call the fedit script _etcedit() { fedit -e } diff --git a/zsh/plugins.d/fless.zsh b/zsh/plugins.d/fless.zsh new file mode 100644 index 0000000..85179f0 --- /dev/null +++ b/zsh/plugins.d/fless.zsh @@ -0,0 +1,3 @@ +# key bindings for fless script +zle -N fless +bindkey -M viins '^n' fless diff --git a/zsh/plugins.d/mkcd.zsh b/zsh/plugins.d/mkcd.zsh new file mode 100644 index 0000000..a3896a0 --- /dev/null +++ b/zsh/plugins.d/mkcd.zsh @@ -0,0 +1,8 @@ +# Make a directory, then change into it + +mkcd() { + [[ ! -d "${1}" ]] && mkdir --parents -- "${1}" + cd "${1}" || exit +} + +autoload -Uz mkcd