Vi editöründe yapıştırma içeriği nasıl kopyalanır


165

İçeriği bir vi editör belgesine yapıştırmak için Ctrl+ kullanmaya çalıştım V, ancak Ctrl+ Vbir yapıştırma olarak yorumlanmadı.


16
Sadece bir not, Vi'yi kullanmanın asıl nedeni Vim'in kurulu olmamasıdır. Eğer Vim kurmuşsanız, bunun yerine muhtemelen kullanmaya değer. Her Unix kurulumunda zaten mevcut olmasının yanında Vi için gerçekten bir avantaj yoktur. Vim'i öğrenmenin en iyi yolu benim görüşüme göre terminal emülatörünüzü açmaktır (Vim içinden değil) ve yazın vimtutor45 dakika içinde kullanabileceğiniz yere kadar hızlanmanızı sağlar.
Ben Mordecai

1
+1 @BenMordecai - Kullanıma hazır alt kabuk kabiliyeti de dahil olmak üzere vi (eskiden) ile zaten tanıştım, ancak bu yenilemeye ihtiyacım vardı. Özel ders biraz. Bir esinti gibi geçti. Teşekkürler.
Cbhihe

Yanıtlar:


192

İlk önce, düzenleme modunda olduğunuzdan emin olun (düğmesine basın i). Ardından , gibi bir terminal emülatöründeyseniz (veya sağ tıklama menüsünden "Yapıştır" ı seçin) , Ctrl+ Shift+ ile yapıştırabilirsiniz.Vgnome-terminal

:set pasteOtomatik girinti, vb. Devre dışı bırakmak için yapıştırmadan önce vim yazabilirsiniz . Sonra :set nopasteiçeriği yapıştırdıktan sonra.

Ayrıca daha fazla bilgi için stackoverflow.com adresinde bu soruyu kontrol edin .

Satırları kopyalamak / yapıştırmak istiyorsanız vim(pano içeriğinin yapıştırılmasının aksine), yank komutunu kontrol etmek istersiniz . İşte yardımcı olabilecek bir hile sayfası .


1
Fare imleciniz açıksa, Ctrl + Shift + V tuşlarını kullanarak yapıştıramazsınız.
Alvin Wong,

14
Sadece bir not, Ibüyük / küçük harf duyarlıdır. Küçük harf i, ekleme moduna girmenin normal yoludur. Capital I, imleci satırın başına getirir ve daha sonra insert moduna girer.
Ben Mordecai,

64

Vi (ve Vim), Gedit gibi normal bir metin editörüyle karşılaştırıldığında çok farklı çalışır. Aynı zamanda oldukça dik bir öğrenme eğrisi vardır. Bazı temel komutları öğrenmek istiyorsanız, bu etkileşimli öğretici ile başlayın .

Ancak, size soruyu cevaplamak için. Sistem panosunun içeriğine artı kayıt yoluyla erişilebilir. Böylece sistem panosundan bir şeyi yapıştırmak için Normal moddan, şu tuşa basabilirsiniz: "+p(Aynı anda değil, arka arkaya).


3
Bu şu ana kadar bilmediğim bir şeydi. Ayrıca, bir başka harika vim öğreticisini bağlamak için +1.
Attila O.

19
Editörler için öğrenme eğrilerinden bahseden "bazı genel editörler için klasik öğrenme eğrileri", blog.thilelli.net/public/store/attached/curves.jpg .
hlovdal,

GNOME Terminalinde kopyala ve yapıştır kısayolları sırasıyla Ctrl-Shift-C ve Ctrl-Shift-V'dir.
Flimm

1
<kbd> "</kbd>, <kbd> + </kbd> ve <kbd> p </kbd>, ayrıca <kbd>" </kbd> ve <kbd> p < / kbd> ve hiçbir şey olmadı. Neyi yanlış yaptım? Kullandığım videğilvim
user907860

1
Doğru cevap bu. Örn. Ctrl-Shift-v, yalnızca en basit içeriklerle çalışır (terminalde iseniz ve kullanmayı unuttuysanız, satır kesmeleri ve girintiler gerçekten yanlış olabilir set :paste).
rsenna

29
  1. Eğer macun içeriğini kopyalamak istiyorsanız aynı dosya içinde , kullanımı yankve paste.

  2. Yapıştırma içeriğini terminaller arasında kopyalamak istiyorsanız , ilk dosyayı açın, istediğiniz metni söyleyerek açın, ardından ikinci dosyanızı vim (örneğin :tabnew /path/to/second/file) içinde açın ve pyapıştırmak için tuşuna basın .

  3. Yapıştırma içeriğini vim'den harici bir programa kopyalamak istiyorsanız , sistem panosuna erişmeniz gerekir. Ubuntu kullandığını varsayıyorum. Vim'in GUI sürümü daima pano desteğine sahiptir, ancak Vim'i bir terminalden kullanmak isterseniz, X11-pano desteğini kontrol etmeniz gerekecektir.

    Konsoldan şunu yazın:

    $ vim --version | grep xterm
    

    Eğer bulursanız -xterm_clipboard , iki seçeneğiniz vardır:

    1) Üzerinde xterm_clipboard bayrağı bulunan vim kendinizi derleyin

    2) Vim'i kaldırın, yerine gvim (vim-gtk veya vim-gnome) yükleyin . Daha önce yaptığınız gibi terminalden vim'i arayarak gui olmayan vim'e sadık kalabilirsiniz. Bu kez kontrol ettiğinizde + xterm_clipborad bulmalısınız .

    Eğer bazı metin yank Şimdi, + senin vim editörü (örneğin "+ yy) içine kayıt, aynı zamanda kullanarak, gedit editörü gibi harici programından alabilirsiniz sistem panosuna kopyalanır Ctrl+ V.

  4. Yapıştırma içeriğini harici bir programdan vim'e kopyalamak istiyorsanız, önce metninizi Ctrl+ ile sistem panosuna kopyalayın C, sonra vim editörü ekleme modunda , farenin orta düğmesini (genellikle tekerlek) veya yapıştırmak için Ctrl+ Shift+ düğmesine basın V.

    Bunlar, vim ile ilgili 4 temel kopyala ve yapıştır koşuludur. Umarım bu yardımcı olur.


Amacı ne: tabnew / path / to / second / file? İlk dosyayı açma / kopyalama / kesme ile aynı şeyi, ikinci dosyayı şu şekilde açabilirsiniz: vi / path / to / second / dosya ve yapıştırarak (p / P). En azından benim durumumda ... Yoksa + xterm_clipboard vim özelliğini etkinleştirdiğim için mi? Yoksa bundan daha fazla hasılat var mı?
Cbhihe

1
Ubuntu üzerinde vim-gtksahip xterm_clipboarddestek ve Fedora üzerinde xvimo vardır.
icc97

18

Terminale metin yapıştırmak istediğimde daima Shift+ Insertkullanırım, tüm terminal programlarında çalışır.

( Insertİkincil tuşa basmadan basamayacağınız bir dizüstü bilgisayarı asla alamamamın nedeni de budur )


2
Vi/ Vim! = terminal;)
0xC0000022L

1
tamam tamam, ama hala çalışıyor :)
Magnus Jonsson

Bunun için 1 .. Ne diyelim gerçekleştirmek için kullanırım Ctrl+A, Ctrl+Cayrıca?
Arup Rakshit

Bir DE'nin içinde bir terminal kullanırsam, genellikle sadece fareyle metin seçip Ctrl + Shift + C ile kopyalarım.
Magnus Jonsson

Shift + Insert ayrıca gvim ile de çalışır. (Herhangi bir fark
yaratırsa

10

Başka bir yere vurguladığınız metni eklemek için farenin orta düğmesini kullanın .

Sistem panonuza erişiminiz olmadığında (örneğin, uzak bir SSH oturumunda) kullanışlıdır.

Vim için düzenleme / ekleme modunda olmalı.


6

Vi'ye girdikten sonra, iekleme moduna girmek için basın, terminale sağ tıklayın, yapıştır'a tıklayın.


Küçük harf olduğunu düşündüm i. Büyük harf ne yapar I?
Flimm

@Flimm, daha önce Ben Mordecai tarafından başka bir yanıtla ilgili bir yorumunda açıklandı.
sierrasdetandil

Cevabı küçük harf olacak şekilde düzenledim i. Büyük harf Iburada gerekmeyen ekleme moduna girmeden önce imleci satırın başına getirir.
Flimm

5

Vi içindeki metin satırlarını kopyalamak / yapıştırmak için ayrıntılı talimatlar yankveput

( vi komut modunda aşağıdakileri kullanın )

Kopyala (YANK)

Vi içindeki bir satırı kopyalamak için:

  • Komut modunda, imleci kopyalanması gereken satıra getirin ve yazın yyya da yazınY

Vi'de 2 satır kopyalamak için:

  • Komut modunda, imleci kopyalanması gereken ilk satıra getirin ve yazın 2yyya da yazın2Y

(aynı şekilde, herhangi bir sayıda satır kopyalanabilir)

Tüm satırları geçerli konumdan dosyanın sonuna kadar kopyalamak için:

  • Komut modunda, imleci kopyalanması gereken ilk satıra getirin ve yazın yG

Tüm metni geçerli konumdan geçerli kelimenin sonuna kopyalamak için:

  • Komut modunda, imleci metnin kopyalanması gereken konuma getirin ve yazın yw

Tüm metni geçerli konumdan satırın sonuna kadar kopyalamak için:

  • Komut modunda, imleci metnin kopyalanması gereken konuma getirin ve yazın y$

Yapıştır (PUT)

Panoya metin yapıştırmak için - imlecin konumundan sonra :

  • Komut modunda, yazın p

Panoya metin yapıştırmak için - imlecin konumundan önce :

  • Komut modunda, yazın P

1

Benim Vim kurulum destekleyen değildi çünkü bir sorunu vardı panoya :

vim --version | grep clip
-clipboard       +insert_expand   +path_extra      +user_commands
+emacs_tags      -mouseshape      +startuptime     -xterm_clipboard

Vim-gnome'u yükledim (panoyu destekliyor) ve tekrar kontrol ettim:

vim --version | grep clipboard
+clipboard       +insert_expand   +path_extra      +user_commands
+emacs_tags      +mouseshape      +startuptime     +xterm_clipboard

Şimdi sırasıyla "+ y ve" + p kullanarak kopyalayıp yapıştırabilirim.


Bu benim sorunumu çözdü!
astrojuanlu

1

Linux veya Mac'te Vim 8+ ile, artık işletim sisteminin yerel macunu ( ctrl+shift+VLinux'ta, cmd+VMac'ta) kullanabilirsiniz. iEkleme Modu için basmayın .

Otomatik panosunu eklemeden boşlukları ve sekmeleri koruyarak, işletim sisteminizin panosunun içeriğini yapıştıracaktır. Eski eşdeğerdir var :set paste, i, ctrl+shift+V, esc, :set nopasteyöntemi.

Artık kurulu olan +clipboardveya +xterm_clipboardvim özelliklerine bile ihtiyacınız yok. Bu özelliğe "köşeli ayraç" adı verilir. Daha fazla ayrıntı için https://stackoverflow.com/questions/2514445/turning-off-auto-indent-when-pasting-text-into-vim/56781763#56781763


Aradığım cevap bu. Vim, gnu / linux dağıtımlarında varsayılan olmadığından, ubuntu'da bile kurulmalıdır. Ek olarak, Vi'nin yukarı aşağı düğmeleri ubuntu'da çalışmıyor ve vurgu yok.
itsnotmyrealname


0

Windows'ta Git Bash kullanarak Vim kullanarak p, fareyi ekleme kipine girmeden kullanıp orta tıklayabileceğinizi not etmek istedim . PuTTY üzerinden Vim'i kullanarak , sadece sağ tıklayabilirsiniz. Ve vurgulama kopyalama yapar.

Bunu not ettim, çünkü buraya bunun Ubuntu için SE olduğunu görmedim.

Diğer yardımcı komutlar:

  • yy(satır sayısı) - yank (kopyala)
  • dd(satır sayısı) - sil
  • p - çizgiyi geçerli çizginin altına yapıştır
  • Shift+ p- çizgiyi geçerli çizginin üzerine yapıştır
  • u - geri alma
  • r - yinele
  • i - ekleme modu
  • v - görsel mod

Bu benim için Windows Git Bash'te işe yaramadı. Hangi konsolu kullanıyorsunuz, mintty veya windows cmd?
wisbucky

Mintty olduğuna inanıyorum.
Tyler Christian,

0

Terminal sürüm vim'e yapıştırmak için Ctrl+ Shift+ kullanabilirsiniz V, ancak GUI sürüm vim Neovim-Qtiçin sistem panosundan Ctrl+ Shift+ ile metin yapıştırmak Vişe yaramaz. Panoya "+veya "*vim editöründe erişmeniz gerekiyor .

Yeni anahtar ekleme .vimrc, yalnızca kopyala / yapıştır komutlarını içerir:

" paste from system clipboard, align indentation with surroundings
noremap <Leader>p "*]p:set nopaste<CR>
" copy a sentence into system clipboard
noremap <Leader>y "+y)
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.