Bir metin bloğunu sistem panosuna kopyalamanın bir yolu var, böylece başka bir programa yapıştırabilir miyim?
cpip, cpi{.
Bir metin bloğunu sistem panosuna kopyalamanın bir yolu var, böylece başka bir programa yapıştırabilir miyim?
cpip, cpi{.
Yanıtlar:
İçin X11 tabanlı sistemlerde (. Yani Linux ve diğer birçok UNIX benzeri sistemler) birbirinden bağımsız iki blokluk vardır:
^Cve yapıştırılır ^V(MS Windows gibi).OS X ve Windows sistemleri sadece bir panoya sahiptir.
X11 sistemleri için bu panoları sizin için senkronize eden birçok araç vardır; bu yüzden aynı görünüyorlarsa, bunlardan birini çalıştırıyor olabilirsiniz.
Vim'de bu panolara karşılık gelen iki özel kayıt var:
*PRIMARY kullanır; anımsatıcı: S katran olduğunu S (copy-on için seçilen ler seçtiklerini)+CLIPBOARD kullanır; mnemonic: CTRL PLUS C (ortak tuş bağlantısı için)Windows ve OS X'te +ve arasında hiçbir fark yoktur *, çünkü bu sistemler yalnızca tek bir panoya sahiptir ve her iki kayıt da aynı şeyi gösterir (hangisini kullandığınızın önemi yoktur).
Bu kayıtları herhangi bir kayıt olarak kullanabilirsiniz. Örneğin, İLKÖĞRETİM panosunu kullanarak *ile yve pkomutları:
"*yy"*pBunu daha uygun bir anahtar kelime olarak kullanabilirsiniz:
noremap <Leader>y "*y
noremap <Leader>p "*p
noremap <Leader>Y "+y
noremap <Leader>P "+p
Her zaman manuel olarak kullanmak yerine, sistemin panosu ile arayüzü "otomatik olarak" yapmak istiyorsanız, clipboarddeğişkeni ayarlayabilirsiniz :
unnamedkullanmak *(belirli üzerine, birincil)unnamedplusiçin ayarlayın +(CLIPBOARD, ^C)Şimdi, sadece kullanmak yyVim'in isimsiz kaydı yerine sistemin panosuna pgirecek ve sistemin panosunu yapıştıracak.
Ayrıca, bu kayıtlara tıpkı herhangi bir sicil gibi atayabilirsiniz let:
:let @+=42:let @*=42clipboardAyar (örneğin filtreleri hariç gibi) biraz daha seçenek vardır; ama bunlar temel. Tüm :help 'clipboard'hikaye için bakınız ;-)
GVim kullanıyorsanız, kullanırken kopyala seçim davranışını elde edebilirsiniz
:set guioptions+=a.
Bu, ancak X11 sistemleri (İLKÖĞRETİM için kopya) varsayılan olarak etkindir değil (Panonuzun geçersiz kılar herhangi bir metin seçmek gibi) MS Windows ve OSX üzerinde.
+clipboardmı?Vim, +clipboardherhangi birinin çalışması için özellik bayrağını gerektirir ; senin Vim kullanarak bu olup olmadığını kontrol edebilirsiniz :echo has('clipboard')(çıkış ise Vim içerisinden 0, bu kadar değil o eğer mevcut 1olduğunu,) ya çıktısını kontrol
vim --versioniçin +clipboard.
Çoğu Linux dağıtımı, varsayılan olarak sahip olmayan "minimum" bir Vim yapısıyla birlikte gelir +clipboard, ancak genellikle yükleyebilirsiniz:
vim-gtkveya yükleyin vim-gnome.vim-X11ve çalıştırın ( daha fazla bilgi ).vimxvimgvim(bu +clipboardnormalde mümkün olacaktır vim).Ayrıca kullanabilirsiniz xclip, xcopyya da xselmetni panoya kopyalamak için; çözümler için aşağıdaki sorulara bakın:
SS11 üzerinden X11 iletmeyi etkinleştirirseniz, uzak makinelerde de bir pano kullanabilirsiniz. Bu özellikle yukarıdaki ipuçlarında kullanışlıdır, çünkü xclipmasaüstünüzün panosuna erişmek için kullanabilirsiniz
. Parçaladığınız makinedeki Vim hala bu +clipboardözelliğe ihtiyaç duyacak .
Bu ForwardX11Trustedayar gerektirir ve yalnızca X11 oturumunuz üzerinde sunucuya neredeyse tam denetim sağladığı için yalnızca güvenilir sunucularla yapılmalıdır :
$ ssh -XY myhost
Bu ayarları kalıcı kılmak için ( -XYher seferinde ekleme yapmanıza gerek kalmaz ), aşağıdaki gibi bir şey yapabilirsiniz ~/.ssh/config:
# Do **NOT** set this globally; it gives the server complete control over
# your X11 session.
Host myhost
ForwardX11 yes
ForwardX11Trusted yes
Neovim pano desteğini yeniledi. Dahili arayüz çıkarıldı ve bu şekilde bir dış yardımcı çağrı sistemi ile değiştirildi xclip, xselya da
pbcopy/ ' pbpaste.
Bu yardımcı programları otomatik olarak almalı ve kullanmalıdır. OS X'te pbcopy
ve pbpastevarsayılan olarak erişilebilir olması gerekir, Linux'ta muhtemelen xclipen çok kullanabileceğiniz
sürüm olduğundan yüklemek istersiniz (aslında uyumsuz bayraklara sahip iki sürümü vardır . Bu gerçekten aptalca).xsel
Ayrıca :help clipboardNeovim'de bakınız .
"<Space>almak için tuşuna basmanız gerekebilir ". Bu durumda , kopyalamak için basmanız "<Space>+yveya basmanız gerekir "<Space>*y.
"adlandırılmış birçok kaydı seçebilecek olduğudur. "+sihir değil, sadece kayıt +. Yani, örneğin, aynı anda üç şeyi kopyalayıp tek tek yapabilirsiniz bunların her yapıştırmak istiyorsanız "1y, "2yve "3ydaha sonra "1p, "2pve "3p. Bu gerçekten güçlü ve neredeyse hiç bir editörde yoktur. Diğer ilginç bir kullanım da depolanmış makrolara bakmaktır. Örneğin, kayıt yaparsanız qq, ancak düzeltmeniz gerektiğini anlarsanız, şunları yapabilirsiniz: temp satırında "qp, düzeltmek ve "qd.
Diğer cevaplar, tamponunuzdaki metni sistem panosuna nasıl kopyalayacağınızı kapsar. Başka bir ortak çalışma başka metin kopyalamak için kayıt panoya. Örneğin, içine zaten bazı metinler eklediyseniz "(varsayılan kayıt), bu kaydı panoya yüklemek isteyebilirsiniz.
Bunu ile yapabilirsiniz :let:
let @+=@" - varsayılan kayıt defterini panoya kopyalarlet @*=@" - varsayılan kaydı X11 birincil seçimine ("fare panoya") kopyalarlet @+=@a- kayıt defterinden apanoya kopyalaBunun genel olarak kayıtlar için geçerli olduğuna dikkat edin: let @a=@bkayıt biçin kopyalar a.
Gönderen http://vim.wikia.com/wiki/Accessing_the_system_clipboard
set clipboard=unnamedplus
Bu, varsayılan Vim kaydını +sistem panosuna bağlı olan kayıt defterine değiştirir . Kimden :h clipboard-unnamedplus:
clipboard-unnamedplus
unnamedplus A variant of the "unnamed" flag which uses the
clipboard register '+' (quoteplus) instead of
register '*' for all yank, delete, change and put
operations which would normally go to the unnamed
register. When "unnamed" is also included to the
option, yank operations (but not delete, change or
put) will additionally copy the text into register
'*'.
Only available with the +X11 feature.
Availability can be checked with:
if has('unnamedplus')
:versionİçerdiği özellikler listesinde + X11'in görünüp görünmediğini görmek için Vim içinde kullanabilirsiniz . Ayrıca 'isimsiz' özelliğinin mevcut olup olmadığını kontrol edebilirsiniz. :if has('unnamedplus')⏎ echo 'yes'⏎ endif Eğer Linux'ta değilseniz, isimsiz yerine kullanmanız gerekir.
Onu destekleyen yapılarda, adlandırılmış kayıt *sistemi sistem panosudur. Vim'den sistem panosuna metin "*ykopyalamak için , görsel modu kullanarak metni seçebilir, ardından sistem panosuna kopyalamak için tuşuna basabilirsiniz .
Tersine, "*pmetni sistem panosundan Vim'e yapıştırmak için kullanın .
Gvim kullanmanızı öneririz ve şunu da ekleyin .vimrc:
source $VIMRUNTIME/mswin.vim
behave mswin
Bu destek sağlayan CtrlC, CtrlX, CtrlVWindows not defteri gibi.
Bu da örneğin, diğer bazı yaygın, Windows kısayollarını katacak unutmayın CtrlSiçin :w, CtrlAtüm seçmek vs.
Diğer her cevap, kayıtlarla ilgili tüm önemli hususları kapsamıştır. Kullandığım bir şeyi daha eklemek istiyorum.
Vim'de görsel olarak seçilen metni doğrudan panoya kopyalamanın bir yolu var . Sadece bunu vimrc dosyanıza koyun :
set guioptions+=a
Ve bununla görsel olarak bir metni ne zaman seçerseniz, panoya kopyalanacaktır. Bu konuda daha fazla bilgi için,:help guioptions
Btw, bu sadece gVim içindir.
guioptions+=aCarpetsmoker'in cevabında da bahsedilmiştir.
Ayrıca panoya belirli bir desen koymak için global bir komut kullanabilirsiniz. Bilginin bir dosyaya dağıldığı ve elle başa çıkmanın hatalara ve yorulmaya eğilimli olduğu durumlarda faydalı olabilir.
Önce bilgileri alacak olan kayıt defterini temizle
:let @a=""
Sonra deseni içeren tüm satırları kopyalayın.
:g/pattern/yank A
Sonunda bilgileri sistem panosuna aktarma (kopyalama)
:let @+=@a
panoya "içerik" içeren her satırı doğrudan panoya kopyalamaya çalışırsanız, pano yeni içerik ekleme özelliğine sahip olmadığından çalışmaz; bir kerede desen ve sonra panoya koyarak.
OBS: Kullanmadan önce yazıcının tutulması gerekir ve yazıcının UPPERCASE sürümünün kullanılması bize içerik eklememize izin verir, aksi halde çalışmaz.
Nasıl +clipboardişe yarayacağımı bulamıyorsanız, ki nedense yapamadım, o zaman bunu yapabilirsiniz.
Yapmam, sadece dosyanın bir bölümünü kopyalamak istediğiniz varsayarsak shift+ vgörsel moduna geçmek ve sadece ben kopyalamak istediğiniz satırları vurgulamak için. O zaman bunu yapıyorum.
# Linux Wayland
:'<,'>w !wl-copy
# Linux Xorg
:'<,'>w !xclip -selection clipboard
açıklama
'<,'> - bir aralık seçmek için görsel modu kullandığınız anlamına gelir (bunu yazmazsınız)w !{cmd}- menzili stdin'e yazın cmd, daha fazlası için:help w_cwl-copyve xclipmetinleri yayınlayabileceğiniz programlardır ve sistem panonuza eklerler.Ayrıca, bu sizin tarihinize girdiğinde, her şeyi bir daha yazmak zorunda değilsiniz. Sadece görsel mod ile seçin, yazın wsonra yukarı basın ve komut otomatik olarak tamamlanmalıdır. Ayrıca, görsel modu kullanmak zorunda değilsiniz. İstediğiniz aralığı ayarlayabilirsiniz.