copia / incolla di grandi quantità di testo sul terminale porta a caratteri criptati / mancanti

0

Lavoro con TextMate e R sul terminale. Quando si incolla un sacco di codice (CMD + C / CMD + V, ad esempio 60 righe) a volte capita che pochi caratteri nel codice siano codificati, il che porta quindi a messaggi di errore e all'esecuzione errata del codice.

Ad esempio:

col <- ifelse(...

sta diventando

col < col < cse(...

o

onlyDF

sta diventando

oalyDF

Queste sostituzioni di personaggi sembrano molto casuali ed è difficile prevedere quando succederà.

Il problema è anche descritto qui per iterm2: link

La spiegazione fornita è che si tratta di un bug in bash che può portare all'input bufferizzato per essere perso a causa della velocità di incolla.

Qualcuno ha riscontrato questi problemi e trovato un work-around per l'app terminale nativa in Mac OS? (ad esempio modificando la velocità di incollatura, se possibile nel terminale)

    
posta grueb 03.02.2018 - 17:58
fonte

2 risposte

1

Quando ho bisogno di incollare molto testo in una finestra dell'applicazione Terminale, utilizzo il comando cat per trasferire il testo in un file. Ad esempio, inserirò il comando qui sotto prima di incollare il testo con la combinazione di tasti + V .

cat >myfile.txt

Quando hai finito di incollare il testo, inserisci la combinazione di tasti control + D . Questo interromperà il comando cat .

Note: The control+D key combination must be entered at the beginning of a line. If not at the beginning of a line after pasting the text, then press the return key before entering the control+D key combination.

    
risposta data 03.02.2018 - 23:38
fonte
0

Puoi usare il comando pbpaste per ottenere il testo nel pasteboard senza passare attraverso i capricci del driver del terminale, i sovraccarichi del buffer, ecc. Per inserire il testo tagliato in un nuovo file, usa:

pbpaste >myfile.txt

Per aggiungere, usa >> , ecc. Allo stesso modo, puoi alimentare il contenuto del tavolo di montaggio ad altri comandi come input:

pbpaste | somecommand

E se usi l'editor vi , puoi inserire il contenuto del blocco di lavoro nel tuo file con:

:r !pbpaste

BTW, c'è anche un comando pbcopy corrispondente per mettere il testo nel tavolo di montaggio. A differenza dei reindirizzamenti di file standard, può usarlo per modificare in modo non distruttivo il contenuto del tavolo di montaggio "in posizione":

pbpaste | sed 's/foo/bar/' | pbcopy

... e se vuoi vedere anche l'output:

pbpaste | sed 's/foo/bar/' | tee /dev/tty | pbcopy
    
risposta data 27.10.2018 - 22:54
fonte

Leggi altre domande sui tag