Come copiare una selezione negli appunti di OS X.


225

Ho un'area selezionata in Vim. Come posso copiarlo negli appunti di OS X?

(Gli appunti di OS X possono essere scritti tramite una pipe in /usr/bin/pbcopy)


4
basta selezionare visivamente, quindi "+y.
zx1986,

2
Il vim fornito con OSX non ha +clipboardo +xterm-clipboard. Puoi verificarlo con vim --version | grep clipboard. È possibile risolverlo con brew install vim --with-client-server.
Londra,

1
Oppure usa MacVim, che offre una versione da riga di comando che può essere collegata al tuo symlink ~/bine quindi ~/binpuò essere inserita nel tuo percorso prima del normale vim e dei sinonimi installati dal sistema.
Tin Man,

Sulla base di ciò che ha scritto @ zx1986, ho fatto tre cose: 1) Ho aggiunto quanto segue al mio ~ / .bashrc per alias vi / vim alla modalità terminale di MacVim: alias vi='mvim -v'2) Aggiunto quanto segue a ~ / .vimrc, che mappa Ctrl + c (non Cmd + c): vnoremap <C-c> "+y3) Keyboard Maestro configurato per digitare la sequenza di ^ctasti (Ctrl + C) durante l'esecuzione nel terminale (nel mio caso iTerm2) Ciò consente di utilizzare Cmd + c per copiare il testo negli Appunti OSX in modo che possa essere incollato in altre applicazioni OSX.
Neil Griffin,

Risposte:


79

A seconda della versione di Vim che uso, sono in grado di utilizzare il +registro per accedere agli Appunti.

" Condivisione degli Appunti di Mac OS X " può avere alcune idee che funzionano anche per te.


5
Per le persone con VIM compilato senza + appunti il ​​link sopra è una risorsa eccellente per dare soluzioni alternative senza ricompilare VIM
sdjuan

DETTAGLIO MOLTO IMPORTANTE !!! Se hai Vim-versione 7.3 allora questo potrebbe non funzionare per te, ma se hai Vim-versione 7.4 allora funziona (e a volte non devi nemmeno fare l'intero "+ y). E lo controlli solo scrivendo> vim nel terminale e poi il numero di versione è quando lo avvii.
Zeth

questa risposta è la stessa di questo stackoverflow.com/a/680271/2652524
Gujarat Santana,

1
Il "+registro esiste solo per X11 (a meno che non si crei vim con il supporto + X11, che installerà un server X11 XQuartz in OS X), mentre OS X non utilizza X11 come sistema Windows.
nn0p,

Cosa fare, se entrambi - vime macvimavere + appunti. E clipboard=unnamedaggiunto a ~/.vimrc? Sembra un vero dolore, ho provato tutte le soluzioni alternative e attualmente devo usare i veicoli spaziali, quando so che dovrò usare gli appunti globali :)
Nikolay Fominyh,

240

Per MacVim e Windows Gvim, aggiungi semplicemente quanto segue al tuo ~/.vimrc:

set clipboard=unnamed

Ora tutte le operazioni come yy, De Pil lavoro con gli appunti. Non è necessario prefissarli con "*o "+.


2
Ho passato tutta la mattinata a capire come separare i comandi y, d e P da ⌘-C e ⌘-V che MacVim abilita per te e alla fine ci siamo imbattuti in questo. Abbastanza sicuro, avevo aggiunto questo al mio vimrc quando ero un giovane vim e da allora mi ha frustrato.
Jonathan Dumaine,

2
Per quelli che non conoscono MacVim, è utilizzabile dal terminale con il -vflag ( mvim -v). Ho il mio aliasing per vim e mvim.
pk-nb,

3
Come già detto da @VincentG nel suo commento di cui sopra, questo infatti funziona con le versioni dei terminali basati su Vim, ma quelli che utilizzano tmux all'interno del terminale sarà necessario seguire una delle soluzioni descritte qui: stackoverflow.com/a/11421329/456584
user456584

3
questo dovrebbe essere la risposta accettata - fino a quando :echo has("clipboard")dice 1, che è il caso per MacVim, e ho un vialias che corre mvim -vinvece
jdsumsion

1
@Joseph, se :versionti mostra -clipboardallora la build di Vim non supporta la funzione Appunti. Stavo parlando di MacVim, che è un'app GUI.
George V. Reilly,

136

Se gli appunti sono abilitati, puoi copiare una regione selezionata negli appunti premendo "*y

Per vedere se è abilitato, esegui vim --versione cerca +clipboardo -clipboard. Ad esempio, non è abilitato per impostazione predefinita sulla mia casella 10.5.6:

% che vim
/ Usr / bin / vim
% vim --version
VIM - Vi IMproved 7.2 (9 agosto 2008, compilato l'11 novembre 2008 17:20:43)
Patch incluse: 1-22
Compilato da _www@b77.apple.com
Versione normale senza GUI.  Funzionalità incluse (+) o meno (-): 
... 
-clientserver -clipboard + cmdline_compl + cmdline_hist + cmdline_info + commenti
 ...

Se fosse stato compilato +clipboard, sarei in grado di utilizzare il "*registro per accedere agli Appunti di sistema.

Ho scaricato il sorgente 7.2 e l'ho compilato (facile come tar xjf vim-7.2.tar.bz && cd vim72 && ./configure && make && sudo make install), e gli appunti sono stati abilitati:

% che vim
/ Usr / local / bin / vim
% vim --version
VIM - Vi IMproved 7.2 (9 agosto 2008, compilato il 24 marzo 2009 17:31:52)
Compilato da rampion@Myrrhy.local
Versione normale con interfaccia grafica GTK2.  Funzionalità incluse (+) o meno (-): 
... 
+ clientserver + appunti + cmdline_compl + cmdline_hist + cmdline_info + commenti
 ...

Tuttavia, anche dopo la compilazione, non ho potuto copiare negli appunti quando eseguivo vim in Terminal.app, solo in X11.app.


3
Ho compilato l'ultima versione con + appunti e ora gli appunti nativi funzionano con esso come * registro. Inoltre, l'impostazione "set clipboard = unnamed" nel tuo file .vimrc rende gli appunti di sistema tipici. In realtà ho usato github.com/adamv/homebrew/blob/duplicates/Library/Formula/… questa formula homebrew per costruirla e compilarla.
rado,

Hmm, non sono sicuro del motivo per cui Vim non è apparso nel mio Homebrew, ma l'ho copiato in / usr / local / Library / Formula, ho eseguito brew install vim e non è riuscito con "ld: libreria non trovata per -lruby-static ". Sto usando RVM ed era il 1.8.7. Quando sono passato a 1.9.2 l'errore era "ld: libreria non trovata per -lruby.1.9.1". La soluzione era utilizzare il sistema Ruby eseguendo prima il sistema di utilizzo rvm.
justsee,

9
Un po 'più facile che cercare la parola "appunti" in quello che di solito è un lungo elenco di funzionalità: fare :echo has("clipboard"). Se mostra 0, non è compilato. Se mostra 1, lo è.
Ravron,

3
puoi anche far compilare vim con gli appunti usando homebrew: brew install vim
Anton Koval '28

4
Attenzione! Avevo una +clipboardversione, ma avevo installato ciò --with-client-serverche abilita +x11, e cercando di copiare / incollare su x11 in terminal vim su macOS non ha funzionato :) Ho dovuto reinstallare senza +clientserver.
jacwah,

96

Puoi selezionare visivamente testo e tipo :w !pbcopy<CR>

Oppure puoi includere le mappature dei tasti sottostanti nel tuo ~/.vimrcfile. Tagliano / copiano il testo in modalità visiva negli Appunti del sistema operativo.

vmap <C-x> :!pbcopy<CR>  
vmap <C-c> :w !pbcopy<CR><CR> 

fonte: http://drydevelopment.com/blog/vim-pbcopy-on-os-x


6
Puoi anche selezionare del testo dalla riga di comando come: 1,10w! Pbcopy per copiare negli appunti le righe 1-10. La w è importante insieme allo spazio dopo di essa per mantenere il testo originale in posizione. Il link sorgente sopra è ora rotto ma c'è una discussione qui: vim.wikia.com/wiki/Mac_OS_X_clipboard_sharing
sdjuan

Ho seguito questo per farlo funzionare in tmux: superuser.com/questions/231130/…
Wex,

Il link @Wex è stato corretto
SnoringFrog il

2
Nota che questo sembra funzionare solo per la selezione di intere linee. Non sembra funzionare se si desidera selezionare solo parte di una linea. stackoverflow.com/questions/16196826/…
Kevin Wheeler,

1
@Kevin Wheeler: puoi provare con il seguente comando che può risolvere la noremap di copia non lineare <silente> <leader> y: <CR>: let @ a = @ "\ | execute" normale! vgvy "\ | let res = system (" pbcopy ", @") \ | let @ "= @ a <CR>
dragonxlwang

38

virgolette doppie ( "*) prima che qualsiasi comando yank inserisca i risultati nel buffer di copia. Funziona anche con Windows e Linux.


11
sembra solo emettere un personaggio a campana e nessun altro effetto per me
Marıu

3
In X11, "* è PRIMARY" di Vim + + è CLIPBOARD e SECONDARY non ottiene un registro con nome. (Non che nessuno lo usi ...)
effimero

Perfettamente. Aiuta davvero, specialmente con la selezione dei blocchi (ctrl-v).
Sonique,

Poiché la domanda riguardava specificamente Mac OS X, non è necessario aggiungere che "troppo" per Mac funziona.
Paul Tomblin,

@PaulTomblin ok, abbastanza onesto :-)
apprendistaDev

26

Su macos 10.8, vim è compilato in -clipboardmodo da usare "*yper ricompilare. Fortunatamente brew install vimcompilerei facilmente una nuova versione per te e lo sarà +clipboard.


1
Qualcosa da tenere a mente - in modo bizzarro, brew install vimcon aggiornamenti vie non vim . Quindi potresti dover aliasare le cose in modo diverso dopo aver installato vim con homebrew.
Shridharama,

18

Seleziona visivamente il testo e digita:

ggVG
!tee >(pbcopy)

Che trovo più bello di:

ggVG
:w !pbcopy

Dal momento che non viene visualizzato un prompt: "Premere INVIO o digitare il comando per continuare"


Copia ancora l'intera riga
Karl Pokus,


11

Se stai usando MacPorts puoi aggiornare il tuo VIM per includere il supporto degli appunti tramite:

port install vim +x +x11

Ora usi il "+registro per strappare il testo direttamente negli appunti del Mac. Funziona come un fascino.


1
Questo è proprio quello di cui avevo bisogno. Uno deve solo assicurarsi che $ PATH sia corretto e che tu stia ottenendo / opt / local / bin / vim e non la Apple Vim.
Gareth,

8

Se sei su MacOS X:

$ brew install vim
$ vim --version
VIM - Vi IMproved 7.4 [...]

Quindi, aggiungi al tuo .vimrc:

set clipboard=unnamed

Ora devi solo essere in vim e fare :%y, per avere tutto il contenuto copiato negli appunti.


il contenuto viene strappato ma non riesco a incollarlo al di fuori di VIM.
prayagupd,

5

Usa il vim di Homebrew :brew install vim

Mac (a partire da 10.10.3 Yosemite) viene preinstallato con un sistema vim che non ha il clipboardflag abilitato.

Puoi compilare vim per te stesso e abilitare quella bandiera, o semplicemente usare vim di Homebrew che è configurato correttamente.

Per vederlo da solo, dai un'occhiata al sistema stock vim con /usr/bin/vim --version

Vedrai qualcosa del tipo:

$ /usr/bin/vim --version

VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Nov  5 2014 21:00:28)
Compiled by root@apple.com
Normal version without GUI.  Features included (+) or not (-):
... -clientserver -clipboard +cmdline_compl ...

Notare la -clipboard

Con l'homebrew's vim invece ottieni

$ /usr/local/bin/vim --version

VIM - Vi IMproved 7.4 (2013 Aug 10, compiled May 10 2015 14:04:42)
MacOS X (unix) version
Included patches: 1-712
Compiled by Homebrew
Huge version without GUI.  Features included (+) or not (-):
... +clipboard ...

Notare la +clipboard


1
Quindi come fare la copia?
Frozen Flame,

con la versione brew di vim sono stato in grado di fare quello che volevo: ho evidenziato le linee usando Vallora :w !pbcopye ha funzionato
davidpm4

5

Se il tuo Vim non è compilato con gli Appunti, desideri copiare il testo selezionato anziché intere righe, non vuoi installare MacVim o altre GUI, la soluzione più semplice è aggiungere questa riga al tuo .vimrc:

map <C-c> y:e ~/clipsongzboard<CR>P:w !pbcopy<CR><CR>:bdelete!<CR>

Per usarlo, basta selezionare visivamente il testo che si desidera copiare, quindi Control- C. Se vuoi una spiegazione completa di questa riga leggi " Come copiare negli appunti su vim ".


ma mi dà anche 2 righe nere dopo che il testo è stato copiato
Nic Wanavit il

4

Ero solito:

map <C-x> :!pbcopy<CR>
vmap <C-c> :w !pbcopy<CR><CR>

Ha funzionato davvero bene.


3

Puoi usare MacVim quando sei su un Mac per accedere facilmente agli Appunti usando i tasti del sistema operativo standard.

È anche completamente retrocompatibile con Vim normale, quindi non devo nemmeno avere un separato .vimrc.


Uso MacVim e quindi ho ricollegato i sinonimi vim della riga di comando in my ~/binper ignorare le impostazioni predefinite.
Tin Man,

2

Comando-C? Questo funziona almeno per il vim lanciato da Terminal.app per il testo selezionato con il mouse.


6
buona risposta ingenua ma interrompe l'output se stai usando sottofinestre divise verticalmente in vim (che in realtà è il caso che ho in mente), o se il risultato è più lungo di uno schermo terminale
Marıu

3
Hai ragione, non ho pensato a questi casi. Lascio la mia risposta solo per impedire ad altri di dare risposte simili non utili.
mouviciel,


2

Il mio problema principale era la versione OSX predefinita di Vim. L'installazione tramite homebrew è stata aggiunta +clipboardalla build.

Puoi verificare con:

vim --version

per vedere se dice -clipboardo +clipboard.


2

se hai l' +clipboardopzione sulla tua installazione di Vim (puoi verificare con :version) e sei in modalità visiva, puoi farlo. "+yQuesto porterà la selezione al buffer +che è negli Appunti.

Ho aggiunto le seguenti mappe al mio vimrc e funziona benissimo.

vmap <leader>y "+y : Con questo posso leader keyseguire yper copiare negli appunti in modalità visiva.

nmap <leader>p "+p : Con questo posso fare leader keyseguire pper incollare dagli Appunti in modalità normale.

PD: Su Ubuntu ho dovuto installare vim-gtk per ottenere l' +clipboardopzione.


0

su Mac quando tutto sembra funzionare: seleziona con il mouse, fai clic con il pulsante destro del mouse su Scegli copia. uff


0

Sono attualmente su OS X 10.9 e i miei sforzi per compilare vim con + xterm_clipboard non mi hanno portato nulla. Quindi la mia soluzione attuale è usare MacVim in modalità terminale con l'opzione set clipboard=unnamednel mio file ~ / .vimrc. Funziona perfettamente per me.


0

Cosa ha funzionato per me nel mio .vimrc

set clipboard=unnamed
if has("unnamedplus") " X11 support
    set clipboard+=unnamedplus
endif

0

Per Mac: il optiontasto Hold seguito da ctrl Vmentre si seleziona il testo ha funzionato.


0

Sposta cmd c - imposta la modalità di copia Trascina il mouse, seleziona testo, cmd c per copiare il testo selezionato Cmd v per incollarlo


-1

Per gli utenti Ubuntu, il pacchetto che si desidera recuperare per l'uso degli Appunti è pieno di vim. Gli altri pacchetti (vim-tiny, vim) non includono la funzione Appunti.


vim-full non è più un nome di pacchetto ubuntu. il pacchetto vim predefinito (7.3.154) ha un set minimo di funzionalità, incluso -clipboard. L'installazione di vim-gtk o vim-nox fornirà una versione + appunti.
spazm,

-1

La copia negli Appunti usando il registro '+' o '*' non funziona?

Motivo: la tua versione particolare di vim è stata compilata senza il supporto degli appunti. Digita vim --verion sulla console e vedrai -xterm_clipboard . L'installazione di vim con i pacchetti di gui risolve questo problema. Su Ubuntu puoi farlo digitando sulla shell:

sudo apt-get install vim-gui-common

Ora di nuovo vim --version su console. Molto probabilmente, vedresti + xterm_clipboard ora !!

Quindi, ora puoi copiare qualsiasi cosa negli appunti usando register + (come "+ yy per copiare la riga corrente negli appunti)


-1

Incontro lo stesso problema, dopo l'installazione macvimancora non funziona, finalmente ho trovato un modo per risolvere:

Prova a disinstallare prima tutto vim,

brew uninstall macvim

brew uninstall --force vim

e reinstalla macvim

brew install macvim --with-override-system-vim

Quindi è possibile utilizzare "*yo "+y, non è necessarioset clipboard=unnamed


-2

Command-c funziona per me sia in MacVim che nel terminale.


Il tradizionale copia e incolla non funziona con i buffer Vim e può rovinare completamente la formattazione. Ad esempio, copiare 15 righe di oggetti nidificati con Cmd + C e quindi incollare con Cmd + V farà perdere la comprensione del annidamento. Questo molto probabilmente dipende dalle tue impostazioni nel tuo .vimrc e può essere molto particolare
netpoetica
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.