Come far funzionare taglia / copia / incolla in GVim su Ubuntu con Ctrl + X, Ctrl + C, Ctrl + V?


54

Per impostazione predefinita, le scorciatoie taglia / copia / incolla in GVim su Ubuntu sono:

 Taglia "+ x
 Copia "+ y
 Incolla "+ gP

Vorrei usare le combinazioni di tasti di controllo in GVim, come in Firefox e altre applicazioni gnome. Come configuro GVim per funzionare come le altre app Gnome?


Per evitare conflitti con i tasti vim predefiniti, optare per Ctrl + Maiusc + Tasto invece di Ctrl + Tasto
Sheharyar

Risposte:


50

Aggiungi le seguenti righe al tuo _vimrco.vimrc

source $VIMRUNTIME/mswin.vim
behave mswin

Ma attenzione, la modalità visiva è quindi CTRL-Q anziché CTRL-V.

Per una panoramica di ciò che mswin.vim visualizza il codice sorgente mswin.vim . È commentato molto bene e se alcuni comandi non sono chiari, puoi facilmente cercarli con l'aiuto di Vim.

Ecco una rapida panoramica compilata dalla fonte:

  • i tasti backspace e cursore passano alla riga precedente / successiva
  • CTRL-X e MAIUSC-CANC vengono tagliati
  • CTRL-C e CTRL-Insert sono Copia
  • CTRL-V e MAIUSC-Inserisci sono Incolla
  • Usa CTRL-Q per fare ciò che faceva CTRL-V
  • Utilizzare CTRL-S per il salvataggio, anche in modalità Inserisci
  • CTRL-Z è Annulla; non in cmdline però
  • CTRL-Y è Ripeti (sebbene non si ripeta); non in cmdline però
  • Alt-Space è il menu di sistema
  • CTRL-A è Seleziona tutto
  • CTRL-Tab è la finestra successiva
  • CTRL-F4 è Chiudi finestra

Su richiesta di Nippysaurus: ho inserito il seguente nel mio .gvimrc per mostrare Ctrl-V oltre a Incolla nel menu:

unmenu! Edit.Paste
aunmenu Edit.Paste
nnoremenu 20.360 &Edit.&Paste<Tab>Ctrl-V        "+gP
cnoremenu    &Edit.&Paste<Tab>Ctrl-V        <C-R>+

Non l'ho provato a fondo, solo un rapido controllo se ha fatto quello che mi aspettavo. Funziona per me, spero che funzioni per te ;-)


1
Comprendo e apprezzo i punti che Manni e Peter Thorin hanno fatto nei commenti della risposta di Peter Thorin. La mia opinione è che ho imparato GVim su Windows, come sostituto del blocco note, e voglio meno attrito. Grazie Ludwig
pcapademic,

2
Esiste un modo per modificare il testo del collegamento del menu in modo che corrisponda ai nuovi tasti di scelta rapida?
Nippysaurus,

@Nippysaurus: l'ho provato con menutrans in .gvimrc. Non è riuscito a farlo funzionare, lo guarderò di nuovo la sera ...
Ludwig Weinzierl,

2
Sembra che mswin.vimabbia già una behave mswinchiamata. È necessario richiamarlo di nuovo nel mio _vimrc?
Nathan Friend,

1
@NathanFriend Ditto. Funziona anche senza behave mswin, almeno sul mio sistema con Vim 8.0.
Mikel,

46

Se vuoi che Cut / Copy / Paste funzioni usando i tasti di scelta rapida "standard", ma non vuoi cambiare nessuna delle altre opzioni di configurazione in gvim, prova ad aggiungere quanto segue ~/.vimrc.

vmap <C-c> "+yi
vmap <C-x> "+c
vmap <C-v> c<ESC>"+p
imap <C-v> <C-r><C-o>+

Incolla funziona solo in modalità Visual e insert, quindi non devi preoccuparti del conflitto con Ctrl-V e Block Mode Visual. Questo non è un problema, perché Copia e Taglia ti mette in modalità inserimento, quindi puoi incollarlo immediatamente in seguito. Se lo provi, scoprirai che è completamente naturale.

Ho trovato questa configurazione dopo diverse iterazioni di modifica, e penso che ora sia "perfetto". Se sei anche un po 'insoddisfatto della tua attuale configurazione copia / incolla, prova questo e scommetto che ti piacerà.


Questo e 'esattamente quello che stavo cercando. Grazie.
Sean McCleary,

2
Dopo alcuni esperimenti e consultazioni :help i_ctrl-r_ctrl-o, ho deciso di passare imap <C-v> <ESC>"+paa imap <C-v> <C-r><C-o>+; funziona come previsto quando il cursore si trova a sinistra del primo carattere di una riga e imita più da vicino il comportamento "standard".
Holger,

Sto pensando di passare <C-v>a shift + insert che sembra essere molto più veloce sulla mia macchina. Ma nel bel mezzo di un progetto e non hai voglia di riavviare vim in questo momento. Solo condivisione
Will

Sei fantastico =)
Yugal Jindle

9

Se si desidera mantenere il normale comportamento di vim ma consentire anche un uso meno ingombrante degli appunti di sistema, consultare Accesso agli appunti di sistema . Se si desidera gvim di utilizzare la clipboard di sistema come il suo buffer di default (in modo che qualsiasi x, y, p, ecc comando utilizza la clipboard) quindi aggiungere la seguente riga al vostro vimrc:

set clipboard=unnamed

Personalmente uso i buffer molto più all'interno di VIM che tra VIM e il sistema; quindi preferirei avere una scorciatoia leggermente più ingombrante che avere i miei appunti di sistema costantemente bloccati. Ma è bello che l'opzione sia lì per coloro che la preferirebbero.


2

Penso che puoi aggiungere questo con il comando: imap (provato solo con Ctrl + X in Windows che ha funzionato, premendo ctrl + c sembra annullare il comando, quindi potresti doverlo fare in vimrc).

:imap <C-X> "+x
:imap <C-C> "+y 
:imap <C-V> "+gP

Se lo aggiungi al tuo ~ / .vimrc devi solo rimuovere: davanti a imap.

imap aggiunge solo i collegamenti nella modalità di inserimento, quindi potresti volerlo cambiare in solo mappa o qualcos'altro. Cerca :help mapmodeulteriori informazioni sulla rimappatura e la non mappatura delle cose.

In bocca al lupo!


1
Questo dovrebbe fare un po 'di trucco. Ma è una cattiva idea farlo. Ctrl-V dovrebbe entrare in modalità visiva, Ctrl-C annullerà qualsiasi comando. E il trucco funzionerà solo sul tuo sistema; su una macchina diversa, ti perderai.
innaM

1
Sono in parte d'accordo sul fatto che sia una cattiva idea, non vorrei usarlo da solo, ma se sei solo un utente casuale di gvim, probabilmente non ti perderesti comunque i binding che rimuovi.
Peter Thorin,

1
Il perché usare gvim in primo luogo? Per quanto tempo rimarrai un utente occasionale?
innaM

2
Non penso sia una cattiva idea. Le persone sono abituate a Ctrl + X ecc. E ci sono miliardi di altri motivi per usare vim.
Ludwig Weinzierl,
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.