Fiz uma incursão rápida no /usr/src/bin/ksh
no meu sistema OpenBSD, vendo como eu tinha as fontes reais verificadas de qualquer maneira. Eu tive uma rápida olhada em c_ksh.c
, emacs.c
e vi.c
e parece que o modo Vi foi reequipado em pdksh
de nsh
em algum ponto (por volta de 1989/1990). As palavras exatas usadas são
/* $OpenBSD: vi.c,v 1.55 2018/01/16 22:52:32 jca Exp $ */
/*
* vi command editing
* written by John Rochester (initially for nsh)
* bludgeoned to fit pdksh by Larry Bouzane, Jeff Sparkes & Eric Gisin
*
*/
As funções bind
-able estão todas em emacs.c
, assim como a função x_bind()
que é chamada pelo bind
construído, enquanto vi.c
parece ter sua própria implementação de algumas delas em diferentes nomes que não são chamados de x_bind()
.
Portanto, acho que posso concluir que o bind
builtin é um no-op no modo Vi neste shell específico.
ATUALIZAÇÃO (2018-02-04): Depois de relatar isso para a lista openbsd-misc
, foi confirmado que bind
de fato não faz nada no modo de edição de linha de comando do Vi. Um patch irá modificar o manual ksh
no OpenBSD para que isso seja mencionado:
bind string=[editing-command] ...
In Emacs editing mode, the specified editing command is bound to the given
string
. Future input of thestring
will cause the editing command to be immediately invoked. Bindings have no effect in Vi editing mode.