parent
356daffed6
commit
4cf32368a5
10 changed files with 561 additions and 0 deletions
@ -1,3 +1,18 @@ |
||||
[submodule "tmux/.tmux/plugins/tpm"] |
||||
path = tmux/.tmux/plugins/tpm |
||||
url = https://github.com/tmux-plugins/tpm.git |
||||
[submodule "zsh/.config/zsh/zsh-syntax-highlighting"] |
||||
path = zsh/.config/zsh/zsh-syntax-highlighting |
||||
url = https://github.com/zsh-users/zsh-syntax-highlighting.git |
||||
[submodule "zsh/.config/zsh/zsh-autosuggestions"] |
||||
path = zsh/.config/zsh/zsh-autosuggestions |
||||
url = https://github.com/zsh-users/zsh-autosuggestions.git |
||||
[submodule "zsh/.config/zsh/zsh-history-substring-search"] |
||||
path = zsh/.config/zsh/zsh-history-substring-search |
||||
url = https://github.com/zsh-users/zsh-history-substring-search |
||||
[submodule "zsh/.config/zsh/auto-ls"] |
||||
path = zsh/.config/zsh/auto-ls |
||||
url = https://github.com/desyncr/auto-ls |
||||
[submodule "zsh/.config/zsh/pure"] |
||||
path = zsh/.config/zsh/pure |
||||
url = https://github.com/sindresorhus/pure.git |
||||
|
@ -0,0 +1,81 @@ |
||||
fpath+=$ZDOTDIR/pure |
||||
|
||||
autoload -U compinit |
||||
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}' # menu select=2 |
||||
zmodload zsh/complist |
||||
compinit |
||||
_comp_options+=(globdots) # Include hidden files. |
||||
|
||||
# Prompt theme |
||||
# git clone https://github.com/sindresorhus/pure ~/.config/zsh/ |
||||
autoload -U promptinit; promptinit |
||||
prompt pure |
||||
|
||||
# Cursor for vimode |
||||
# ZLE hooks for prompt's vi mode status |
||||
function zle-line-init zle-keymap-select { |
||||
# Change the cursor style depending on keymap mode. |
||||
case $KEYMAP { |
||||
vicmd) |
||||
printf '\e[0 q' # Box. |
||||
;; |
||||
|
||||
viins|main) |
||||
printf '\e[6 q' # Vertical bar. |
||||
;; |
||||
} |
||||
} |
||||
zle -N zle-line-init |
||||
zle -N zle-keymap-select |
||||
|
||||
# Switch between vimode quickly |
||||
export KEYTIMEOUT=1 |
||||
|
||||
# Alias |
||||
## Colors |
||||
alias ls='ls --color' |
||||
alias grep='grep --color=auto' |
||||
alias fgrep='fgrep --color=auto' |
||||
alias egrep='egrep --color=auto' |
||||
## Prompt when over right |
||||
alias cp='cp -iv' |
||||
alias mv='mv -iv' |
||||
alias rm='rm -i' |
||||
|
||||
alias newsboat='tmux new -As newsboat newsboat' |
||||
|
||||
|
||||
# Autosuggestions |
||||
# git clone https://github.com/zsh-users/zsh-autosuggestions ~/.config/zsh/ |
||||
source ~/.config/zsh/zsh-autosuggestions/zsh-autosuggestions.zsh |
||||
ZSH_AUTOSUGGEST_STRATEGY=(history completion) |
||||
|
||||
# Syntax Highlight |
||||
# git clone https://github.com/zsh-users/zsh-syntax-highlighting ~/.config/zsh/ |
||||
source ~/.config/zsh/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh |
||||
|
||||
# Substring search |
||||
# git clone https://github.com/zsh-users/zsh-history-substring-search ~/.config/zsh |
||||
source ~/.config/zsh/zsh-history-substring-search/zsh-history-substring-search.zsh |
||||
|
||||
# Ignore duplicate commands in history |
||||
setopt HIST_IGNORE_DUPS |
||||
bindkey '^[[A' history-substring-search-up |
||||
bindkey '^[[B' history-substring-search-down |
||||
bindkey -M vicmd 'k' history-substring-search-up |
||||
bindkey -M vicmd 'j' history-substring-search-down |
||||
|
||||
# Auto-ls |
||||
source ~/.config/zsh/auto-ls/auto-ls.zsh |
||||
|
||||
|
||||
source ~/.config/zsh/completion.zsh |
||||
source ~/.config/zsh/key-bindings.zsh |
||||
|
||||
_fzf_complete_pass() { |
||||
ARGS="$@" |
||||
_fzf_complete '' "$@" < <( |
||||
command find ~/.password-store/ -name "*.gpg" | sed -r 's,(.*)\.password-store/(.*)\.gpg,\2,' |
||||
) |
||||
} |
||||
|
@ -0,0 +1 @@ |
||||
Subproject commit 88704f2717fb176b91cdd4b7dbab05242bd02ddf |
@ -0,0 +1,329 @@ |
||||
# ____ ____ |
||||
# / __/___ / __/ |
||||
# / /_/_ / / /_ |
||||
# / __/ / /_/ __/ |
||||
# /_/ /___/_/ completion.zsh |
||||
# |
||||
# - $FZF_TMUX (default: 0) |
||||
# - $FZF_TMUX_OPTS (default: '-d 40%') |
||||
# - $FZF_COMPLETION_TRIGGER (default: '**') |
||||
# - $FZF_COMPLETION_OPTS (default: empty) |
||||
|
||||
# Both branches of the following `if` do the same thing -- define |
||||
# __fzf_completion_options such that `eval $__fzf_completion_options` sets |
||||
# all options to the same values they currently have. We'll do just that at |
||||
# the bottom of the file after changing options to what we prefer. |
||||
# |
||||
# IMPORTANT: Until we get to the `emulate` line, all words that *can* be quoted |
||||
# *must* be quoted in order to prevent alias expansion. In addition, code must |
||||
# be written in a way works with any set of zsh options. This is very tricky, so |
||||
# careful when you change it. |
||||
# |
||||
# Start by loading the builtin zsh/parameter module. It provides `options` |
||||
# associative array that stores current shell options. |
||||
if 'zmodload' 'zsh/parameter' 2>'/dev/null' && (( ${+options} )); then |
||||
# This is the fast branch and it gets taken on virtually all Zsh installations. |
||||
# |
||||
# ${(kv)options[@]} expands to array of keys (option names) and values ("on" |
||||
# or "off"). The subsequent expansion# with (j: :) flag joins all elements |
||||
# together separated by spaces. __fzf_completion_options ends up with a value |
||||
# like this: "options=(shwordsplit off aliases on ...)". |
||||
__fzf_completion_options="options=(${(j: :)${(kv)options[@]}})" |
||||
else |
||||
# This branch is much slower because it forks to get the names of all |
||||
# zsh options. It's possible to eliminate this fork but it's not worth the |
||||
# trouble because this branch gets taken only on very ancient or broken |
||||
# zsh installations. |
||||
() { |
||||
# That `()` above defines an anonymous function. This is essentially a scope |
||||
# for local parameters. We use it to avoid polluting global scope. |
||||
'local' '__fzf_opt' |
||||
__fzf_completion_options="setopt" |
||||
# `set -o` prints one line for every zsh option. Each line contains option |
||||
# name, some spaces, and then either "on" or "off". We just want option names. |
||||
# Expansion with (@f) flag splits a string into lines. The outer expansion |
||||
# removes spaces and everything that follow them on every line. __fzf_opt |
||||
# ends up iterating over option names: shwordsplit, aliases, etc. |
||||
for __fzf_opt in "${(@)${(@f)$(set -o)}%% *}"; do |
||||
if [[ -o "$__fzf_opt" ]]; then |
||||
# Option $__fzf_opt is currently on, so remember to set it back on. |
||||
__fzf_completion_options+=" -o $__fzf_opt" |
||||
else |
||||
# Option $__fzf_opt is currently off, so remember to set it back off. |
||||
__fzf_completion_options+=" +o $__fzf_opt" |
||||
fi |
||||
done |
||||
# The value of __fzf_completion_options here looks like this: |
||||
# "setopt +o shwordsplit -o aliases ..." |
||||
} |
||||
fi |
||||
|
||||
# Enable the default zsh options (those marked with <Z> in `man zshoptions`) |
||||
# but without `aliases`. Aliases in functions are expanded when functions are |
||||
# defined, so if we disable aliases here, we'll be sure to have no pesky |
||||
# aliases in any of our functions. This way we won't need prefix every |
||||
# command with `command` or to quote every word to defend against global |
||||
# aliases. Note that `aliases` is not the only option that's important to |
||||
# control. There are several others that could wreck havoc if they are set |
||||
# to values we don't expect. With the following `emulate` command we |
||||
# sidestep this issue entirely. |
||||
'emulate' 'zsh' '-o' 'no_aliases' |
||||
|
||||
# This brace is the start of try-always block. The `always` part is like |
||||
# `finally` in lesser languages. We use it to *always* restore user options. |
||||
{ |
||||
|
||||
# Bail out if not interactive shell. |
||||
[[ -o interactive ]] || return 0 |
||||
|
||||
# To use custom commands instead of find, override _fzf_compgen_{path,dir} |
||||
if ! declare -f _fzf_compgen_path > /dev/null; then |
||||
_fzf_compgen_path() { |
||||
echo "$1" |
||||
command find -L "$1" \ |
||||
-name .git -prune -o -name .hg -prune -o -name .svn -prune -o \( -type d -o -type f -o -type l \) \ |
||||
-a -not -path "$1" -print 2> /dev/null | sed 's@^\./@@' |
||||
} |
||||
fi |
||||
|
||||
if ! declare -f _fzf_compgen_dir > /dev/null; then |
||||
_fzf_compgen_dir() { |
||||
command find -L "$1" \ |
||||
-name .git -prune -o -name .hg -prune -o -name .svn -prune -o -type d \ |
||||
-a -not -path "$1" -print 2> /dev/null | sed 's@^\./@@' |
||||
} |
||||
fi |
||||
|
||||
########################################################### |
||||
|
||||
__fzf_comprun() { |
||||
if [[ "$(type _fzf_comprun 2>&1)" =~ function ]]; then |
||||
_fzf_comprun "$@" |
||||
elif [ -n "$TMUX_PANE" ] && { [ "${FZF_TMUX:-0}" != 0 ] || [ -n "$FZF_TMUX_OPTS" ]; }; then |
||||
shift |
||||
if [ -n "$FZF_TMUX_OPTS" ]; then |
||||
fzf-tmux ${(Q)${(Z+n+)FZF_TMUX_OPTS}} -- "$@" |
||||
else |
||||
fzf-tmux -d ${FZF_TMUX_HEIGHT:-40%} -- "$@" |
||||
fi |
||||
else |
||||
shift |
||||
fzf "$@" |
||||
fi |
||||
} |
||||
|
||||
# Extract the name of the command. e.g. foo=1 bar baz**<tab> |
||||
__fzf_extract_command() { |
||||
local token tokens |
||||
tokens=(${(z)1}) |
||||
for token in $tokens; do |
||||
token=${(Q)token} |
||||
if [[ "$token" =~ [[:alnum:]] && ! "$token" =~ "=" ]]; then |
||||
echo "$token" |
||||
return |
||||
fi |
||||
done |
||||
echo "${tokens[1]}" |
||||
} |
||||
|
||||
__fzf_generic_path_completion() { |
||||
local base lbuf cmd compgen fzf_opts suffix tail dir leftover matches |
||||
base=$1 |
||||
lbuf=$2 |
||||
cmd=$(__fzf_extract_command "$lbuf") |
||||
compgen=$3 |
||||
fzf_opts=$4 |
||||
suffix=$5 |
||||
tail=$6 |
||||
|
||||
setopt localoptions nonomatch |
||||
eval "base=$base" |
||||
[[ $base = *"/"* ]] && dir="$base" |
||||
while [ 1 ]; do |
||||
if [[ -z "$dir" || -d ${dir} ]]; then |
||||
leftover=${base/#"$dir"} |
||||
leftover=${leftover/#\/} |
||||
[ -z "$dir" ] && dir='.' |
||||
[ "$dir" != "/" ] && dir="${dir/%\//}" |
||||
matches=$(eval "$compgen $(printf %q "$dir")" | FZF_DEFAULT_OPTS="--height ${FZF_TMUX_HEIGHT:-40%} --reverse --bind=ctrl-z:ignore $FZF_DEFAULT_OPTS $FZF_COMPLETION_OPTS" __fzf_comprun "$cmd" ${(Q)${(Z+n+)fzf_opts}} -q "$leftover" | while read item; do |
||||
echo -n "${(q)item}$suffix " |
||||
done) |
||||
matches=${matches% } |
||||
if [ -n "$matches" ]; then |
||||
LBUFFER="$lbuf$matches$tail" |
||||
fi |
||||
zle reset-prompt |
||||
break |
||||
fi |
||||
dir=$(dirname "$dir") |
||||
dir=${dir%/}/ |
||||
done |
||||
} |
||||
|
||||
_fzf_path_completion() { |
||||
__fzf_generic_path_completion "$1" "$2" _fzf_compgen_path \ |
||||
"-m" "" " " |
||||
} |
||||
|
||||
_fzf_dir_completion() { |
||||
__fzf_generic_path_completion "$1" "$2" _fzf_compgen_dir \ |
||||
"" "/" "" |
||||
} |
||||
|
||||
_fzf_feed_fifo() ( |
||||
command rm -f "$1" |
||||
mkfifo "$1" |
||||
cat <&0 > "$1" & |
||||
) |
||||
|
||||
_fzf_complete() { |
||||
setopt localoptions ksh_arrays |
||||
# Split arguments around -- |
||||
local args rest str_arg i sep |
||||
args=("$@") |
||||
sep= |
||||
for i in {0..${#args[@]}}; do |
||||
if [[ "${args[$i]}" = -- ]]; then |
||||
sep=$i |
||||
break |
||||
fi |
||||
done |
||||
if [[ -n "$sep" ]]; then |
||||
str_arg= |
||||
rest=("${args[@]:$((sep + 1)):${#args[@]}}") |
||||
args=("${args[@]:0:$sep}") |
||||
else |
||||
str_arg=$1 |
||||
args=() |
||||
shift |
||||
rest=("$@") |
||||
fi |
||||
|
||||
local fifo lbuf cmd matches post |
||||
fifo="${TMPDIR:-/tmp}/fzf-complete-fifo-$$" |
||||
lbuf=${rest[0]} |
||||
cmd=$(__fzf_extract_command "$lbuf") |
||||
post="${funcstack[1]}_post" |
||||
type $post > /dev/null 2>&1 || post=cat |
||||
|
||||
_fzf_feed_fifo "$fifo" |
||||
matches=$(FZF_DEFAULT_OPTS="--height ${FZF_TMUX_HEIGHT:-40%} --reverse --bind=ctrl-z:ignore $FZF_DEFAULT_OPTS $FZF_COMPLETION_OPTS $str_arg" __fzf_comprun "$cmd" "${args[@]}" -q "${(Q)prefix}" < "$fifo" | $post | tr '\n' ' ') |
||||
if [ -n "$matches" ]; then |
||||
LBUFFER="$lbuf$matches" |
||||
fi |
||||
command rm -f "$fifo" |
||||
} |
||||
|
||||
_fzf_complete_telnet() { |
||||
_fzf_complete +m -- "$@" < <( |
||||
command grep -v '^\s*\(#\|$\)' /etc/hosts | command grep -Fv '0.0.0.0' | |
||||
awk '{if (length($2) > 0) {print $2}}' | sort -u |
||||
) |
||||
} |
||||
|
||||
_fzf_complete_ssh() { |
||||
_fzf_complete +m -- "$@" < <( |
||||
setopt localoptions nonomatch |
||||
command cat <(command tail -n +1 ~/.ssh/config ~/.ssh/config.d/* /etc/ssh/ssh_config 2> /dev/null | command grep -i '^\s*host\(name\)\? ' | awk '{for (i = 2; i <= NF; i++) print $1 " " $i}' | command grep -v '[*?]') \ |
||||
<(command grep -oE '^[[a-z0-9.,:-]+' ~/.ssh/known_hosts | tr ',' '\n' | tr -d '[' | awk '{ print $1 " " $1 }') \ |
||||
<(command grep -v '^\s*\(#\|$\)' /etc/hosts | command grep -Fv '0.0.0.0') | |
||||
awk '{if (length($2) > 0) {print $2}}' | sort -u |
||||
) |
||||
} |
||||
|
||||
_fzf_complete_export() { |
||||
_fzf_complete -m -- "$@" < <( |
||||
declare -xp | sed 's/=.*//' | sed 's/.* //' |
||||
) |
||||
} |
||||
|
||||
_fzf_complete_unset() { |
||||
_fzf_complete -m -- "$@" < <( |
||||
declare -xp | sed 's/=.*//' | sed 's/.* //' |
||||
) |
||||
} |
||||
|
||||
_fzf_complete_unalias() { |
||||
_fzf_complete +m -- "$@" < <( |
||||
alias | sed 's/=.*//' |
||||
) |
||||
} |
||||
|
||||
_fzf_complete_kill() { |
||||
_fzf_complete -m --preview 'echo {}' --preview-window down:3:wrap --min-height 15 -- "$@" < <( |
||||
command ps -ef | sed 1d |
||||
) |
||||
} |
||||
|
||||
_fzf_complete_kill_post() { |
||||
awk '{print $2}' |
||||
} |
||||
|
||||
fzf-completion() { |
||||
local tokens cmd prefix trigger tail matches lbuf d_cmds |
||||
setopt localoptions noshwordsplit noksh_arrays noposixbuiltins |
||||
|
||||
# http://zsh.sourceforge.net/FAQ/zshfaq03.html |
||||
# http://zsh.sourceforge.net/Doc/Release/Expansion.html#Parameter-Expansion-Flags |
||||
tokens=(${(z)LBUFFER}) |
||||
if [ ${#tokens} -lt 1 ]; then |
||||
zle ${fzf_default_completion:-expand-or-complete} |
||||
return |
||||
fi |
||||
|
||||
cmd=$(__fzf_extract_command "$LBUFFER") |
||||
|
||||
# Explicitly allow for empty trigger. |
||||
trigger=${FZF_COMPLETION_TRIGGER-'**'} |
||||
[ -z "$trigger" -a ${LBUFFER[-1]} = ' ' ] && tokens+=("") |
||||
|
||||
# When the trigger starts with ';', it becomes a separate token |
||||
if [[ ${LBUFFER} = *"${tokens[-2]}${tokens[-1]}" ]]; then |
||||
tokens[-2]="${tokens[-2]}${tokens[-1]}" |
||||
tokens=(${tokens[0,-2]}) |
||||
fi |
||||
|
||||
lbuf=$LBUFFER |
||||
tail=${LBUFFER:$(( ${#LBUFFER} - ${#trigger} ))} |
||||
# Kill completion (do not require trigger sequence) |
||||
if [ "$cmd" = kill -a ${LBUFFER[-1]} = ' ' ]; then |
||||
tail=$trigger |
||||
tokens+=$trigger |
||||
lbuf="$lbuf$trigger" |
||||
fi |
||||
|
||||
# Trigger sequence given |
||||
if [ ${#tokens} -gt 1 -a "$tail" = "$trigger" ]; then |
||||
d_cmds=(${=FZF_COMPLETION_DIR_COMMANDS:-cd pushd rmdir}) |
||||
|
||||
[ -z "$trigger" ] && prefix=${tokens[-1]} || prefix=${tokens[-1]:0:-${#trigger}} |
||||
[ -n "${tokens[-1]}" ] && lbuf=${lbuf:0:-${#tokens[-1]}} |
||||
|
||||
if eval "type _fzf_complete_${cmd} > /dev/null"; then |
||||
prefix="$prefix" eval _fzf_complete_${cmd} ${(q)lbuf} |
||||
zle reset-prompt |
||||
elif [ ${d_cmds[(i)$cmd]} -le ${#d_cmds} ]; then |
||||
_fzf_dir_completion "$prefix" "$lbuf" |
||||
else |
||||
_fzf_path_completion "$prefix" "$lbuf" |
||||
fi |
||||
# Fall back to default completion |
||||
else |
||||
zle ${fzf_default_completion:-expand-or-complete} |
||||
fi |
||||
} |
||||
|
||||
[ -z "$fzf_default_completion" ] && { |
||||
binding=$(bindkey '^I') |
||||
[[ $binding =~ 'undefined-key' ]] || fzf_default_completion=$binding[(s: :w)2] |
||||
unset binding |
||||
} |
||||
|
||||
zle -N fzf-completion |
||||
bindkey '^I' fzf-completion |
||||
|
||||
} always { |
||||
# Restore the original options. |
||||
eval $__fzf_completion_options |
||||
'unset' '__fzf_completion_options' |
||||
} |
@ -0,0 +1,114 @@ |
||||
# ____ ____ |
||||
# / __/___ / __/ |
||||
# / /_/_ / / /_ |
||||
# / __/ / /_/ __/ |
||||
# /_/ /___/_/ key-bindings.zsh |
||||
# |
||||
# - $FZF_TMUX_OPTS |
||||
# - $FZF_CTRL_T_COMMAND |
||||
# - $FZF_CTRL_T_OPTS |
||||
# - $FZF_CTRL_R_OPTS |
||||
# - $FZF_ALT_C_COMMAND |
||||
# - $FZF_ALT_C_OPTS |
||||
|
||||
# Key bindings |
||||
# ------------ |
||||
|
||||
# The code at the top and the bottom of this file is the same as in completion.zsh. |
||||
# Refer to that file for explanation. |
||||
if 'zmodload' 'zsh/parameter' 2>'/dev/null' && (( ${+options} )); then |
||||
__fzf_key_bindings_options="options=(${(j: :)${(kv)options[@]}})" |
||||
else |
||||
() { |
||||
__fzf_key_bindings_options="setopt" |
||||
'local' '__fzf_opt' |
||||
for __fzf_opt in "${(@)${(@f)$(set -o)}%% *}"; do |
||||
if [[ -o "$__fzf_opt" ]]; then |
||||
__fzf_key_bindings_options+=" -o $__fzf_opt" |
||||
else |
||||
__fzf_key_bindings_options+=" +o $__fzf_opt" |
||||
fi |
||||
done |
||||
} |
||||
fi |
||||
|
||||
'emulate' 'zsh' '-o' 'no_aliases' |
||||
|
||||
{ |
||||
|
||||
[[ -o interactive ]] || return 0 |
||||
|
||||
# CTRL-T - Paste the selected file path(s) into the command line |
||||
__fsel() { |
||||
local cmd="${FZF_CTRL_T_COMMAND:-"command find -L . -mindepth 1 \\( -path '*/\\.*' -o -fstype 'sysfs' -o -fstype 'devfs' -o -fstype 'devtmpfs' -o -fstype 'proc' \\) -prune \ |
||||
-o -type f -print \ |
||||
-o -type d -print \ |
||||
-o -type l -print 2> /dev/null | cut -b3-"}" |
||||
setopt localoptions pipefail no_aliases 2> /dev/null |
||||
local item |
||||
eval "$cmd" | FZF_DEFAULT_OPTS="--height ${FZF_TMUX_HEIGHT:-40%} --reverse --bind=ctrl-z:ignore $FZF_DEFAULT_OPTS $FZF_CTRL_T_OPTS" $(__fzfcmd) -m "$@" | while read item; do |
||||
echo -n "${(q)item} " |
||||
done |
||||
local ret=$? |
||||
echo |
||||
return $ret |
||||
} |
||||
|
||||
__fzfcmd() { |
||||
[ -n "$TMUX_PANE" ] && { [ "${FZF_TMUX:-0}" != 0 ] || [ -n "$FZF_TMUX_OPTS" ]; } && |
||||
echo "fzf-tmux ${FZF_TMUX_OPTS:--d${FZF_TMUX_HEIGHT:-40%}} -- " || echo "fzf" |
||||
} |
||||
|
||||
fzf-file-widget() { |
||||
LBUFFER="${LBUFFER}$(__fsel)" |
||||
local ret=$? |
||||
zle reset-prompt |
||||
return $ret |
||||
} |
||||
zle -N fzf-file-widget |
||||
bindkey '^T' fzf-file-widget |
||||
|
||||
# ALT-C - cd into the selected directory |
||||
fzf-cd-widget() { |
||||
local cmd="${FZF_ALT_C_COMMAND:-"command find -L . -mindepth 1 \\( -path '*/\\.*' -o -fstype 'sysfs' -o -fstype 'devfs' -o -fstype 'devtmpfs' -o -fstype 'proc' \\) -prune \ |
||||
-o -type d -print 2> /dev/null | cut -b3-"}" |
||||
setopt localoptions pipefail no_aliases 2> /dev/null |
||||
local dir="$(eval "$cmd" | FZF_DEFAULT_OPTS="--height ${FZF_TMUX_HEIGHT:-40%} --reverse --bind=ctrl-z:ignore $FZF_DEFAULT_OPTS $FZF_ALT_C_OPTS" $(__fzfcmd) +m)" |
||||
if [[ -z "$dir" ]]; then |
||||
zle redisplay |
||||
return 0 |
||||
fi |
||||
zle push-line # Clear buffer. Auto-restored on next prompt. |
||||
BUFFER="cd ${(q)dir}" |
||||
zle accept-line |
||||
local ret=$? |
||||
unset dir # ensure this doesn't end up appearing in prompt expansion |
||||
zle reset-prompt |
||||
return $ret |
||||
} |
||||
zle -N fzf-cd-widget |
||||
bindkey '\ec' fzf-cd-widget |
||||
|
||||
# CTRL-R - Paste the selected command from history into the command line |
||||
fzf-history-widget() { |
||||
local selected num |
||||
setopt localoptions noglobsubst noposixbuiltins pipefail no_aliases 2> /dev/null |
||||
selected=( $(fc -rl 1 | perl -ne 'print if !$seen{(/^\s*[0-9]+\**\s+(.*)/, $1)}++' | |
||||
FZF_DEFAULT_OPTS="--height ${FZF_TMUX_HEIGHT:-40%} $FZF_DEFAULT_OPTS -n2..,.. --tiebreak=index --bind=ctrl-r:toggle-sort,ctrl-z:ignore $FZF_CTRL_R_OPTS --query=${(qqq)LBUFFER} +m" $(__fzfcmd)) ) |
||||
local ret=$? |
||||
if [ -n "$selected" ]; then |
||||
num=$selected[1] |
||||
if [ -n "$num" ]; then |
||||
zle vi-fetch-history -n $num |
||||
fi |
||||
fi |
||||
zle reset-prompt |
||||
return $ret |
||||
} |
||||
zle -N fzf-history-widget |
||||
bindkey '^R' fzf-history-widget |
||||
|
||||
} always { |
||||
eval $__fzf_key_bindings_options |
||||
'unset' '__fzf_key_bindings_options' |
||||
} |
@ -0,0 +1 @@ |
||||
Subproject commit f4c6d79ba2417d63c8008b6acce628631fd462ec |
@ -0,0 +1 @@ |
||||
Subproject commit a411ef3e0992d4839f0732ebeb9823024afaaaa8 |
@ -0,0 +1 @@ |
||||
Subproject commit 0f80b8eb3368b46e5e573c1d91ae69eb095db3fb |
@ -0,0 +1 @@ |
||||
Subproject commit dffe304567c86f06bf1be0fce200077504e79783 |
@ -0,0 +1,17 @@ |
||||
export TERM='rxvt-256color' |
||||
|
||||
# XDG |
||||
export XDG_CONFIG_HOME=$HOME/.config |
||||
|
||||
# editor |
||||
export EDITOR="nvim" |
||||
export VISUAL="nvim" |
||||
|
||||
|
||||
# zsh |
||||
export ZDOTDIR="$XDG_CONFIG_HOME/zsh" |
||||
export HISTFILE="$ZDOTDIR/.zhistory" # History filepath |
||||
export HISTSIZE=10000 # Maximum events for internal history |
||||
export SAVEHIST=10000 # Maximum events in history file |
||||
|
||||
|
Loading…
Reference in new issue