2011-11-15 6 views
16

Qualcuno può aiutarmi con questo: Sto cercando di capire come copiare e incollare il testo tra 2 diverse istanze di Vim su terminali diversi (usando terminale iterm2 o mac). Posso farlo usando il mouse se faccio ": set mouse = a", ma mi piacerebbe poterlo fare usando la tastiera.Copia e incolla in vim tramite tastiera tra diversi terminali mac?

Ho cercato su google e dice che puoi usare i registri "* o" + per copiare/incollare su/dagli appunti di sistema, ma quando digito * o + in vim, il mac emette uno di quei suoni lo fa quando non puoi fare qualcosa. Ho anche fatto ": set clipboard = unnamed" ma non ha funzionato neanche.

Utilizzo il terminale Mac OSX 10.7 (Lion) e iTerm2 o Mac.

Grazie per l'aiuto

+1

Proprio come una nota a margine; quando volevo fare qualcosa di simile, alla fine mi sono reso conto che il modo più semplice per ottenerlo era di non eseguire due diverse istanze di Vim in terminali separati, ma invece di avere più split o buffer in una singola istanza di Vim, quindi potevo guarda diversi file contemporaneamente in un solo vim. Quindi non è nemmeno un problema, e puoi strattonare e mettere il testo tra quei file a tuo piacimento senza sforzi particolari, o imparando nuovi comandi o altro. –

+0

Per utilizzare gli Appunti di sistema, utilizzo la sequenza '" * y' per strattonarli e '" * p' o '" * P' per incollarli da esso. E sì, mi piace avere più di una finestra, e per passare da una all'altra usando 'ALT-TAB' .Questo è molto più facile dell'usare una finestra per VIM e ci sono 2 diverse directory con alcuni file. – mliebelt

+0

Io uso solo un Vim e faccio tutto il file di navigazione/apertura da dentro Vim via LustyExplorer.Tutti i buffer che ho aperto in una sessione sono nascosti e accessibili molto velocemente tramite lo stesso plugin.Utilizzando solo un Vim mi permette di condividere registri (e quindi macro) e cronologia tra tutti i miei buffer aperti – romainl

risposta

17

Potreste aggiungere l'output di :version?

posso tirare con yy o y in un caso Vim in esecuzione in Terminal.app finestra A e mettere con p o P in un'altra istanza Vim in esecuzione in Terminal.app finestra B con questa linea nella mia ~/.vimrc:

set clipboard+=unnamed 

senza utilizzare registri appunti specifici (* o +).

E perché ci sono due istanze Vim in esecuzione su terminali diversi? SSH/locale? Se uno è in una sessione SSH, yanking/putting non funzionerà perché le due macchine (locale/remoto) non condividono gli stessi appunti.

EDIT

sospettavo che Vim non è stato compilato con la bandiera a destra (s). Apparentemente è così.

Dal momento che si utilizza Vim predefinito di Mac OS X, la mia opinione è che non è necessario ricompilarlo o compilarlo, poiché spesso porta a più problemi di quanti ne valga la pena.

Invece, scarica l'ultima versione di MacVim e usa l'eseguibile di Vim (CLI) all'interno del bundle di MacVim: ha tutte le stesse funzionalità di MacVim (entro i limiti della CLI, ovviamente).

aggiungere questa linea al vostro ~/.bashrc o ~/.profile o dove si è abituati a mettere alias e le funzioni bash personalizzato:

alias vim='/path/to/MacVim.app/Contents/MacOS/Vim' 
+0

Ecco la mia versione output: VIM - Vi IMproved 7.3 (2010 15 agosto, compilato 24 giu 2011 20:00:09) Compilato da [email protected] Versione normale senza GUI. – Eddy

+0

Ho provato quello che hai detto, avendo aperto 2 finestre di terminale , ognuno con un'istanza di vim. Ma non riesco ancora a copiare e incollare tra loro (anche con: set appunti + = senza nome nel mio ~/.vimrc) – Eddy

+1

Ah, ho appena notato questo nell'output della versione: -xterm_clipboard. Quindi suppongo che dovrò ricompilare vim e abilitare xterm_clipboard o qualcosa del genere? Come lo faccio? – Eddy

0

Se si desidera copiare un intero file nel file di destinazione.

Aprire il file di destinazione in vim.

Posizionare il cursore dove si desidera e digitare il seguente:

: r /path_to_file/file.ext

Ciò copierà un intero file al punto in cui si trova il cursore ...

+0

È possibile collegare le risposte in diversi siti di scambio di stack aggiungendo un commento con un collegamento alla risposta originale. Non è necessario duplicare il contenuto incollando la copia. – oleksii