Vinculação Fn-Delete no zsh no Mac OS X

22

No zsh, sempre que eu pressiono Fn + Delete (que é a exclusão direta), um til (~) é inserido. Isso indica que o zsh não tem a chave vinculada.

Como faço para vinculá-lo e fazê-lo se comportar normalmente (excluir na frente do cursor)?

Thomas R
fonte

Respostas:

20

Primeiro, descubra qual sequência ele gera.

echo "CtrlVFnDelete" | od -c

Em seguida, vincule essa sequência usando o mecanismo de ligação zsh normal.

Ignacio Vazquez-Abrams
fonte
1
~> eco "~" | od -c 0000000 ~ \ n 0000002 ~> O que faço agora com essas informações?
Thomas R
10
@ixth: Na verdade, não está produzindo apenas um til. Você não pode usar echo "~", você precisa seguir as instruções que Ignacio lhe deu. No meu sistema, é ^[[3~(ou como odsaídas:) 033 [ 3 ~. Portanto, o comando seria o bindkey "^[[3~" delete-charque entraria no seu ~/.zshrc.
Pausado até novo aviso.
2
Para esclarecer o exposto acima, ctrl-vhá uma sequência de escape especial que significa "insira o próximo caractere pressionado como um caractere literal sem escape, em vez de fazer o que costuma fazer". Isso significa que ele não é convertido para ~, mas permanece como a sequência de escape.
NHDaly 23/05
Eu não entendo como usar a saída do acima para derivar o bindkey. Minha saída é 0000000 C t r l V F n D e l e t e \n 0000016.
Oliver Joseph Ash
4

Para mim, o procedimento acima não funcionou, então adicionei a seguinte ligação de chave ao meu ~/.zshrc:

bindkey "\e[3~" delete-char

FYI: Estou no Mac (High Sierra).

LordTribual
fonte
E como saber o código para qualquer outra chave que eu queira vincular, por exemplo, Fn + F1? para que eu possa definir os códigos correspondentes no meu ~/.zshrc.
28418 alexventuraio
1
Você pode digitar cate digitar as chaves. Fn+F1me dá, ^[OPpor exemplo.
precisa
1

bindkey 'CtrlvFnDelete' delete-char

Isso ligará Fn+ Deletepara excluir um único caractere para frente. Se o exposto acima não estiver claro, digite Ctrl+ v, Fn+ Deleteentre a digitação das aspas. Ctrl+ vpermite digitar a seqüência de escape de escape literal de qualquer tecla que vem depois dela.

Você pode colocar esta linha no seu ~/.zshrcarquivo.

anishpatel
fonte