Farklı vim örnekleri arasında veri nasıl kopyalanır?


41

Bir çizgiyi (ile yy) kopyalamak için ilk vim kullanırsam, başka bir terminalin vimine (with p) nasıl yapıştırabilirim ? Yapabilecek herhangi bir komut veya ayar var mı? Global sistem panosuna kopyalayıp yapıştırabilir miyim?

Aşağıdaki yolların mümkün olduğunu biliyorum ama daha basit bir yol istiyorum:

  1. İlk vimden çıkmak ve ikinci vim'i tekrar açmak istemiyorum.

  2. Ayrı bir pencere (ile :sp) kullanmak istemiyorum .

Yanıtlar:


49

Öncelikle panoya uygun bir vim sürümü yüklemelisiniz. Grafiksel olmayan ortamlara sahip kullanıcıları (örn. Ubuntu Server kullanıcıları) barındırmak vimve vim-tinybu özelliğe bağlamayın. Grafik olarak veya terminalinizde başlatılan GVim'i kurmak isteyeceksinizGVim'i yükleyin . GVim vimkomutu yerine geçecek .

Metni ilk boşluktan 'kesilen arabellek' içine aktarabilir ve ardından metni ikinci kenarlığa yapıştırabilirsiniz. Genel kesim arabelleğine kopyalamak için +kayıt defterini kullanın . "Anahtar Bir yank yaparken kullanım için kayıt belirtmek veya işlemi yapıştırmak için izin verir.

İlk boşlukta, kasaya bir satır yapıştırın +:

"+yy

daha sonra, +ikinci boşluktaki kayıt defterinden yapıştırmak için :

"+p

Mevcut kayıtlar hakkında daha fazla bilgi için, kontrol edin :help registers. "+pSisteminizdeki herhangi bir kaynaktan kopyalanan metni yapıştırmak için de kullanabilirsiniz .


Buna değer ne olursa olsun, GVim'i yüklerseniz (paket vim-gnome gibi bir şey olarak adlandırılabilir), menü girişleri sık sık size çağıracakları anahtar kısayolları verir.
zpletan

1
Gvim'i yüklemek istemiyorum. Bunu vim'de nasıl yaparım?
trusktr

1
@ trusktr aslında bu da çok işe yarar. Bu soru-cevap bölümünde, en azından 7.3.74 (Ubuntu 11.10 veya üstü anlamına gelir) vim'e ihtiyacınız olduğunu söylüyor.
lumbric

Bu bir şekilde tmux'un içinde başlayan bir vim varsa ve başka bir vim normalde dışarıda başladıysa, bu sorunun nasıl çözüleceğini bilme ihtimaliniz var mı?
Serup

"*yy, "*pDa çalışır. Eğer vurursan :reg, o yıldız
sicilini


9

Bill'in çözümünü seviyorum ve bir harita oluşturdum:

vmap <leader>y :w! /tmp/vitmp<CR>                                                                   
nmap <leader>p :r! cat /tmp/vitmp<CR>

Bunlardan ilki, görsel moddaki tüm / tmp / vitmp dizinlerini ve ikincisi de içeriği dosyadaki / tmp / vitmp dizininden kopyalar.


Basit basit çözümü - eski moda yolu - teşekkürler bu benim için yaptığını
Serup

Bunu .vimrc'ye ekledikten sonra Vim'de ne yazmam gerekiyor?
Vitaly Zdanevich

Vim'i ayarlamanız gerekir, böylece kopyalamak için y'yi takip eden lider anahtarını, kopyalamak için lider anahtarı ve ardından yapıştırmak için p'yi kullanabilirsiniz.
Samir Sadek

1
Bu işe yarıyor. kullanarak "*ysunucularda kırılmış gibi görünüyor
ospider 21:17

Aman. Docker'da tmux'ta vim kullanarak bu konuda saatlerce aradım. Zaten adsız / adsız artı olan normal vimrc, limandaki tmux'ta vim'de çalışmadı. İnternette bulduğum hiçbir şey de yoktu. Ancak BU TÜM makinelerde çalışıyor gibi görünüyor! Docker'da, Mac'te ve yerel olarak Arch'ta. Teşekkür ederim!!
Tommy,

5

Çeşitli Unix ailesi makineleri arasında dolaşıyorum ve aşağıdaki sıranın her zaman benim için çalıştığını gördüm:

Kaynak vi oturumunda:

  1. ESC m aİlk satırı işaretlemek için kullanın
  2. ESC m bSon satırı işaretlemek için kullanın
  3. :'a,'b w! xferKazı kazan dosyasına dosya yazmak için kullanın

Hedef oturumda:

  1. İmleci ekleme satırına taşı
  2. ESC :r xferMetinde okumak için kullanın

Güzel olmadığını biliyorum ama her zaman benim için çalışıyor!


2

Bu aslında oldukça basit: vimpanoya destekleyen bir sürümünü yükleyin . yoksa vim, aşağıdakilerden birini alın:

sudo apt-get install vim-athena
sudo apt-get install vim-gnome
sudo apt-get install vim-gtk

Kurulduktan sonra sadece çalıştırın vim. Ayrıca, panonun çalıştırılarak etkinleştirildiğini de doğrulayabilirsiniz:

 vim --version|grep clipboard

görmelisin +xterm_clipboard.


Bu cevap, Vim sürümünüzde pano özelliği etkinleştirilmişse, sorunun özüne ulaşır mı? Olmazsa, bu diğer cevaplardan hiçbiri fark yaratmayacaktır. "Vim --version" yapın ve "+ clipboard" arayın. Bence + xterm_clipboard yalnızca X11 panoya destek istiyorsa uygulanır ancak Ubuntu'daysanız bunu da istersiniz.
Ray

2

Muhtemelen hepiniz bu cevaptan nefret edersiniz. Eskiden 80'lerde çeşitli Unix bilgisayarlarda çalışmıştım ve Linux'ta oynamayı başarabildim.

Kesmek ve yapıştırmak için olan çözümüm, Windows kutuma erişmek için Windows üzerinde çalışan Macun kullanıyor.

Macun, penceresindeki herhangi bir txt'yi sadece vurgulayarak kopyalamanıza izin verir. daha sonra başka bir Macun penceresine / oturumuna gidip yapıştırmak için sağ tıklayabilirsiniz.

daha kolay olamazdı. ve şimdi vim var. benim günümde olmayanlar için çok kötü, emaks mafyası savunmama yardım ederdi.


1

Tam olarak yy kullanmıyor, ancak fareyle kopyalamak istediğiniz metni seçerseniz (bazen Shift tuşunu kullanmanız gerekebilir), diğer terminal penceresine geçin ve [orta klik] veya Shift- [orta tıklayın] orada, metin mevcut ekleme noktanıza eklenecektir.

Bu sadece vim için değil, çoğu komut satırı ve GUI programları için de geçerlidir.

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.