Bir tmux bölmesinden diğerine metin kopyalama (vim kullanarak)


133

Her birinde bir tmux bölmesinde vim'de açılan iki dosya var. Kopyalamak istiyorum Diyelim ki bir dosyadan diğerine 10 satır.

Bunu fareyi Copy-> kullanmadan nasıl başarabilirim Paste?


2
Tmux'u dahil edebilirsiniz , ancak genellikle daha basit yollar vardır. Her iki Vim örneği de aynı (yerel) makinede mi? Genellikle, bunun için geçici bir dosya kullanırdım (örneğin, satırları görsel olarak seçin :w /tmp/lines, ardından :r /tmp/linesdiğer durumda). Veya Vim'iniz sistem panonuzla nasıl konuşulacağını biliyorsa , geçici dosyayı önlemek için +veya *kayıtlarını kullanabilirsiniz.
Chris Johnsen

Yanıtlar:


193

Tmux kısayollarını kullanmanız gerekecek. Tmux komut kısayolunuzun varsayılan olduğu varsayılırsa: Ctrl+ b, sonra:

  1. Ctrl+ b, [Kopyala (?) Modunu girin.

  2. Vurgulamak için metnin başına / sonuna gidin.

  3. Ctrlspace

    Metni vurgulamaya başlayın (Arch Linux'ta). Tmux'u OSX ve diğer Linux'lar üzerindeki kaynaktan derlediğimde, Spacegenellikle kendi başına çalışıyor. Seçilen metin renkleri değiştirir, böylece komutun işe yarayıp yaramadığını bilirsiniz.

  4. Kopyalamak için metnin ters ucuna gidin.

  5. Alt+ wSeçilen metni tmux panosuna kopyalar. (Mac’te Esc+ kullanın w.)

  6. İmleci zıt tmux bölmesine veya tamamen farklı bir tmux penceresine getirin. İmleci, kopyaladığınız metni yapıştırmak istediğiniz yere getirin.

  7. Ctrl+ b, ]Tmux panosundan kopyalanan metni yapıştırın.

tmux komutları özel klavye kısayollarına eşleme konusunda oldukça iyidir.

Bkz Ctrl+ b, ?set klavye kısayollarının tam listesi için.


4
Teşekkürler. Sadece bir sidenode: Alt + w Mac'de çalışmadı. Alt varsayılan olarak Esc ile eşlendi. Dolayısıyla Esc + w.
Karan

11
Eğer kullanırsanız screen: kısayolları Ctrl + A [(kopya-moduna girmek), Space(vurgulayarak başlamak), Enter(uç vurgulanması), Ctrl + A ](macun).
jfs

11
"Enter" un benim için işe yaradığı, alt + w ise işe yaramaz.
Elijah Lynn

3
Awhan.wordpress.com/2010/06/20/copy-paste-in-tmux adresinde belirtildiği gibi , vi anahtar bağlarınız varsa, 5. adım Enteranahtar ile değiştirilmelidir .
Ying Xiong

3
Bir metin editörüne kopyalayıp yapıştırmam gerekirse ne olur? Bazı nedenlerden dolayı, seçili metni, metni seçtikten sonra 'enter' tuşuna bastıktan sonra bile görmüyor gibi görünüyor.
uday

33

Ne yazık ki, henüz Alex Leach'ın cevabına yorum ekleyemiyorum, bu yüzden Mac OS X kullanıcıları için bir ek ekleyeceğim:

  1. Enter Seçili metni kopyalar

1
Teşekkürler! Ben Ubuntu Xenial'dayım, byobu/ tmuxvarsayılan ayarları kullanarak , bu işe yaradı, Alt + w yapmadı.
Andrea Zonca

1
Bu, OS X Yosemite'de tmux 2.0 ile çalışmıyor, alt + w ve ne esc + w :(
weberc2'de 06.06.2016

Zoc terminalini kullanarak Windows'ta da benim için çalışıyor.
jdhao

15

MacOS'ta vim ve tmux kullanıyorsanız (macOS 10.12.2, tmux 2.3'te test edilmiştir):

(Tmux’un önek tuş birleşiminin bu olduğunu varsayalım. Önek varsayılan prefixolarak ctrl+ dır b.)

  • Kopya:
    1. Kopyalama moduna girmek için prefix+ düğmesine basın [.
    2. Metin seçiminin başına / sonuna gitmek için ok tuşlarını kullanın.
    3. Basın ctrl+ space(Eğer kurduysanız ctrl+ spaceön ek olarak, basın ctrl+ space+ spaceyerine)
    4. Seçimin diğer tarafına geçmek için ok tuşlarını kullanın.
    5. ctrl+ Tuşlarına basın w.
  • Yapıştırmak:
    1. Ekleme modunda prefix+ tuşuna basın ].

8

CentOS sunucuma bir ZOC terminal ssh istemcisi kullanarak bir Windows makinesinde bağlıyorum . İşte benim için ne işe yarıyor:

  • Kopyalama moduna girin: <prefix>+[
  • Kopyalamayı başlat: <Space>
  • Metni kopyala: <Enter>
  • Metin yapıştır: <prefix>+]

2

Sistem klibi kartını normal y ve p yerine "* y ve" * p ile kullanabilirsiniz.


1
Sistem panosunu kullanmak için kullanmak zorunda "+2yy- X11 panoya iki satır kopyala - X11 panoya "+ddsatır kesmek - X11 panoya "+pyapıştırın
Patryk

Bu komutları kullanmadan önce bir şey yazmam gerekir mi?
Thomas Ahle

@ThomasAhle, hayır .. tam anlamıyla çift tırnak ("), ardından artı (+) ve ardından 2ys (y). Normal modda olduğunuzdan emin olun. Normal moddaysanız, kullanabilmeniz gerekir h,j,k,l. ubuntu VM'mde bazen de görüyorum, "+" kaydı bilinmeyen bir nedenden dolayı ortadan kayboluyor . +:reg"+
Kaydın bulunduğunu doğrulamak

Evet, işte bu, cevap bu. Diğerlerinden çok daha basit (tmux kopyala / yapıştır kullanarak) ve bu satır numaralarını karıştırmaz. Standart yve ile ptekrar "+yve tekrar kaybolursa, bu herhangi bir soruna yol açar "+pmı?
ryan

1

Eğer varsa vimaçık, onun daha iyi vim kopya metin kopyalamak için yapıştırma kullanmak.

Tmux kopya yapıştırması işe yarayacaktır, ancak birkaç dezavantajı vardır.

İlk olarak, birden çok metin satırını kopyalarken, birden çok satır seçmeniz gerekir. Smokin kopyala yapıştırması tipik olarak vimsatır numaralarına sahip olduğunu veya vim oluğunda işaretler bulunduğunu (göreli sayılar / mutlak sayılar gibi) anlamıyor . Sonuç olarak, bunları da kopyalayacaktır.

İkincisi, metnin belirli bir dile özgü biçimlendirmesi varsa ve doğrudan tmux to vim kullanarak yapıştırmayı kopyalamayı denerseniz, biçimlendirmeyi bozacağını öğrendim. Bu kullanılarak önlenebilir set paste!. Ancak, bu çok daha fazla çalışma gerektirir.

"+yKopyalamak ve "+pyapıştırmak için kullanın

Vimdoğal olarak vim arabelleği ve sistem panosu arasında yapıştırmayı kopyalamak için "+yveya kullanarak bir yöntem sağlar "*y. Sonra "+pveya tuşlarını kullanarak yapıştırın "*p. Bu, bağıl sayıların olukta veya vim ile ilgili olmayan diğer rasgele işaretlerde kopyalanmasını önler


0

Vim kullanımı için birkaç seçenek çünkü tmux kısayol sırası biraz uzun ve hatırlamak zor

Cevaplar gibi yukarıda kullanabileceğiniz söyledi "+yve "*ysonra kopyalayıp etmek "+pve "*pyapıştırmak için sırasıyla. Eğer vim'in panoyu varsayılan olarak kullanmasını istiyorsanız sadece y/pdoğrudan kullanabilirsiniz .

set clipboard=unamed "sets the default copy register to be *
set clipboard=unamedplus "sets the default copy register to be +

pano komutu için kaynak: https://vi.stackexchange.com/questions/84/how-can-i-copy-text-to-the-system-clipboard-from-vim

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.