Perché CTRL-r agisce in modo strano (mostrando solo una parte di un comando) su OS X?


10

Ctrl+ rè un ottimo piccolo strumento per cercare i .bash_historycomandi eseguiti in precedenza.

Tuttavia, quando lo uso nel mio OS X Terminal.app vedo un comportamento strano e mi chiedevo se qualcun altro vede la stessa cosa o sa come risolverlo.

  1. Ctrl+r
  2. digitare qualcosa di simile find
  3. oh fico, guarda ... è il comando che volevo find . -exec grep -q "hello world" '{}' \; -print
  4. Voglio eseguire quel comando, ma cambia ciao mondo in qualcos'altro.
  5. Quindi ho colpito o
  6. Ora il comando è SORTA sulla riga di comando ma sembra sempre una versione troncata del comando, in questo modo:, -q "blog_posts_by" '{}' \; -printdove l'intero comando è lì, e posso usare i tasti cursore per spostarmi sulla linea, ma non tutti è stampato. C'è una disconnessione tra ciò che viene mostrato sulla linea e ciò che il terminale pensa effettivamente che sto modificando.

Qualcuno ha la minima idea del perché ciò possa accadere? Non è un fenomeno facile cercare le reti per.


Questo accade solo su righe più lunghe della larghezza della finestra del tuo termine?
Essobi,

Quale versione di Terminal.App/OSX usi BTW? Versione Bash? Puoi mostrarci anche il tuo .bashrc?
Essobi,

Risposte:


14

Probabilmente ci sono sequenze di escape per i colori nel prompt che non sono delimitate correttamente. Devono essere racchiusi tra \[e \].

PS1='\[\033[1;36m\]\u\[\033[0m\]@\[\033[1;34m\]\h\[\033[0m\]\$ `

La lunghezza delle sequenze di caratteri non stampabili non è inclusa nella lunghezza del prompt quando sono così racchiuse e la posizione dei comandi precedenti deve essere calcolata per la visualizzazione corretta quando si avvolge.


OK, ho avuto qualche altro problema, risolto dal rispondente su questo thread StackOverflow - stackoverflow.com/questions/35563/…
bryan kennedy,

Questo vale anche per i newline nel prompt. Ho fatto cadere una sequenza di controllo bicolore perché era all'inizio PS1, ma non ancora dopo il carattere newline all'interno.
Walf

0

Ciò potrebbe essere dovuto al modo in cui le chiavi di escape sono configurate sul tuo Terminale, quello che normalmente faccio è usare la freccia sinistra o destra su iTerm o Terminal.app poiché non sono un fan di colpire il ritorno immediatamente, funziona per te ?


0

Un'altra possibile causa di questo problema è avere il TERMvalore errato . Ad esempio, questo è successo a me quando stavo usando i colori nella mia PS1, ma il mio TERMera impostato su xterm. L'ho cambiato in xterm-256colore quindi CTRL-r ha ricominciato a funzionare correttamente.

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.