Terminaller arasında nasıl kopyalanır?


11

Linux sistemini kullanıyorum. İki terminalde iki vim açılır. Şimdi A'dan B'ye metin kopyalamak istiyorum. Bunu yapmanın bir yolu A'da metin seçmek, kopyalamak için fareyi kullanmak, sonra B'ye geçmek, ekleme modunda komut <c-r>+metni yapıştıracaktır.

Fare kullanmadan yapmak için yine de var mı? gibi "+yyA'da, zaman anahtarı B, o<c-r>+? Boşuna birkaç kombinasyon keşfettim. Ve "terminaller arasında kopyala" yı aradım, ama hiçbir şey bulamadım.

@statox kullanıcısı görsel modu kullanarak bir çözüm önerir, yani v$"+yA'ya, B'ye geçtiğinde o<c-r>+.

V moduna girmeden A'daki metni kopyalamanın basit bir yolu var mı? Kuşkusuz v-moduna girmek çok fazla önemli grev içermez, sadece daha iyi bir yol olup olmadığını merak edin. Örneğin. imleç bir satırın ortasındaysa yy, tüm satırı kopyalar (kaydetmek için "), 0v$yaynı şeyi ekstra tuş vuruşu ile yapar.

Veya, sorum daha az tuş vuruşları ile herhangi bir şekilde olup olmadığını indirgenebilir 0v$"+yiçin kopya kullanabilir miyim böyle <alt-tab>o<c-r>+yapıştırın.


Kesin sorunun nedir? Çözüm var gibi görünüyor: görsel mod ile metin seçin (neden fareyi kullanasın ki?) Pano kaydına "+ykoyun ve diğer vim örneğinde pano kaydını koyun "+p. Veya çoğaltmak bu ?
statox

Bir şeyleri çekmek için görsel moda girmek zorunda değilsiniz. Sen takip edebilirsiniz ybir hareket ile ( :help motion.txt) ya da bir nesnenin ( :help object-select). Vim örneklerini sık sık sorar ve yapıştırırsanız, bu ayarın clipboarddahil edilmesini unnamedveya unnamedplusyararlı olmasını sağlayabilirsiniz . Bkz :help 'clipboard'. Daha sonra örnekler arasında kopyalama sadece işe yaramalıdır.
garyjohn

1
Yorumumun amacı görsel mod değildi, aslında probleminizi anlamakta sorun yaşıyorum: ilk başta bir terminalden diğerine bazı metin kopyalamanın gerçek olduğunu düşündüm, şimdi bu kadar az tuşa basmak gibi görünüyor Pano kaydına girmek mümkün. İkinci durum buysa, Garyjohn'un yorumu önemlidir.
statox

1
0v$ile aynıdır V. Ve onun için bir eşleme yapmak kolaydır "+y: :nnoremap <Leader>y "+y. Böylece azalır V\y.
Martin Tournoij

@Carpetsmoker çözümünüz iyi. Yanıt bölgesine yapıştırırsanız en uygun çözüm olarak almak istiyorum. Anahtar harita olmadan, sorumu kopyalamak için yapabileceğimiz en iyi şey V"+y, 4 tuş vuruşudur.
user3813057

Yanıtlar:


9

Vim'in pano desteği ile oluşturulduğunu kontrol edebilirsiniz:

:echo has('clipboard')

Çıktı ise 1, hedefinize ulaşmak için aşağıdakiler yeterli olmalıdır:

"*y    in source Vim
"*p    in destination Vim

Pano kaydını ve varsayılan kaydı bu ayarla senkronize ederek çok daha sorunsuz hale getirebilirsiniz vimrc:

set clipboard^=unnamed

Çıkışı :echo has('clipboard')ise 0, uygun bir Vim vim-gtkveya vim-gnome(paketin adı dağıtımdan dağıtıma farklılık gösterebilir) kurmayı düşünün .


1

Sorunuzda daha önce bahsettiğiniz çözümün doğru olduğunu düşünüyorum. Tuş vuruşlarının sayısını azaltmak istiyorsanız, bir harita oluşturabilirsiniz;

vmap <leader>y "+y
vmap <leader>d "+d
nmap <leader>p "+p
nmap <leader>P "+P
vmap <leader>p "+p
vmap <leader>P "+P

Buradaki ikinci girişe bakın .


1

@ Romainl'in cevabını genişletmek için (pano desteği ile) sistem genelinde pano ile paylaşılan kayıtları kullanabilirsiniz.

"+y    To yank/copy from a vim-terminal
"+p    To paste in destination vim-terminal

"*y    To yank/copy from a vim-terminal
"*p    To paste in destination vim-terminal

Bu komutları yürüterek, öyle y anking / / kopyalama kayıt seçilen içerik depolama ve p asting bunları hedefe um-terminali. Bu iki özel kayıt +ve *sistem geniş pano (ve dolayısıyla web tarayıcısı, gedit vb gibi diğer birçok program) ile paylaşılır. Kayıt +, kopyala / yapıştır arabelleği *ile ilişkilidir ve seçim arabelleğiyle (örneğin Ubuntu'daki bir metin alanına orta tıklamayla seçimin bir kopyasını ekleyen) ve ctrl + v( ctrl + shift + vgnome terminalinde) kullanılarak yapıştırılabilir .


1

1) Fedora'da aşağıdaki kurulumu kullanıyorum:

dnf install vim-X11

vim-X11 pano desteği ile geliyor - belki diğer dağıtımlarda da benzerdir.

2) .bashrc dosyamda bir diğer ad ayarlayın

alias vim="vimx"

3) .vimrc içinde:

set clipboard=unnamedplus

Şimdi Vim'deki normal yank sistem panosuna gider ve vim dışındaki her Ctrl-C vim'e yapıştırılabilir.


0

Mac (OSX) kullanıyorsanız, bpcopy kurabilirsiniz ( daha fazla bilgi için brew install pbcopy kullanarak http://brew.sh/ adresine bakın). Daha sonra aşağıdaki (düz form komut) çalıştırmak olmayan fare dokunmadan:

MİSAL:

1) TERMİNAL # 001'de :

cat /tmp/stuff.txt | pbcopy

2) OSX'in terminal uygulamasındaki yerleşik kısayol tuşlarını kullanarak # 002 terminaline (fare kullanmadan) geçebilirsiniz: command+i

3) TERMINAL # 002'de : Yeni dosyayı vim'de açın

vi newfile

4) içinde vim koyun ekleme modunda ilei

5) command+ ile panodaki metni ekleyin V(Mac'te panodan yapıştırmak için)

6) Günün geri kalanının tadını çıkarın!

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.