Bash: elimina la parola prima del cursore


76

Considera la seguente riga di comando bash, dove ^ indica la posizione del cursore:

svn commit -m very/long/path/to/some/file "[bug 123456] Fix the pixel issue"
              ^

Vorrei eseguire il commit di un file diverso con lo stesso messaggio. Come posso eliminare la parola corrente, dalla posizione del cursore allo spazio successivo? Esiste anche una scorciatoia per l'eliminazione all'indietro, dal cursore al primo spazio all'indietro?

Aggiornamento: ctrl + wcancella all'indietro, ma quale scorciatoia cancella una parola in avanti?


2
Ctrl uè un'opzione per cancellare dalla posizione del cursore all'inizio ...
folle su natty

23
Prova alt + d, potrebbe essere utile, quando è impostata la modalità di modifica di emacs.

@Mik come si abilita la modalità emacs?
Adam Matan,

@AdamMatan lo set -o emacsabilita, ma di solito è l'impostazione predefinita; in caso contrario, è possibile inserire quella riga in .bashrco .bash_aliases, quindi eseguire il sorgente del file o ricaricare il terminale. Tuttavia, le scorciatoie a cui potresti essere abituato in modalità vi non saranno disponibili, anche se quelle come ctrl + c lo faranno perché non sono scorciatoie Bash.

Risposte:


56

Ho risposto a una domanda simile su unix.stackexchange.com :

Bash ha comandi readline che non sono associati per impostazione predefinita. Puoi trovarli a riferimento: http://www.gnu.org/software/bash/manual/html_node/Bindable-Readline-Commands.html#Bindable-Readline-Commands

Il comando che stai cercando si chiama "shell-backward-kill-word". Devi prima selezionare la scorciatoia. Usiamo Crtl + p, dal momento che è "comando precedente" - lo stesso della freccia su.

bind '"\C-p": shell-backward-kill-word'

L'unica differenza è che devi usare invece il comando "shell-kill-word", poiché desideri eliminare in avanti.

C'è anche un comando "kill-word" con Meta+ dscorciatoia (prova Esc+ dse non hai il tasto Meta). Elimina solo una parte del percorso alla volta.


31
Alt-d lavora per me
ricab il

8
Generalmente, nel mondo delle tastiere in cui Meta non esiste, Alt = Meta.
Nate CK,

Nel mondo in cui hai molte tastiere diverse, un fatto comodo e abbastanza utile è che Esc come prefisso funge anche da Meta.
tripla il

1
In breve, aggiungi ad esempio questo al tuo file $ HOME / .inputrc:, "\ew": shell-kill-word che farà in modo che Alt-w inoltri una parola, proprio come CTRL-w all'indietro cancella una parola (e diversamente da Alt-d che inoltrerà in avanti ma si fermerà ad es. a / o - e altri caratteri)
user964970

7

Testato sia il esc+ de alt/ opt+ dsu OSX Mavericks e sono lì funzionano pure.


12
Option + dmi dà ∂ su OSX
Ivan Balashov il

4
-1 OSX non è Ubuntu. Sentiti libero di aggiungere un commento, ma questa non è una risposta.
wjandrea,

devi prima abilitare la casella di controllo "usa l'opzione come meta chiave" nelle preferenze del terminale (profili -> scheda tastiera -> casella di controllo)
nils petersohn

control + dsu mac Sierra
mfink

2
@IvanBalashov se stai usando iterm imposta il tasto let opt ​​come esc +. In Profili> chiavi
tessie
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.