Qual è la scorciatoia per eliminare una parola "forward" in un terminale unix?


14

Faccio Ctrl+Wnel terminale mac per eliminare una parola (elimina da dove si trova il cursore all'inizio della parola)

Come faccio il contrario: elimina da dove si trova il cursore alla fine della parola?

Risposte:


14

Ciò dipende dalla shell e dalla modalità di modifica della riga di comando attiva.

Per una shell con la modalità di modifica della riga di comando di Emacs ( set -o emacsin alcune shell), usa Alt+D(questo non funziona su macOS per qualsiasi motivo, ma stampa il carattere , usa Escdinvece).

Per un guscio con modalità Vi riga di comando di modifica ( set -o viin alcune shell), uso Escdw(questo fa lavoro su MacOS pure).


Solo in zsh, però, Meta-D elimina lo stesso tipo di parola che fa Ctrl-W (delimitati da spazi vuoti). In bashin vimodalità, è possibile utilizzare dWper eliminare coloro
Stéphane Chazelas

1
@ StéphaneChazelas Sì, loro (i due keycombo) hanno una visione diversa di ciò che costituisce una "parola".
Kusalananda

È possibile selezionare l'opzione "usa opzione come meta" nelle preferenze della tastiera del terminale per farlo funzionare.
Jozef Legény,

Sia Esc + D che Alt + D funzionano nel terminale xfce4 0.6.3 .
neverMind9

1

Per la disciplina tty line, ^Welimina la parola delimitata da spazi bianchi precedente .

Nell'editor viin modalità inserimento, ^Welimina all'indietro all'inizio della prima sequenza di alnum o non-alnum (on foo-+-bar.. baz, prima elimina baz, quindi .., quindi bar, quindi -+-, quindi foo).

Nell'editor emacs, ^Welimina dalla posizione del cursore al segno (quello impostato con Ctrl+Space).

Alcuni editor di linee come readline(usato da bash, gdb...), zle(usato da zsh), pdkshquando sono in vimodalità, si comportano come vial riguardo e quando in emacsmodalità si comportano come la disciplina delle tty line (non emacs).

libedit(utilizzato dalle shell BSD o (facoltativamente) dash) tcsh,, AT&T ksh, in emacsmodalità, si comportano come emacsdove vengono ^Weliminati dal segno (inizialmente all'inizio del buffer).

Per eliminare una parola in avanti, vinell'editor, lo faresti in modalità di comando ( normale ) con dwper eliminare all'inizio della sequenza successiva di alnum o non-alnum (o la fine della riga) e dWper eliminare il prossima sequenza di non-spazi (il pendente della ^Wdisciplina della linea tty).

Nell'editor di emacsriga, Meta-Deliminerebbe fino alla fine della sequenza successiva di caratteri alnum. Le parole operatori di movimento ( Meta-B, Meta-F) si comportano in modo simile.

gli editor da riga di comando, quando in vimodalità, si comportano come vi, ma in emacsmodalità, hai due scuole principali: la tcshscuola e la kshscuola.

La kshscuola ( readline, ksh, yash) si comporta in gran parte come emacs( fish's comportamento è leggermente diverso nel modo in cui tratta non alnum, caratteri non spazi bianchi in entrambi emacse vimodalità).

Nella tcshscuola di ( tcsh, libedit, zsh), i movimenti di parole si basano su parole da spazi delimitati in modo sono coerenti con la linea di tty disciplina di ^Wal riguardo.

In zsh, il comportamento è personalizzabile con diversi stili di parole per tutti i widget di movimento delle parole.

Per readline, puoi ottenere la tcshscuola (e Meta-Dcancellare lo stesso tipo di parola Ctrl-W) aggiungendo al tuo ~/.inputrc:

set keymap vi-move
"\e[EMACS~": emacs-editing-mode
set keymap emacs
"\e[VI~": vi-movement-mode
"\ed": "\e[VI~dW\e[EMACS~"
"\ef": vi-fWord
"\eb": vi-bWord

O d'altra parte, allineati ^Wai widget di movimento dell'altra parola (comportati come Meta-Backscape) con:

set keymap emacs
"\C-W": backward-kill-word

Per quanto riguarda la Metachiave, vedere qui .


-1

In Linux prova Ctrl+ka cancellare da dove si trova il cursore alla fine della parola.

Ci sono alcune altre scorciatoie elencate di seguito (che funzionano in Linux):

  1. Ctrl+e -> Prende il cursore alla fine della parola.
  2. Ctrl+t -> Cambia la posizione degli alfabeti.
  3. Ctrl+y -> aggiunge il postfisso "hh" alla parola corrente.
  4. Ctrl+u -> Elimina l'intera riga.
  5. Ctrl+o -> Funziona come il tasto Invio.
  6. Ctrl+p -> Funziona come il pulsante freccia su.
  7. Ctrl+a -> Porta il cursore nella posizione iniziale del comando.
  8. Ctrl+d -> Chiude il terminale.
  9. Ctrl+f -> Sposta il cursore in avanti di un carattere.
  10. Ctrl+h -> Funziona come il tasto Backspace.
  11. Ctrl+j -> Funziona come il tasto Invio.
  12. Ctrl+m -> Funziona come il tasto Invio.
  13. Ctrl+b-> Funziona come il tasto freccia destra. 14 Ctrl+4 -> Elimina la parola

3
Ctrl+kcancella fino alla fine della riga . Ctrl+uelimina l'intera riga (se il cursore si trova alla fine). Ctrl+dinvia EOF. Ctrl+eva alla fine della linea , ecc.
Kusalananda

Ctrl + y è usato per incollare, o yank, l'ultima cosa che hai salvato negli appunti, nel tuo caso probabilmente è stato "hh". Perché nel mondo pensi che ci sarebbe una scorciatoia da tastiera per post-correggere una determinata parola con le lettere "hh"? Come sarebbe utile?
bmcentee148
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.