Não é possível ligar Ctrl-o no Bash dentro do iTerm2 no macOS Sierra

0

Eu não sou capaz de reviver o Ctrl-o no iTerm2 / Bash.

Aqui está o meu stty -a flags para cchars:

cchars: discard = ^O; dsusp = ^Y; eof = ^D; eol = <undef>;
eol2 = <undef>; erase = ^?; intr = ^C; kill = ^U; lnext = ^V;
min = 1; quit = ^\; reprint = ^R; start = ^Q; status = ^T;
stop = ^S; susp = ^Z; time = 0; werase = ^W;

Aqui está o meu .inputrc:

set bind-tty-special-chars off
Control-o: "> output"

Rebindir o C-u funciona, então a inconsistência está me enlouquecendo. Gostaria que alguém explicasse o porquê para mim.

    
por Thanh DK 09.06.2017 / 17:22

1 resposta

0

curto: o recurso se aplica somente a edição caracteres; discard não é um caractere de edição.

por mais tempo: use a fonte. Há uma tabela em lib/readline/bind.c que tem esta entrada:

  { "bind-tty-special-chars",   &_rl_bind_stty_chars,           0 },

que atribui o nome da opção ao endereço de uma variável. A variável é testada em alguns lugares da libreadline, indo em última instância para essa função:

    /* Rebind all of the tty special chars that readline worries about back 
       to self-insert.  Call this before saving the current terminal special 
       chars with save_tty_chars().  This only works on POSIX termios or termio 
       systems. */
    void
    rl_tty_unset_default_bindings (kmap)
         Keymap kmap;
    {
      /* Don't bother before we've saved the tty special chars at least once. */
      if (RL_ISSTATE(RL_STATE_TTYCSAVED) == 0)
        return;

      RESET_SPECIAL (_rl_tty_chars.t_erase);
      RESET_SPECIAL (_rl_tty_chars.t_kill);

    #  if defined (VLNEXT) && defined (TERMIOS_TTY_DRIVER)
      RESET_SPECIAL (_rl_tty_chars.t_lnext);
    #  endif /* VLNEXT && TERMIOS_TTY_DRIVER */

    #  if defined (VWERASE) && defined (TERMIOS_TTY_DRIVER)
      RESET_SPECIAL (_rl_tty_chars.t_werase);
    #  endif /* VWERASE && TERMIOS_TTY_DRIVER */
    }

Você pode ver os nomes stty usados nas estruturas: erase , kill e lnext . Não há discard . bash não define (ou redefine).

    
por 23.11.2017 / 01:59