mirror of
https://github.com/ohmyzsh/ohmyzsh.git
synced 2026-05-01 04:30:37 +02:00
Merge 45872b1c73 into ac9a8cb687
This commit is contained in:
commit
85ea56c16a
1 changed files with 90 additions and 0 deletions
|
|
@ -28,6 +28,96 @@ bindkey '^?' backward-delete-char
|
||||||
bindkey '^h' backward-delete-char
|
bindkey '^h' backward-delete-char
|
||||||
bindkey '^w' backward-kill-word
|
bindkey '^w' backward-kill-word
|
||||||
|
|
||||||
|
bindkey -M vicmd 'cc' vi-change-whole-line
|
||||||
|
bindkey -M vicmd 'dd' kill-whole-line
|
||||||
|
|
||||||
|
delete-in() {
|
||||||
|
local char lchar rchar lsearch rsearch count
|
||||||
|
read -k char
|
||||||
|
if [[ "$char" == 'w' ]];then
|
||||||
|
zle vi-backward-word
|
||||||
|
lsearch="$CURSOR"
|
||||||
|
zle vi-forward-word
|
||||||
|
rsearch="$CURSOR"
|
||||||
|
RBUFFER="$BUFFER[$rsearch+1,${#BUFFER}]"
|
||||||
|
LBUFFER="$LBUFFER[1,$lsearch]"
|
||||||
|
return
|
||||||
|
elif [[ "$char" == '(' || "$char" == ')' ]];then
|
||||||
|
lchar='('
|
||||||
|
rchar=')'
|
||||||
|
elif [[ "$char" == '[' || "$char" == ']' ]];then
|
||||||
|
lchar='['
|
||||||
|
rchar=']'
|
||||||
|
elif [[ "$char" == '{' || "$char" == '}' ]];then
|
||||||
|
lchar='{'
|
||||||
|
rchar='}'
|
||||||
|
else
|
||||||
|
lsearch="${#LBUFFER}"
|
||||||
|
while (( lsearch > 0 )) && [[ "$LBUFFER[$lsearch]" != "$char" ]]; do
|
||||||
|
(( lsearch-- ))
|
||||||
|
done
|
||||||
|
rsearch=0
|
||||||
|
while [[ $rsearch -lt (( ${#RBUFFER} + 1 )) ]] && [[ "$RBUFFER[$rsearch]" != "$char" ]]; do
|
||||||
|
(( rsearch++ ))
|
||||||
|
done
|
||||||
|
RBUFFER="$RBUFFER[$rsearch,${#RBUFFER}]"
|
||||||
|
LBUFFER="$LBUFFER[1,$lsearch]"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
count=1
|
||||||
|
lsearch="${#LBUFFER}"
|
||||||
|
while (( lsearch > 0 )) && (( count > 0 )); do
|
||||||
|
(( lsearch-- ))
|
||||||
|
if [[ "$LBUFFER[$lsearch]" == "$rchar" ]];then
|
||||||
|
(( count++ ))
|
||||||
|
fi
|
||||||
|
if [[ "$LBUFFER[$lsearch]" == "$lchar" ]];then
|
||||||
|
(( count-- ))
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
count=1
|
||||||
|
rsearch=0
|
||||||
|
while (( "$rsearch" < ${#RBUFFER} + 1 )) && [[ "$count" > 0 ]]; do
|
||||||
|
(( rsearch++ ))
|
||||||
|
if [[ $RBUFFER[$rsearch] == "$lchar" ]];then
|
||||||
|
(( count++ ))
|
||||||
|
fi
|
||||||
|
if [[ $RBUFFER[$rsearch] == "$rchar" ]];then
|
||||||
|
(( count-- ))
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
RBUFFER="$RBUFFER[$rsearch,${#RBUFFER}]"
|
||||||
|
LBUFFER="$LBUFFER[1,$lsearch]"
|
||||||
|
}
|
||||||
|
zle -N delete-in
|
||||||
|
bindkey -M vicmd 'di' delete-in
|
||||||
|
|
||||||
|
delete-around() {
|
||||||
|
zle delete-in
|
||||||
|
zle vi-backward-char
|
||||||
|
zle vi-delete-char
|
||||||
|
zle vi-delete-char
|
||||||
|
}
|
||||||
|
zle -N delete-around
|
||||||
|
bindkey -M vicmd 'da' delete-around
|
||||||
|
|
||||||
|
change-in() {
|
||||||
|
zle delete-in
|
||||||
|
zle vi-insert
|
||||||
|
}
|
||||||
|
zle -N change-in
|
||||||
|
bindkey -M vicmd 'ci' change-in
|
||||||
|
|
||||||
|
change-around() {
|
||||||
|
zle delete-in
|
||||||
|
zle vi-backward-char
|
||||||
|
zle vi-delete-char
|
||||||
|
zle vi-delete-char
|
||||||
|
zle vi-insert
|
||||||
|
}
|
||||||
|
zle -N change-around
|
||||||
|
bindkey -M vicmd 'ca' change-around
|
||||||
|
|
||||||
# if mode indicator wasn't setup by theme, define default
|
# if mode indicator wasn't setup by theme, define default
|
||||||
if [[ "$MODE_INDICATOR" == "" ]]; then
|
if [[ "$MODE_INDICATOR" == "" ]]; then
|
||||||
MODE_INDICATOR="%{$fg_bold[red]%}<%{$fg[red]%}<<%{$reset_color%}"
|
MODE_INDICATOR="%{$fg_bold[red]%}<%{$fg[red]%}<<%{$reset_color%}"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue