Bir seçimi OS X panosuna kopyalama


225

Vim'de seçilmiş bir alanım var. OS X panosuna nasıl kopyalayabilirim?

(OS X panosuna bir kanaldan yazılabilir /usr/bin/pbcopy)


4
sadece görsel seçim, o zaman "+y.
zx1986

2
Vim OSX ile gemi olduğunu gelmez var +clipboardya +xterm-clipboard. Bunu ile doğrulayabilirsiniz vim --version | grep clipboard. Bunu ile çözmek mümkündür brew install vim --with-client-server.
LondonRob

1
Ya da, sisteminize bağlanmış ~/binve daha sonra ~/binnormal sistem tarafından yüklenmiş vim ve eşanlamlılar öncesinde yolunuza eklenebilen bir komut satırı sürümü sunan MacVim'i kullanın .
Tin Man

@ Zx1986'nın yazdıklarına dayanarak, üç şey yaptım: 1) Vi / vim'i MacVim'in terminal moduna takma amacıyla ~ / .bashrc'ye aşağıdakileri ekledim: alias vi='mvim -v'2) Ctrl + c (Cmd + c değil): vnoremap <C-c> "+y3) ^cTerminal Maestro'da tuş sırasını (Ctrl + C) yazmak için yapılandırılmış Klavye Maestro (benim durumumda iTerm2) Bu, metni OSX panosuna kopyalamak için Cmd + c'yi kullanmayı mümkün kılar böylece diğer OSX uygulamalarına yapıştırılabilir.
Neil Griffin

Yanıtlar:


79

Kullandığım Vim sürümüne bağlı olarak +panoya erişmek için kaydı kullanabilirim .

" Mac OS X pano paylaşımı " sizin için de işe yarayan bazı fikirlere sahip olabilir.


5
+ Pano olmadan derlenmiş
VIM'li kişiler

ÇOK ÖNEMLİ DETAY !!! Vim sürüm 7.3 varsa, bu sizin için işe yaramayabilir, ancak Vim sürüm 7.4 varsa (ve bazen "+ y" nin tamamını yapmak zorunda bile değilsiniz). yazı> vim uçbirim ve sonra sürüm numarası başlattığınız
zamandır


1
"+OS X pencereleri sistemi olarak X11 kullanmaz iken, (Eğer + X11 desteği ile vim inşa OS X bir X11 sunucu XQuartz kuracaktır hangi sürece) kayıt sadece X11 için vardır.
nn0p

Her ikisi de - vimve macvim+ panosu varsa ne yapmalı . Ve clipboard=unnamedeklendi ~/.vimrc? Gerçek acıya benziyor, tüm geçici çözümleri denedi ve şu anda boşlukları kullanmak zorundayım, bildiğim zaman, küresel pano kullanacağım :)
Nikolay Fominyh

240

İçin MacVim ve Windows GVIM, sadece aşağıdakileri ekleyin ~/.vimrc:

set clipboard=unnamed

Gibi Şimdi tüm işlemler yy, Dve Ppanoya ile çalışmak. Gerek onları öneki için "*ya "+.


2
Bütün sabah y, d ve P komutlarını MacVim'in sizin için sağladığı ⌘-C ve ⌘-V'den nasıl ayıracağımı anladım ve sonunda bununla karşılaştım. Tabii ki, bir vim çocukken bunu vimrc'ime ekledim ve o zamandan beri beni hayal kırıklığına uğrattı.
Jonathan Dumaine

2
MacVim'de yeni olanlar için, işaretli terminalden -v( mvim -v) kullanılabilir. Vim ve mvim ile benim takma adım var.
pk-nb

3
Yukarıdaki yorumunda @VincentG tarafından belirtildiği gibi, bu gerçekten Vim'in terminal tabanlı sürümleriyle çalışır, ancak terminalde tmux kullananların burada ayrıntılı çözümlerden birini izlemesi gerekecektir: stackoverflow.com/a/11421329/456584
user456584

3
Bu kabul cevabı olmalı - uzun olduğunca :echo has("clipboard")diyor 1MacVim için durum olan ve bir var vidiğer adı olduğunu çalışır mvim -vyerine
jdsumsion

1
@Joseph, eğer :versiongösteriyorsa -clipboardVim'in yapısı pano özelliğini desteklemez. Bir GUI uygulaması olan MacVim'den bahsediyordum.
George V. Reilly

136

Pano etkinse, seçilen bir bölgeyi vurarak panoya kopyalayabilirsiniz. "*y

Etkinleştirilip etkinleştirilmediğini görmek vim --versioniçin çalıştırın ve +clipboardveya öğesini arayın -clipboard. Örneğin, 10.5.6 kutumda varsayılan olarak etkin değil:

hangi vim yüzdesi
/ Usr / bin / vim
% vim - sürüm
VIM - Vi IMproved 7.2 (2008 9 Ağustos, derlenen 11 Kas 2008 17:20:43)
Birlikte verilen yamalar: 1-22
Derleyen _www@b77.apple.com
GUI'siz normal sürüm.  Dahil olan özellikler (+) veya değil (-): 
... 
-clientserver -clipboard + cmdline_compl + cmdline_hist + cmdline_info + yorumlar
 ...

Eğer derlenmiş +clipboardolsaydı "*, sistem panosuna erişmek için kaydı kullanabilirdim .

Ben indirilen 7.2 kaynağını ve (kolay olarak derlenmiş tar xjf vim-7.2.tar.bz && cd vim72 && ./configure && make && sudo make install) ve pano etkinleştirildi:

hangi vim yüzdesi
/ Usr / local / bin / vim
% vim - sürüm
VIM - Vi IMproved 7.2 (2008 9 Ağustos, derleme 24 Mar 2009 17:31:52)
Derleyen rampion@Myrrhy.local
GTK2 GUI ile normal sürüm.  Dahil olan özellikler (+) veya değil (-): 
... 
+ clienterver + clipboard + cmdline_compl + cmdline_hist + cmdline_info + yorumlar
 ...

Ancak, derledikten sonra bile, Terminal.app, sadece X11.app vim çalıştırırken panoya kopyalayamadım.


3
+ Pano ile en son sürümü derledim ve şimdi yerel pano * kayıt olarak onunla çalışır. Ayrıca, .vimrc dosyanızda "set clipboard = unnamed" ayarı sistem panosunu tipik hale getirir. Aslında github.com/adamv/homebrew/blob/duplicates/Library/Formula/… bu homebrew formülünü derlemek ve derlemek için kullandım.
rado

Hmm, Vim'in neden Homebrew'umda görünmediğinden emin değilim, ancak / usr / local / Library / Formula içine kopyaladım, brew install vim'i çalıştırdım ve "ld: library -lruby-static için bulunamadı ". RVM kullanıyorum ve 1.8.7 idi. 1.9.2'ye geçiş yaptığımda hata "ld: -lruby.1.9.1 için kütüphane bulunamadı" hatasıydı. Çözüm, ilk önce rvm kullanım sistemini çalıştırarak Ruby sistemini kullanmaktı.
justsee

9
Biraz daha kolay kelime "pano" ne arama genellikle daha uzun bir özellik listesi: yapmak :echo has("clipboard"). 0 gösteriyorsa, derlenmez. 1 gösteriyorsa, olur.
ravron

3
Ayrıca homebrew kullanarak pano ile derlenmiş vim alabilirsiniz: brew install vim
Anton Koval '

4
Dikkat! Bir +clipboardsürümüm vardı , ancak yüklü --with-client-serverolan +x11ve macOS üzerinde terminal vim içinde x11 kopyalamaya / yapıştırmaya çalışırken işe yaramadı :) olmadan yeniden yüklemek zorunda kaldı +clientserver.
jacwah

96

Metni görsel olarak seçebilir ve yazabilirsiniz :w !pbcopy<CR>

Veya ~/.vimrcdosyanıza aşağıdaki anahtar eşlemeleri ekleyebilirsiniz . Görsel moddaki metni işletim sisteminin panosuna keser / kopyalar.

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

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


6
Komut satırından 1-10 satırlarını panoya kopyalamak için 1,10w! Pbcopy gibi bir metin de seçebilirsiniz. W, orijinal metni yerinde tutmak için sonraki boşlukla birlikte önemlidir. Yukarıdaki kaynak bağlantısı kesildi, ancak burada bir tartışma var: vim.wikia.com/wiki/Mac_OS_X_clipboard_sharing
sdjuan

Bunu tmux'da çalıştırmak için bunu takip ettim: superuser.com/questions/231130/…
Wex

@Wex Bağlantı düzeltildi
SnoringFrog

2
Bunun yalnızca tüm satırları seçmek için işe yaradığını unutmayın. Bir satırın yalnızca bir kısmını seçmek istiyorsanız işe yaramıyor gibi görünüyor. stackoverflow.com/questions/16196826/…
Kevin Wheeler

1
@Kevin Wheeler: Linewise olmayan kopya noremap <silent> <leader> y: <CR>: aşağıdaki @ a = @ "\ | execute" normal! vgvy "\ | let res = system (" pbcopy ", @") \ | let @ "= @ a <CR>
dragonxlwang

38

"*herhangi bir yank komutundan önce çift ​​tırnak işareti ( ) sonuçları kopyalama arabelleğine çekecektir. Bu Windows ve Linux için de geçerlidir.


11
sadece bir çan karakteri
yatıyor

3
X11'de Vim'in "* PRIMARY," + CLIPBOARD ve SECONDARY adlı bir kayıt almaz. (Kimse onu kullanmaz ...)
ephemient

Mükemmel bir şekilde. Özellikle blok seçimi (ctrl-v) ile gerçekten yardımcı olur.
Sonique

Soru özellikle Mac OS X ile ilgili olduğundan, Mac için "çok" işe yaradığını eklemek gereksizdir.
Paul Tomblin

@PaulTomblin tamam, yeterince adil :-)
apprenticeDev

26

Macos 10.8'de vim ile derlenir, -clipboardböylece kullanmak "*yiçin yeniden derlemeniz gerekir. Neyse ki brew install vimsizin için kolayca yeni bir sürüm derlemek olacaktır ve olacak +clipboard.


1
Akılda tutulması gereken bir şey - oldukça tuhaf, brew install vimgüncellemelerle vive değil vim . Bu yüzden homebrew ile vim yükledikten sonra işleri farklı bir şekilde takma adı gerekebilir.
shridharama

18

Metni görsel olarak seçin ve yazın:

ggVG
!tee >(pbcopy)

Hangi daha güzel bulabilirsiniz:

ggVG
:w !pbcopy

Bir istem yanıp sönmediği için: "ENTER tuşuna basın veya devam etmek için command yazın"


Hala tüm satırı kopyalar
Karl Pokus


11

MacPorts kullanıyorsanız, VIM'inizi pano desteği içerecek şekilde yükseltebilirsiniz:

port install vim +x +x11

Şimdi "+, metninizi doğrudan Mac panonuza çekmek için kaydı kullanın. Tıkır tıkır çalışıyor.


1
Sadece ihtiyacım olan buydu. Sadece $ PATH doğru olduğundan emin olmak gerekir ve Apple vim değil / opt / local / bin / vim alıyorsunuz.
Gareth

8

MacOS X kullanıyorsanız:

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

Ardından, .vimrc'nize ekleyin:

set clipboard=unnamed

Artık tüm içeriğin panonuza kopyalanması için vim ve yapmanız gerekiyor :%y.


içerik çekiliyor ama VIM dışına yapıştıramıyorum.
prayagupd

5

Homebrew'un vim'ini kullanın :brew install vim

Mac (10.10.3'ten itibaren Yosemite) , bayrağı etkin olmayan bir sistem vimiyle önceden yüklenmiş olarak gelir clipboard.

Vim'i kendiniz için derleyebilir ve bu bayrağı etkinleştirebilir veya Homebrew'un vim'ini düzgün bir şekilde ayarlanmış kullanabilirsiniz.

Bunu kendiniz görmek için stok sistemi vim'sini /usr/bin/vim --version

Şuna benzer bir şey göreceksiniz:

$ /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 ...

Not edin -clipboard

Homebrew vim ile bunun yerine

$ /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 ...

Not edin +clipboard


1
O zaman kopya nasıl yapılır?
Donmuş Alev

demlemek vim sürümü ile istediğimi yapabildim: Vo zaman kullanarak hatları vurguladı :w !pbcopyve işe yaradı
davidpm4

5

Vim'iniz panolarla derlenmemişse, seçilen metni tüm satırlar yerine kopyalamak istiyorsunuz, MacVim veya başka bir GUI yüklemek istemezsiniz, en basit çözüm bu satırı .vimrc'nize eklemektir:

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

Kullanmak için, kopyalamak istediğiniz metni görsel olarak seçin ve ardından Control- C. Bu satırın tam bir açıklamasını istiyorsanız " vim'de panoya kopyalama " bölümünü okuyun .


ama aynı zamanda metin kopyalandıktan sonra bana 2 siyah çizgi veriyor
Nic Wanavit

4

Kullandım:

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

Gerçekten iyi çalıştı.


3

Bir Mac'deyken standart OS tuşlarını kullanarak panoya kolayca erişmek için MacVim'i kullanabilirsiniz .

Ayrıca normal Vim ile tamamen geriye dönük uyumludur, bu yüzden ayrı bir tane bile olmak zorunda değilim .vimrc.


MacVim kullanıyorum ve sonra ~/binvarsayılanları geçersiz kılmak için komut satırı vim eşanlamlılarımı symlinked .
Tin Man

2

Komut-C? Bu en azından fare ile seçilen metin için Terminal.app içinden başlatılan vim için çalışır.


6
iyi naif cevap, ancak vim'de dikey olarak bölünmüş alt pencereler kullanıyorsanız (aslında aklımda olan durum) veya sonuç bir terminal ekranından daha uzunsa
çıktıyı keser

3
Haklısın, bu davaları düşünmedim. Cevabımı, başkalarının benzer yararlı olmayan cevaplar vermesini önlemek için bırakıyorum.
mouviciel


2

Benim asıl sorunum Vim'in varsayılan OSX versiyonuydu. Homebrew ile yükleme eklendi+clipboard kurulum yapıya .

Şunları kontrol edebilirsiniz:

vim --version

-clipboardya da diyor mu diye +clipboard.


2

+clipboardVim kurulumunuzda seçeneğiniz varsa (kontrol edebilirsiniz :version) ve görsel modda yapabilirsiniz Bunu yapabilirsiniz "+y, seçim +panodaki arabelleğe çekilecektir .

Benim vimrc aşağıdaki haritaları ekledim ve iyi çalışıyor.

vmap <leader>y "+y : Bu ile panoya görsel modda kopyalamak için leader keytakip edebilirim y.

nmap <leader>p "+p : Bununla leader keytakip edebilirimp normal modda panodan yapıştırmak .

PD: Ubuntu'da +clipboardseçeneği almak için vim-gtk'yi kurmak zorunda kaldım .


0

mac üzerinde başka bir şey çalışıyor gibi görünüyor - fare ile seçin, sağ tıklayın kopya seçin. uff


0

Şu anda OS X 10.9 kullanıyorum ve + xterm_clipboard ile vim derleme çabalarım bana hiçbir şey getirmedi. Yani benim şimdiki çözüm kullanmaktır Terminal modda MacVim seçeneğiyle set clipboard=unnamedbenim ~ / .vimrc dosyasında. Benim için mükemmel çalışıyor.


0

Benim için ne işe yaradı .vimrc

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

0

Mac için - Holding optiontuşunu ve ardından ctrl Vmetni seçerken hile yaptı.


0

Shift cmd c - kopyalama modunu ayarlama Fareyi sürükleyin, metni seçin, seçilen metni kopyalamak için cmd c Cmd v yapıştırın


-1

Ubuntu kullanıcıları için, panoyu kullanmak üzere almak istediğiniz paket vim doludur. Diğer paketler (vim-tiny, vim) pano özelliğini içermez.


vim-full artık bir ubuntu paket adı değil. varsayılan vim paketi (7.3.154), -clipboard da dahil olmak üzere çok az özelliğe sahiptir. Vim-gtk veya vim-nox yüklendiğinde + pano sürümü sağlanır.
Haziran'da spazm

-1

'+' Veya '*' kaydını kullanarak panoya kopyalanıyor çalışmıyor mu?

Sebep: vim sürümünüz pano desteği olmadan derlendi. Vim - konsolda sürüm yazın ve -xterm_clipboard'u göreceksiniz . Vi'yi gui paketleriyle kurmak bu sorunu çözer. Ubuntu'da bunu kabuk üzerine yazarak yapabilirsiniz:

sudo apt-get install vim-gui-ortak

Şimdi tekrar konsolda vim --version yapın. Büyük olasılıkla, şimdi + xterm_clipboard görürsünüz !

Böylece, register + kullanarak herhangi bir şeyi panoya kopyalayabilirsiniz (mevcut satırı panoya kopyalamak için "+ yy gibi)


-1

Kurulumdan sonra aynı sorunu karşılıyorum macvim hala çalışmıyorsa, sonunda çözmenin bir yolunu buldum:

Önce tüm vim'leri kaldırmayı deneyin,

brew uninstall macvim

brew uninstall --force vim

macvim'i yeniden yükle

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

Sonra kullanabilir "*yveya "+ygerekmez,set clipboard=unnamed


-2

Command-c benim için hem MacVim'de hem de terminalde çalışıyor.


Geleneksel kopyalama ve yapıştırma Vim tamponları ile çalışmaz ve biçimlendirmenizi tamamen bozabilir. Örneğin, Cmd + C ile 15 satır iç içe nesne kopyalayıp Cmd + V ile yapıştırma, iç içe yerleştirme anlayışını kaybetmesine neden olur. Bu büyük olasılıkla .vimrc ayarlarınıza bağlıdır ve çok özel olabilir
netpoetica
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.