Keystroke para limpar a linha atual no prompt

1

Como a linha atual pode ser limpa? Eu estou usando o bash.

Eu não gosto de ctrl + c porque deixa uma porcaria impressa na tela.

Se o cursor estiver no final da linha, eu posso usar ctrl + u e ele faz exatamente o que eu quero. Mas se o cursor for mid-line, eu preciso usar uma seqüência como ctrl + e , ctrl + u (ou ctrl + a , ctrl + k ) para obter o comportamento desejado.

Existe um pressionamento de tecla que faz isso, independentemente de onde na linha o cursor está posicionado?

Eu também me pergunto se isso é possível no vim (mesmo comportamento que 0D , mas com um pressionamento de tecla)

    
por wim 09.02.2014 / 15:42

2 respostas

5

Em bash você pode vincular o comando kill-whole-line a CTRL-K

bind '"\C-k": kill-whole-line'

Isso faz exatamente o que você quer (de man bash ):

kill-whole-line Kill all characters on the current line, no matter where point is.

Coloque isso no seu ~/.bashrc se você quiser esse comportamento persistente.

Se você quiser religar CTRL-U , inclua a seguinte linha no seu ~/.inputrc

set bind-tty-special-chars off

veja este relatório de erros .

Em vim você pode definir um atalho para 0D .

map <C-k> 0D
imap <C-k> <ESC>0Di

Você pode testar isso no modo de comando ( : ) ou colocá-lo em ~/.vimrc ou ~/.vim/vimrc para torná-lo permanente. Escolha um atalho sensato para suas necessidades, usei CTRL+K para ser consistente com o exemplo básico. A linha imap é usada no modo de inserção , então você não precisa nem ir para modo de comando para matar a linha atual, isto é, salvar duas outras teclas pressionadas . (Eu não sou vim crack, então pode haver maneiras melhores de conseguir isso, mas parece funcionar ...)

    
por 09.02.2014 / 16:10
2

Eu posso pensar em dois pressionamentos de tecla (dd). Primeiro Defina bash para o modo vi (que permite a edição do comando vi com a linha de comando bash):

set -o vi

Em seguida, exclua o tipo de linha atual dd .

    
por 09.02.2014 / 16:13