Selezione del testo nel terminale senza usare il mouse


68

Sto per premere Invio per eseguire un comando nel terminale, ma prima di farlo, voglio copiare il comando negli Appunti senza usare il mouse.

Come?

Se sei in un posto diverso dal terminale, Ctrl+ lo Homefa.

Esiste un modo per selezionare arbitrariamente testo come quello nel terminale?

MODIFICATO:

  • supponiamo che l'utilizzo di altri programmi come screennon sia una buona alternativa
  • il testo deve essere incollato fuori dal terminale, quindi Ctrl+ ye sequenze simili non lo risolvono neanche

1
Vuoi dire Ctrl-Maiusc-Home?
Lumaca meccanica

Maiusc-Home copia all'inizio della riga. Ctrl-Maiusc-Home copia all'inizio della pagina.
Strapakowsky,

Maiusc-Home e Ctrl-Maiusc-Home fanno lo stesso per me (vai all'inizio del terminale) e nessuno dei due sembra copiare nulla che non sia passato da Ctrl-Y o Ctrl-Maiusc-V (né seleziona). Ma funziona nell'editor di testo, non nella copia, ma solo nella selezione. Utilizzo di OpenSUSE Leap 15 in Virtual Box. Ogni altra associazione di tasti menzionata nelle risposte funziona.
Brambor,

Risposte:


16

Associa la seguente scorciatoia:

bind '"\C-p": "\C-e\C-u xsel <<"EOF"\n\C-y\nEOF\n\C-y"'

Ora dopo aver usato Crtl+ la Ptua linea verrà copiata negli appunti. Puoi incollarlo nel terminale usando:

xsel

E in qualsiasi applicazione X usando il pulsante centrale del mouse o Shift+ Insert.


voglio evitare di usare il mouse. È possibile incollarlo con ctrl + maiusc + v invece del pulsante centrale del mouse?
MrGigu,

@MrGigu, utilizza un diverso blocco appunti (vedi qui ). Devi usare altre scorciatoie. Di default dovrebbe essere Maiusc + Inserisci (vedi qui )
Nykakin

Oh, grazie, shift + insert funziona! non sapevo che potevi incollare con questo comando.
MrGigu,

Qualche spiegazione su cosa sta realmente succedendo qui?
Alexander

Oppure usa xsel -bper usare gli appunti standard, cioè quello che usa Ctrl + V / Ctrl + Maiusc + V. Vale anche la pena notare che questo metodo fallisce nei comandi multilinea.
wjandrea,

27

Se stai usando una delle shell che comprende le chiavi di emacs (bash, csh, ecc.) Allora puoi copiare il comando corrente:

  1. control-A ti porterà all'inizio della riga.

  2. control-K ucciderà l'intera riga che hai appena inserito.

  3. control-Y tirerà indietro il testo.

Quindi, è possibile control-Yriportare indietro il testo per reinserirlo come input nell'editor della riga di comando della shell.

Vedi man bashe poi quando compare, digita /emacsseguito da un paio di n(successivo) per spostarti in avanti nella sezione READLINE.


Lo sapevo, ma voglio incollare fuori dal terminal. A cura di chiarimenti.
Strapakowsky,

3
control-Upuò tagliare direttamente il comando dalla fine di esso
vstepaniuk

1
Il secondo comando mi ha cambiato la vita.
Krishna,

10

Il più vicino a cui riesco a pensare è Ctrl+ u, Ctrl+ y
Questo eliminerebbe dal cursore all'inizio della riga, quindi incolla dal buffer readline. Questo non è esattamente lo stesso degli Appunti, ma saresti in grado di incollare all'interno della shell, se è quello che ti serve.


Lo sapevo, ma voglio incollare fuori dal terminal. A cura di chiarimenti.
Strapakowsky,

8

C'è un programma chiamato schermo. Crea un sistema di finestre di testo che consente di alternare tra più istanze. Ma ti consente anche di selezionare il testo.

sudo apt-get install screen

Questo comando lo installa.

Quindi digitare screen

Si utilizza ctr-a per avviare la sequenza di comandi. Quindi premere esc e il cursore si sposterà in qualsiasi direzione. Premere Invio per iniziare la selezione del testo, spostarsi al punto finale, premere di nuovo Invio. Quello verrà copiato nel buffer.

Quindi ctr-a e quindi} verranno incollati

Maggiori dettagli su altri comandi qui http://www.kuro5hin.org/story/2004/3/9/16838/14935


Un buon suggerimento, ma non mi piace screenper diversi motivi, quindi supponiamo un normale terminale Ubuntu. Modificato la mia domanda per chiarimenti.
Strapakowsky,

1
Questo dovrebbe essere contrassegnato come la risposta corretta IMHO.
eddiewould

2

Se ci si trova all'interno di Vim, è possibile selezionare visivamente una o più righe con Shift+ ve quindi utilizzare una rilegatura, ad esempio yy, per convogliare la selezione su xclip .

Aggiungi l'associazione al tuo vimrc:

vnoremap yy :w !xclip -selection clipboard<CR><CR>

Questo richiede l' installazione di xclip , è nel repository aptitude Debian / Ubuntu.

xclipmemorizza stdin, con l' -selection clipboardopzione spinge anche stdin negli appunti di sistema.

Quindi puoi anche usare xclipin modo generico dal terminale, ad esempio per copiare un intero file negli Appunti di sistema:

cat myfile | xclip -selection clipboard

Se puoi, facoltativamente, puoi anche creare un alias, come:

alias cb="xclip -selection clipboard" 

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.