Powłoki zazwyczaj nie mają tej funkcji. Gdyby był dostępny, prawdopodobnie byłby zapewniony przez terminal, ale nie znam się na żadnym innym.
Dennis Williamson
2
@Dennis Williamson Zaskakująco mam takie same komentarze na temat SO. To jest po prostu złe. Zsh implementuje zaznaczenie w ZLE (jednak ze znakami). W rzeczywistości edycja linii poleceń nie ma prawie nic wspólnego z terminalem ...
Ugo
Pytałeś o używanie zmiany. Nie pytałeś, jak ogólnie można wybrać tekst.
Dennis Williamson
Odpowiedzi:
4
Jednym ze sposobów na to jest
zdefiniuj nowe widgety, które aktywują znakowanie na przesuniętych klawiszach ruchu,
przedefiniować wszystkie widgety działania, aby działały w regionie (jeśli taki istnieje), oraz
przedefiniować wszystkie domyślne widgety ruchu, aby dezaktywować znakowanie.
Oto dowód koncepcji (dla xterm ), pracować dla:
Shift-Left i Shift-Right: zacznij wybierać odpowiednio lewy / prawy
Left, Right: anuluj wybór i przesuń odpowiednio w lewo / w prawo,
Delete: usuń zaznaczenie, jeśli istnieje, w przeciwnym razie znak pod kursorem.
Obowiązują zwykłe zastrzeżenia (mogą istnieć inne i lepsze sposoby, twój kot może jeść toster itp.).
bindkey -e
function zle-line-init {
marking=0
}
zle -N zle-line-init
function select-char-right {
if (( $marking != 1 ))
then
marking=1
zle set-mark-command
fi
zle .forward-char
}
zle -N select-char-right
function select-char-left {
if (( $marking != 1 ))
then
marking=1
zle set-mark-command
fi
zle .backward-char
}
zle -N select-char-left
function forward-char {
if (( $marking == 1 ))
then
marking=0
NUMERIC=-1 zle set-mark-command
fi
zle .forward-char
}
zle -N forward-char
function backward-char {
if (( $marking == 1 ))
then
marking=0
NUMERIC=-1 zle set-mark-command
fi
zle .backward-char
}
zle -N backward-char
function delete-char {
if (( $marking == 1 ))
then
zle kill-region
marking=0
else
zle .delete-char
fi
}
zle -N delete-char
bindkey '^[[1;2D' select-char-left # assuming xterm
bindkey '^[[1;2C' select-char-right # assuming xterm
Odpowiedzi:
Jednym ze sposobów na to jest
Oto dowód koncepcji (dla
xterm
), pracować dla:Shift-Left
iShift-Right
: zacznij wybierać odpowiednio lewy / prawyLeft
,Right
: anuluj wybór i przesuń odpowiednio w lewo / w prawo,Delete
: usuń zaznaczenie, jeśli istnieje, w przeciwnym razie znak pod kursorem.Obowiązują zwykłe zastrzeżenia (mogą istnieć inne i lepsze sposoby, twój kot może jeść toster itp.).
źródło