Wiązanie Fn-Delete w zsh na Mac OS X

22

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)?

Thomas R.
źródło

Odpowiedzi:

20

Najpierw dowiedz się, jaką sekwencję generuje.

echo "CtrlVFnDelete" | od -c

Następnie powiąż tę sekwencję za pomocą normalnego mechanizmu wiązania zsh.

Ignacio Vazquez-Abrams
źródło
1
~> echo "~" | od -c 0000000 ~ \ n 0000002 ~> Co mam teraz zrobić z tymi informacjami?
Thomas R
10
@rixth: W rzeczywistości nie generuje tylko tyldy. Nie możesz użyć echo "~", musisz postępować zgodnie ze wskazówkami, które dał ci Ignacio . W moim systemie jest ^[[3~(lub jako dane odwyjściowe:) 033 [ 3 ~. Tak więc polecenie będzie takie, bindkey "^[[3~" delete-charktóre będzie w twoim ~/.zshrc.
Wstrzymano do odwołania.
2
Aby wyjaśnić powyższe, ctrl-vjest 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.
NHDaly
Nie rozumiem, jak użyć wyniku powyższego, aby uzyskać klucz powiązania. Mój wynik to 0000000 C t r l V F n D e l e t e \n 0000016.
Oliver Joseph Ash
4

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).

LordTribual
źródło
A jak poznać kod każdego innego klucza, który chcę powiązać, np. Fn + F1? dzięki czemu mogę ustawić odpowiednie kody w moim ~/.zshrc.
alexventuraio
1
Możesz wpisać, cata następnie wpisać klucze. Fn+F1daje mi ^[OPna przykład.
LordTribual,
1

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 ~/.zshrcpliku.

anishpatel
źródło