Existe um atalho no bash e no 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 o color/
no final? Idealmente, quero soluções nos modos vi e emacs
19
bindkey [key] vi-backward-kill-word
Há também
unix-filename-rubout
paraReadline
!fonte
unix-filename-rubout
é a resposta correta para a pergunta feita, uma vez que exclui a reduzir ou espaços em branco, enquantoAlt-BkSpc
vai parar em personagens como hífen, sublinhado, ponto, etc.Por padrão, o bash (e acho que o zsh) estará no modo emacs. Você pode tentar algo como isto:
Esc + bcolocará o cursor de volta uma palavra. Ctrl + kserá excluído até o final da linha.
A maioria dos shells modernos (como o bash) implementará 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 excluir, r para substituir, ...)
No modo Vi, veja como você faria o que descreveu:
fonte
db
nesse cenário no bash. Eu também encontreivi-backward-kill-word
no zsh o que eu quero, e é mais conveniente do que definir o modo vi no bash. Mas ainda quero encontrar um atalho do modo emacs para esse fim no bash.db
ocorre em alguns casos.