Como posso limpar parte do que é digitado no prompt enquanto trabalho no Linux e usando o C-shell?

3

Estou trabalhando no Linux e no C-shell. Muitas vezes eu precisaria alterar alguma parte do que já existe no prompt que obtenho de pesquisa reversa através do comando history usando CTRL + R . Eu não quero usar o Backspace para fazer isso. Eu olhei para esta pergunta no superuser.com que foi especificamente para bash. Essa resposta diz para usar CTRL + U que limparia tudo antes da posição atual do cursor. Mas isso está limpando tudo para mim, embora eu tenha atingido alguns backspaces e agora estou no meio do texto no prompt. Existe uma maneira específica do C-shell de conseguir o mesmo no Linux?

    
por Geek 31.07.2013 / 20:56

1 resposta

6

Em tcsh (que eu suponho que seja o que você está chamando de "C-Shell" se você não é totalmente masoquista) no modo emacs (normalmente o padrão), você pode usar Ctrl-W . Esse é o widget kill-region que é apagado entre a marca (definido com Ctrl-Espaço , mas o padrão é o início da linha) e o cursor.

A esse respeito, seu comportamento está mais próximo do emacs do que com o modo bash (readline) / ksh / zsh emacs, mas se afasta do editor de linha incorporado do driver de terminal (no modo canônico), onde Ctrl-W apaga a palavra anterior ( werase , também em vi ). Naquela época, ele escolheu emacs sobre o comportamento do terminal usual, mas não no caso de Ctrl-U , onde no emacs é o argumento universal enquanto é o caractere kill -line no terminal.

Se você preferir Ctrl-U excluir no início da linha, você também pode fazer:

bindkey '^U' backward-kill-line

En% modovi, Esc para ir para o modo de comando, e d 0 para apagar no começo da linha (ou c 0 se quiser mudar em vez de apagar isso).

    
por 31.07.2013 / 23:24