Copia-incolla per vim non funziona quando il mouse (: set mouse = a) è attivo?


53

Stavo cercando di copiare incolla qualcosa da VIM in un'altra applicazione e anche, da quell'applicazione vimall'utilizzo del tasto destro del mouse e quindi copia e incolla (o con Ctrl+ ve Ctrl+ ce ho anche provato la Commandversione per mac OSX, ovviamente.). Tuttavia, quando provo a farlo, copia la prima parola solo quando lo faccio vimo quando copio dall'applicazione a vim, copia tutto, ma inserisce strane schede e spazi. Penso che sia successo quando ho deciso di mettere il mouse sul terminale. Come in:

:set mouse=a

Ho quella linea sul mio .vimrcfile su iTerm (mac os x). Tuttavia, è possibile incollare la mia copia con altre applicazioni che non vimsi rompono con l' mouse=aon? O è almeno possibile disattivare il mouse mentre eseguo il copia e incolla? Ho fatto il :helpmouse ma i commenti non mi sono stati utili. Li incollerei qui ma ... il mio strumento copia incolla è rotto!

Ci ho provato :set mouse!e :set mouse=a!questi non hanno fatto nulla di utile ... :(


Ulteriori informazioni sul mio ambiente:

Sto usando anche tmux la maggior parte delle volte, tuttavia, ho testato questo errore / bug senza una sessione di tmux, ecco perché l'ho pubblicato principalmente come una domanda di vim.


4
Posso dirti che vimè in grado di strappare alla Selezione primaria semplicemente usando il yverbo. Non so perché non lo usi.
HalosGhost il

1
Non lo farei perché non so come fare, immagino, mi scuso per l'incompetenza. Non sapevo nemmeno che esistesse fino a quando non lo hai menzionato. Per favore, condividi le tue conoscenze! :)
Pinocchio,

Questo è macvim ?
Patrick,

no, non è solo iTerm (come ho già detto sulla domanda, ma una buona domanda).
Pinocchio,

Risposte:


67

mouse=a impedisce la possibilità di copiare e incollare vim con caratteri leggibili.

Passa mouse=aa mouse=re questo dovrebbe risolvere il tuo problema.

una cosa che mi chiedo è, stai cambiando il file di configurazione per il tuo vim con il mouse impostato su mouse = a?

risposta originale ^

Se mouse=rnon ti dà tutte le opzioni di copia del passato, cambialo inmouse=v

Entrambi mouse=re mouse=vhanno le stesse funzioni di cui hai bisogno, ma a seconda del vimrc che stai usando uno funzionerà meglio dell'altro.


hai anche provato a evidenziare il testo e utilizzare il pulsante centrale del mouse per passare in un altro posto. che tende a funzionare meglio quando si passa a Ctrl + v e Ctrl + c
bgrif

Non so cosa significhi la tua domanda: one thing I am wondering is, are you changing the config file for your vim with the mouse set to mouse=a?Vuoi dire se ho :mouse=anel mio file .vimrc? Ho :mouse=anel mio file .vimrc.
Pinocchio,

1
solo --with-x=yes? Non ho bisogno di mettere :set --with-x=yes mouse=ao qualcosa del genere? Potresti chiarire cosa intendi?
Pinocchio,

1
Fatemi attività di ricerca qualora è necessario combinare --with-x=yesa set mouse=a. Quando stavo leggendo su tutto ciò che ho visto è stato da solo nel file di configurazione. Ma potrebbe essere diverso, quindi voglio essere sicuro di dirti la cosa giusta che funzionerà per te.
bgrif,

1
Grazie mille, questo suggerimento funziona come un incantesimo con mouse = v
Pamungkas Jayuda

21

Per gli utenti di OS X: Copia incolla con mouse=auso altinvece di Shiftselezionare il testo. Poi cmd-ce cmd-vil lavoro come previsto.

Ho trovato questa risposta qui https://stackoverflow.com/a/4608387/671639 dopo un sacco di ricerche su Google.


Tu sei Dio ......: ')
omerjerk il

l'unica cosa che ha funzionato per me, grazie!
Don

3
Per me su OSX funziona "fn" invece di "shift" o "alt".
ssasa,


6

La soluzione di Bharath , premendo Shiftdurante la copia, lo farà, ma copierà più di quello che vorresti copiare in caso di numerazione o commenti di hash.

Un modo per farlo anche con il mouse = a è usare la modalità visiva premendo Vper il cursore singolo o Shift+ Vper l'evidenziazione della linea intera, e puoi spostarti su o giù con le frecce e usare Yper copiare o Dtagliare e dovrebbe funzionare.


@Anthon, lo farà, grazie per il chiarimento.
amrx,

1
Ho riformulato il tuo commento auto-pronunciato per renderlo più simile a una risposta in questo modo le mod probabilmente lo lasceranno così com'è (e potresti guadagnare qualche reputazione su di esso in modo da poter commentare). Se l'originale fosse stato una correzione minore, commentare sarebbe stato più appropriato.
Anthon,

5

Aveva lo stesso problema: impossibile evidenziare utilizzando il mouse, quindi non è stato possibile copiare e incollare da VIM in una sessione terminale in documenti e browser Windows: Ha fatto quanto segue e ora funziona:

: set clipboard=unnamedplus
: set mouse=r

4

Consultare: http://vimdoc.sourceforge.net/htmldoc/options.html

Guarda la sezione Note nella parte inferiore del riferimento:
quando si abilita il mouse, è ancora possibile utilizzare i pulsanti del mouse tenendo premuto il tasto Maiusc. Questo include copia incolla usando i pulsanti del mouse.

*'mouse'* *E538*
'mouse'         string  (default "", "a" for GUI, MS-DOS and Win32)
            global
            {not in Vi}
    Enable the use of the mouse.  Only works for certain terminals
    (xterm, MS-DOS, Win32 |win32-mouse|, QNX pterm, *BSD console with
    sysmouse and Linux console with gpm).  For using the mouse in the
    GUI, see |gui-mouse|.
    The mouse can be enabled for different modes:
        n   Normal mode
        v   Visual mode
        i   Insert mode
        c   Command-line mode
        h   all previous modes when editing a help file
        a   all previous modes
        r   for |hit-enter| and |more-prompt| prompt
    Normally you would enable the mouse in all four modes with:
        :set mouse=a
    When the mouse is not enabled, the GUI will still use the mouse for
    modeless selection.  This doesn't move the text cursor.

    See |mouse-using|.  Also see |'clipboard'|.

    Note: When enabling the mouse in a terminal, copy/paste will use the
    "* register if there is access to an X-server.  The xterm handling of
    the mouse buttons can still be used by keeping the shift key pressed.
    Also see the 'clipboard' option.

1
Grazie per aver contribuito a quel riferimento, ma risponde alla domanda ? In tal caso, è possibile identificare la parte del preventivo che lo fa, presentando un riepilogo della risposta effettiva?
G-Man dice "Ripristina Monica" il

0

Per quanto riguarda la seconda parte della domanda in cui hai specificato che quando si incolla da altre applicazioni per vim aggiunge schede / spazi. Prova ad aggiungere questo al tuo set / ~ .vimrc set paste o in vim prima di incollare in modalità normale premi "shift" + ":" e digita "set paste"


0

È possibile utilizzare yper copiare (yank) e pincollare anche con :set mouse=aset in ~/.vimrc. Usa v+ arrow keysper evidenziare il testo. Per copiare rapidamente un'intera riga, utilizzare shift+ y.


0

Sul mio Mac, ciò che mi ha aiutato sono state queste due cose:

  • : set mouse- = a
  • fn + clic (anziché shift o alt)

0

Usa queste due righe sottostanti nel tuo ~/.vimrcper usare tutte le belle funzioni di a gui-mousee incolla negli appunti di sistema usando y(tasto yank) se non hai davvero bisogno di buffer di appunti aggiuntivi:

set mouse=a
set clipboard=unnamed
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.