W Zsh, za każdym razem, gdy naciskam Fn + Delete (który jest usuwanie do przodu) wstawia tyldę (~). Oznacza to, że zsh nie ma przypisanego klucza.
Jak go powiązać i sprawić, by zachowywał się normalnie (usuń przed kursorem)?
Najpierw dowiedz się, jaką sekwencję generuje.
echo "
CtrlVFnDelete" | od -c
Następnie powiąż tę sekwencję za pomocą normalnego mechanizmu wiązania zsh.
echo "~"
, musisz postępować zgodnie ze wskazówkami, które dał ci Ignacio . W moim systemie jest^[[3~
(lub jako daneod
wyjściowe:)033 [ 3 ~
. Tak więc polecenie będzie takie,bindkey "^[[3~" delete-char
które będzie w twoim~/.zshrc
.ctrl-v
jest to specjalna sekwencja ucieczki, która oznacza „wstaw następny znak, który naciskam jako dosłowny, nieskalowany znak, zamiast robić to, co zwykle”. Oznacza to, że nie jest konwertowany~
, ale pozostaje sekwencją ucieczki.0000000 C t r l V F n D e l e t e \n 0000016
.Dla mnie powyższe nie pomogło, więc dodałem do mojego klucza powiązanie
~/.zshrc
:bindkey "\e[3~" delete-char
FYI: Jestem na komputerze Mac (High Sierra).
źródło
~/.zshrc
.cat
a następnie wpisać klucze.Fn+F1
daje mi^[OP
na przykład.bindkey '
CtrlvFnDelete' delete-char
Spowoduje to powiązanie Fn+, Deleteaby usunąć pojedynczy znak. Jeśli powyższe nie jest jasne, musisz wpisać Ctrl+ v, Fn+ Deletemiędzy wpisywaniem cudzysłowów. Ctrl+ vpozwala wpisać dosłowną sekwencję ucieczki dowolnego klawisza po nim.
Możesz umieścić tę linię w swoim
~/.zshrc
pliku.źródło