Questo succede se uso ctrl + shift + v o incolla dal menu di scelta rapida.
Come faccio a fermare questo comportamento?
Questo succede se uso ctrl + shift + v o incolla dal menu di scelta rapida.
Come faccio a fermare questo comportamento?
Risposte:
Non copiare più righe di testo, per incollare. Posso quasi garantire che stai semplicemente copiando l'ultima parte della linea. Se fai triplo clic per copiare quella riga di codice che stai incollando, otterrai la nuova riga alla fine della riga. Se vuoi essere sicuro, questo è davvero il problema, quindi copia l'intera riga, tranne l'ultima lettera / cifra, e vedi se incollare include anche una nuova riga.
Il testo che stai incollando include una nuova riga finale. Quando si incolla una nuova riga, la shell in esecuzione nel terminale lo vede come una pressione Enter, quindi esegue il comando.
L'operazione incolla viene eseguita dall'emulatore di terminale; passa il testo incollato all'applicazione in esecuzione nel terminale, allo stesso modo in cui passa il testo digitato dall'utente. Vedi Come funzionano l'input da tastiera e l'output di testo? per ulteriori informazioni su come funziona l'input. L'applicazione (qui, la shell) non ha modo di distinguere tra sequenze di tasti e un'operazione incolla.
Oggi molti emulatori di terminali supportano la pasta tra parentesi . Nella modalità incolla tra parentesi, l'applicazione può distinguere un'operazione di incolla dai tasti. L'incolla tra parentesi è utile solo se l'applicazione fa qualcosa di diverso con il testo incollato, quindi è abilitata dal supporto delle applicazioni, non è qualcosa che è configurato dall'utente dell'emulatore di terminale.
Zsh 5.1 (che è uscito poche settimane fa, quindi non è ancora disponibile nella maggior parte delle distribuzioni) aggiunge il supporto per la modalità incolla tra parentesi. Quando si incolla il testo, viene appena inserito nella riga di comando e è possibile modificarlo prima di premere Enterper eseguire la riga di comando.
Gli utenti di oh-my-zsh possono utilizzare il plugin safe-paste anche nelle versioni precedenti di zsh.
Un'altra cosa che puoi fare in zsh è far sì che inserisca la selezione come stringa, con virgolette (sotto forma di barre rovesciate prima di ogni carattere speciale della shell come gli spazi). Digitare `xsel`
per ottenere la selezione principale (selezione automatica del mouse) o `xsel -b`
per ottenere il contenuto degli appunti (testo copiato con Ctrl+ C), quindi premere Tab.
Se hai una versione zsh precedente e vuoi inserire il contenuto degli appunti senza virgolette, puoi definire una funzione che inserisce la selezione.
function zle_insert_x_selection {
LBUFFER+=$(xsel ${NUMERIC+-b} -o </dev/null)
}
zle -N zle_insert_x_selection
bindkey '\e\C-v' zle_insert_x_selection
Con questo nel tuo .zshrc
, puoi premere Ctrl+ Alt+ Vper inserire la selezione principale, o Ctrl+ U Ctrl+ Alt+ Vper inserire il contenuto degli appunti. Vengono inseriti prima del cursore, invariati tranne che con la nuova riga finale. Vedi Condividere gli appunti tra bash e X11 per qualcosa di simile in bash.
Se stai usando bash come shell, puoi premere Ctrl-X Ctrl-E
per visualizzare un editor (definito da $ VISUAL o $ EDITOR, ad esempio vi
o forse nano
).
È quindi possibile incollare i comandi esattamente come se si stesse modificando un file. Verranno eseguiti se salvi ed esci. O annullato se si esce senza salvare.
Per incollare più righe su un prompt dei comandi, apri le virgolette singole o doppie prima di incollarle.
$ echo '
paste
...
...
'
Quindi è possibile premere Invio per ripetere. Quando si preme la freccia verso l'alto, tutte le linee incollate saranno su una linea modificabile.
Funziona finché non c'è una sola citazione nel testo che incolli.
In una finestra dell'editor di testo, utilizzare le seguenti scorciatoie per copiare il testo senza \ n (l'avanzamento riga):
In una finestra del browser o un'altra cosa in cui il testo non è modificabile, utilizzare una delle due tecniche:
Come appare una selezione corretta (senza \ n):
ls -al
Come appare una selezione errata (con \ n):
ls -al