Eliminazione dell'input all'ultima barra


16

Molto spesso svolgerò tra diversi file su un server. Eseguirò i seguenti comandi di esempio in sequenza:

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

Per passare da un nanocomando all'altro premo attualmente Upe Backspaceper sostituire l'ultimo segmento del percorso. Il problema è che sono davvero molto pigro.

Esiste una scorciatoia da tastiera (o Bashism) che può:

  • Fatti sostituire dall'ultimo percorso utilizzato (con un bit in più alla fine)
  • Elimina nella riga corrente (ad es. Dopo aver premuto Up) torna all'ultimo/

1
Non sono sicuro esattamente cosa intendi, ma penso che per la prima parte puoi usare alt+ .?
Sparhawk,

@Sparhawk Alt + .è usato per qualcos'altro .
Radu Rădeanu,

@ RaduRădeanu Sì, forse ho frainteso la domanda. Ho pensato "Fatti sostituire dall'ultimo percorso utilizzato (con un bit in più alla fine)" significava cosa fa alt+ ..
Sparhawk,

@Sparhawk Ancora una volta, una di quelle scorciatoie è davvero utile circa una volta al mese e non riesco proprio a impegnarmi nella memoria. In combinazione con alt-backspace, è abbastanza utile per eseguire file simili tramite comandi diversi.
Oli

@Oli tendo a usarlo un po ', ma dimentico sempre come muovermi dall'altra parte !
Sparhawk,

Risposte:


21

Penso che tu stia cercando il collegamento Alt+ Backspace.

Dopo aver premuto Upquesto dovrebbe tornare al carattere precedente /o precedente space.


7
ORA SONO INSTOPPABILE! (Modifica: giuro che imparo e ho dimenticato questa scorciatoia almeno dieci volte l'anno)
Oli

3
Cosa dovrebbe fare questo? Sul mio terminale non sembra fare nulla di diverso dal semplice backspace.
Bakuriu,

1
@Bakuriu Questo collegamento dovrebbe essere quello predefinito. Se vuoi scoprire a cosa è mappato sul tuo sistema in esecuzionebind -P | grep '^backward-kill-word'
Sylvain Pineau,

1
@Bakuriu Lo stesso qui, sono su Mac.
laike9m,

9

Per rilevare l'associazione readline che uccide una parola all'indietro come desideri, puoi usare il seguente comando nel tuo terminale:

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

In un'installazione predefinita di Ubuntu, l'output potrebbe essere:

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

La seconda riga sembra senza importanza a questo punto, quindi proviamo a vedere cosa significa prima riga. Da quello che ho capito, la backward-kill-wordfunzione di readline che di fatto elimina tutti i caratteri fino a quando il carattere speciale precedente ( /, ;, ,ecc) è legata alla \e\C-hsequenza di tasti. Ora, in questa sequenza \e rappresenta la Escchiave, \C- la Ctrlchiave, e \C-hsta per Ctrl+ hche è equivalente in questo caso con Backspacechiave.

Quindi, stai cercando Esc+ Ctrl+h scorciatoia da tastiera che è equivalente a Esc+Backspace e che, a causa del comportamento di xterm che rende la Altchiave per agire come meta carattere e meta caratteri vengono convertiti in una sequenza di due caratteri con il carattere stesso preceduto da Esc(vedi man xterm) , è equivalente a Alt+Backspace .

Ora, se non ti piace e continui a dimenticarlo, puoi usare il comando seguente per creare un nuovo collegamento, diciamo Esc+ w, per il tuo scopo:

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

Per rendere persistente questo nuovo collegamento per tutti i comandi che utilizzano readline, aggiungere la seguente riga al ~/.inputrcfile:

"\ew": backward-kill-word

Vedi help -m bind | sensible-pagerper maggiori informazioni.


2
Buona risposta. Più comunemente racchiudi l'intera impostazione tra virgolette singole con il comando bind; bind '"\ew": backward-kill-word', ma questo è pignolo. E può essere interessante notare che è anche possibile mettere "\ew": backward-kill-wordin ~/.inputrc, nel qual caso altri comandi che uso readline avrà anche tale consolidamento, ad esempio se si attiva readline nella shell interattiva pitone, tale consolidamento si applicherà anche lì.
geirha,

@geirha Sì, sono consapevole di ciò che hai detto, ma ho pensato che l'OP sapesse come gestirlo. Comunque, ora mi rendo conto che la mia risposta non è così utile per l'OP (voleva solo ricordare il collegamento), ma spero di essere utile per gli altri utenti di questo sito e per questo ho modificato la mia risposta aggiungendo la tua osservazione. Grazie.
Radu Rădeanu,

0

Un'altra combinazione chiave è:

Alt+ Bquindi Ctrl+K

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

Alt+ Bquindi Alt+D

Ciò rimuove l'ultima parola senza eliminare caratteri speciali tra le parole.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.