Excluindo a entrada de volta para a última barra

16

Frequentemente, alterno entre vários arquivos em um servidor. Vou executar os seguintes comandos de exemplo em sequência:

nano /web/site/path/to/file
/web/site/script.py
nano /web/site/path/to/anotherFile
nano /web/site/path/to/yetAnotherFile
/web/site/script.py
nano /web/site/path/to/etc

Para passar de um nanocomando para o outro, atualmente pressione Upe Backspacesubstitua o último segmento do caminho. O problema é que eu sou realmente muito preguiçoso.

Existe um atalho de teclado (ou Bashism) que pode:

  • Seja substituído pelo último caminho usado (com um bit extra no final)
  • Excluir na linha atual (por exemplo, depois de pressionar Up) de volta ao último/
Oli
fonte
11
Não sei exatamente o que você quer dizer, mas acho que na primeira parte você pode usar alt+ .?
Sparhawk
@ Sparhawk Alt + .é usado para outra coisa .
Radu Rădeanu 21/10
@ RaduRădeanu Sim, talvez eu entenda mal a pergunta. Eu pensei "Substituído pelo último caminho usado (com um bit extra no final)" significava o que alt+ .faz.
Sparhawk
@ Sparhawk Novamente, um desses atalhos que é realmente útil cerca de uma vez por mês que eu simplesmente não consigo comprometer na memória. Em combinação com o alt-backspace, é bastante útil para executar arquivos semelhantes por meio de diferentes comandos.
Oli
@ Oli eu costumo usá-lo um pouco, mas sempre esqueço como me mover para o outro lado !
Sparhawk

Respostas:

21

Acho que você está procurando o atalho Alt+ Backspace.

Depois de pressionar, Upisso deve excluir novamente o caractere /ou o anterior space.

Sylvain Pineau
fonte
7
Agora eu sou imparável! (Edit: Eu juro que eu aprender e esqueceu este atalho às vezes menos dez por ano)
Oli
3
O que isso deve fazer? No meu terminal, parece não fazer nada diferente de simples backspace.
21414 Bakuriu
11
@Bakuriu Este atalho deve ser o padrão. Se você quiser saber o que está mapeado para em seu sistema funcionarbind -P | grep '^backward-kill-word'
Sylvain Pineau
11
@Bakuriu Mesmo aqui, estou no Mac.
laike9m
9

Para detectar a ligação da linha de leitura que mata uma palavra para trás, como você deseja, você pode usar o seguinte comando no seu terminal:

bind -p | awk '/kill/ && /word/ && /backward/'

Em uma instalação padrão do Ubuntu, a saída pode ser:

"\e\C-h": backward-kill-word
# shell-backward-kill-word (not bound)

A segunda linha parece sem importância neste momento, então vamos tentar ver o que significa primeira linha. Pelo que eu entendo, a backward-kill-wordfunção readline que de fato apagar todos os caracteres até que o caractere especial anterior ( /, ;, ,etc.) está ligada à \e\C-hsequência de teclas. Agora, nesta sequência, \e representa a Escchave \C- a Ctrlchave e \C-hrepresenta Ctrl+, hque neste caso é equivalente à Backspacechave.

Portanto, você está procurando pelo atalho de teclado Esc+ Ctrl+h que é equivalente a Esc+Backspace e que, devido ao comportamento do xterm que faz com que a Alttecla atue como um caractere meta e os meta caracteres são convertidos em uma sequência de dois caracteres com o próprio caractere precedido por Esc(consulte man xterm) , é equivalente a Alt+Backspace .

Agora, se você não gostar e continuar esquecendo, poderá usar o seguinte comando para criar um novo atalho, digamos Esc+ w, para sua finalidade:

bind '"\ew": backward-kill-word'

Para tornar esse novo atalho persistente o tempo todo para todos os comandos que usam readline, adicione a seguinte linha ao seu ~/.inputrcarquivo:

"\ew": backward-kill-word

Veja help -m bind | sensible-pagerpara mais informações.

Radu Rădeanu
fonte
2
Boa resposta. Mais comumente, você colocaria a configuração inteira entre aspas simples com o comando bind; bind '"\ew": backward-kill-word', mas isso é nitpicking. E pode valer a pena mencionar que você também pode colocar "\ew": backward-kill-wordem ~/.inputrc, caso outros comandos que que o uso readline também terá que a ligação, por exemplo, se você ativar readline no python shell interativo, que a ligação também se aplica lá.
Geirha # 21/14
@geirha Sim, eu sei o que você disse, mas achei que o OP sabe como gerenciar isso. Enfim, agora percebo que minha resposta não é tão útil para o OP (ele só queria se lembrar do atalho), mas espero que seja útil para outros usuários deste site e para isso editei minha resposta adicionando sua observação. Obrigado.
Radu Rădeanu 21/10
0

Outra combinação de teclas é:

Alt+ Bentão Ctrl+K

Alt + B     Move cursor backward one word on the current line    
Ctrl + K    Clear the line after the cursor

Alt+ Bentão Alt+D

Isso remove a última palavra sem excluir caracteres especiais entre as palavras.

αғsнιη
fonte