Como excluir parte de um caminho em um shell interativo?

18

Existe um atalho no bash e zsh para excluir um componente de um caminho? Por exemplo, se eu digitar ls ~/local/color/ e o cursor estiver no final da linha, existe um atalho para excluir color/ no final? O ideal é que eu queira soluções tanto no modo vi quanto no modo emacs

    
por Vayn 30.09.2011 / 18:25

3 respostas

26

Os comandos mais usados no bash default modo emacs , para os teclados mais usados:

Movimento

  • Ctrl - p , ou Acima : comando anterior
  • Ctrl - n , ou Abaixo : próximo comando
  • Ctrl - b ou Esquerda : caractere anterior
  • Ctrl - f , ou Direita : próximo caractere
  • Alt - b : palavra anterior
  • Alt - f : próxima palavra
  • Ctrl - a , ou Início : início do comando
  • Ctrl - e , ou Fim : fim do comando

Edição

  • BkSpc : apaga o caracter anterior
  • Ctrl - d , ou Del : apaga o caracter atual
  • Alt - BkSpc : apaga a palavra para a esquerda
  • Alt - d : apaga a palavra para a direita
  • Ctrl - u : apaga para o início do comando
  • Ctrl - k : apaga para o final do comando
  • Ctrl - y : colar o último corte

Miscelânea

  • Cltr - / : desfazer
  • Cltr - r : pesquisa de histórico retroativo incremental
por 30.09.2011 / 18:47
10

Há também unix-filename-rubout para Readline !

# in ~/.inputrc
# press ctrl-b to delete unix filename parts
# see: man bash | less -p 'unix-filename-rubout' and
#      http://www.calmar.ws/vim/vi-bash.html
set editing-mode vi
set keymap vi
"\C-b": unix-filename-rubout
    
por 31.01.2012 / 15:22
6

Por padrão o bash (e eu estou supondo zsh) estará no modo emacs. Você poderia tentar algo assim:

Esc + b colocará o cursor de volta uma palavra. Ctrl + k será deletado até o final da linha.

A maioria dos shells modernos (como o bash) implementarão recursos avançados de edição de linha de comando. Esses comandos estão próximos da edição do emacs (Ctrl + A para o início da linha, Ctrl + E para o final da linha, ...).

Se você é familiar com editores do tipo vi, pode tentar permitir o modo vi.

set -o vi

Ele fornece os modos do tipo shell vi (modo de comando / modo de inserção), e você obtém acesso aos comandos padrão (d para delete, r para replace, ...)

No Modo Vi, veja como você faria o que descreveu:

Esc (command mode); d; b.
    
por 30.09.2011 / 18:32

Tags