tcsh: falha no caractere i-search-back

2

Como visto em algumas outras respostas, adicionei isso ao meu .cshrc para fazer o CTRL-R se comportar de maneira semelhante ao bash:

bindkey "^r" i-search-back

Funciona bem em geral. Meu problema é que ao fazer CTRL-R seguido por uma seta para a esquerda ou para a direita (para editar a linha), ele adicionará um "[C" ou "[D" na posição do cursor, que eu preciso excluir manualmente . Alguma ideia do porquê e como posso evitá-lo?

    
por simark 02.10.2014 / 20:08

2 respostas

1

Use a tecla Esc primeiro para sair da pesquisa use as teclas direita ou esquerda para edição.

    
por 06.11.2017 / 16:04
1

Lendo a página de manual, isso não funcionará:

   i-search-back (not bound)
           Searches  backward  like  history-search-backward,  copies  the
           first match into the input buffer with the cursor positioned at
           the end of the pattern, and prompts with 'bck: ' and the  first
           match.   Additional  characters  may  be  typed  to  extend the
           search, i-search-back may be typed to continue  searching  with
           the  same  pattern,  wrapping around the history list if neces‐
           sary, (i-search-back must be bound to a  single  character  for
           this to work) or one of the following special characters may be
           typed:

               ^W      Appends the rest of the word under  the  cursor  to
                       the search pattern.
               delete (or any character bound to backward-delete-char)
                       Undoes  the  effect of the last character typed and
                       deletes a character  from  the  search  pattern  if
                       appropriate.
               ^G      If  the  previous search was successful, aborts the
                       entire search.  If not, goes back to the last  suc‐
                       cessful search.
               escape  Ends  the  search,  leaving the current line in the
                       input buffer.

           Any other character not bound to self-insert-command terminates
           the  search,  leaving the current line in the input buffer, and
           is then interpreted as normal input.  In particular, a carriage
           return  causes  the  current  line  to be executed.  Emacs mode
           only.  See also i-search-fwd and history-search-backward.

A página de manual informa que os únicos caracteres especiais que o tcsh está preparado para manipular são os quatro listados e que qualquer outra coisa é interpretada como

  • Caracteres adicionais podem ser digitados para estender a pesquisa, e
  • "Qualquer outro caractere não vinculado ao comando self-insert terminará a pesquisa, deixando a linha atual no buffer de entrada, e é então interpretado como entrada normal.

Como o caractere de escape (que faz parte da seta esquerda / direita) não é imprimível, tcsh descarta isso, deixando os caracteres imprimíveis como parte da "entrada normal".

    
por 25.10.2016 / 11:23

Tags