Como removo a parte restante de uma palavra no shell?

5

Gostaria de saber se existe uma ligação de chave para remover a parte restante de uma palavra no shell.

Aqui, quero dizer "restante" como o que fica no lado direito do cursor de linha.

Exemplo ( _|_ é o cursor):

> mv _|_john.csv ~/.hidden
... CTRL-something ...
> mv ~/.hidden

Uma espécie de versão "light" para Ctrl + K (que elimina toda a nova linha de caracteres à direita).

    
por Campa 10.10.2016 / 16:43

3 respostas

7

bash usa readline(3) para edição de linha que define apenas alfanuméricos como caracteres constituintes de palavras.

Agora, a chave de ligação para matar a próxima palavra é M-d se você é do mundo emacs , ou seja, use Esc + d ou < kbd> Alt + d .

Agora, como john.csv é composto de duas palavras por definição, você precisa pressionar as teclas duas vezes.

    
por heemayl 10.10.2016 / 16:54
8

Alt + d removerá a parte restante de uma palavra. Mas como . termina a palavra, você precisará pressioná-la duas vezes para remover john.csv .

    
por Florian Diesch 10.10.2016 / 16:49
1

Se você tiver definido seu modo de edição como vi (com set -o vi ), você pode usar o comando elete d . Primeiro, digite Esc para entrar no modo de comando. Então dw irá deletar uma palavra curta - uma sequência de caracteres alfanuméricos consecutivos, ou uma sequência de caracteres consecutivos não alfanuméricos (não em branco), o que ocorrer primeiro. No seu exemplo, se você digitar dw , ele excluirá john e deixará você com mv _|_.csv ~/.hidden . Um segundo dw excluirá o . , e um terceiro excluirá csv   (ou seja, csv e o espaço após ele).

Se a "palavra" (nome do arquivo) a ser excluída for curta o suficiente que você pode facilmente contar as palavras curtas que ele compreende, você pode simplificar isso digitando 3dw . Mas provavelmente a melhor solução é digitar dW (com um maiúscula "W") para apagar uma palavra longa - uma sequência de caracteres consecutivos não brancos (sem considerar se são alfanuméricos) e a seguinte sequência de espaços em branco consecutivos.

    
por G-Man 12.10.2016 / 21:51