| Server IP : 74.208.236.79 / Your IP : 216.73.216.40 Web Server : Apache System : Linux infongp-us50 4.4.400-icpu-108 #2 SMP Wed Feb 11 10:12:42 UTC 2026 x86_64 User : u93192080 ( 6162215) PHP Version : 8.4.22 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /kunden/usr/share/zsh/functions/Zle/ |
Upload File : |
# Implementation of some functionality of the popular vim surround plugin.
# Allows "surroundings" to be changes: parentheses, brackets and quotes.
# To use
# autoload -Uz surround
# zle -N delete-surround surround
# zle -N add-surround surround
# zle -N change-surround surround
# bindkey -a cs change-surround
# bindkey -a ds delete-surround
# bindkey -a ys add-surround
# bindkey -M visual S add-surround
#
# This doesn't allow yss to operate on a line but VS will work
setopt localoptions noksharrays
autoload -Uz select-quoted select-bracketed
local before after
local -A matching
matching=( \( \) \{ \} \< \> \[ \] )
zle -f vichange
case $WIDGET in
change-*)
local MARK="$MARK" CURSOR="$CURSOR" call
read -k 1 before
if [[ ${(kvj::)matching} = *$before* ]]; then
call=select-bracketed
else
call=select-quoted
fi
read -k 1 after
$call "a$before" || return 1
before="$after"
if [[ -n $matching[$before] ]]; then
after=" $matching[$before]"
before+=' '
elif [[ -n $matching[(r)[$before:q]] ]]; then
before="${(k)matching[(r)[$before:q]]}"
fi
BUFFER[CURSOR]="$after"
BUFFER[MARK+1]="$before"
CURSOR=MARK
;;
delete-*)
local MARK="$MARK" CURSOR="$CURSOR" call
read -k 1 before
if [[ ${(kvj::)matching} = *$before* ]]; then
call=select-bracketed
else
call=select-quoted
fi
if $call "a$before"; then
BUFFER[CURSOR]=''
BUFFER[MARK+1]=''
CURSOR=MARK
fi
;;
add-*)
local save_cut="$CUTBUFFER"
zle .vi-change || return
local save_cur="$CURSOR"
zle .vi-cmd-mode
read -k 1 before
after="$before"
if [[ -n $matching[$before] ]]; then
after=" $matching[$before]"
before+=' '
elif [[ -n $matching[(r)[$before:q]] ]]; then
before="${(k)matching[(r)[$before:q]]}"
fi
CUTBUFFER="$before$CUTBUFFER$after"
if [[ CURSOR -eq 0 || $BUFFER[CURSOR] = $'\n' ]]; then
zle .vi-put-before -n 1
else
zle .vi-put-after -n 1
fi
CUTBUFFER="$save_cut" CURSOR="$save_cur"
;;
esac