Eclipse'de Vim'de bütün bir satırı nasıl kopyalarım?


1624

Nasıl bütün bir çizgi çoğaltmak do um benzer şekilde Ctrl+ DIntelliJ IDEA / resharper veya Ctrl+ Alt+ / in Eclipse ?


49
İnsanlar artık vimtutor çalıştırmıyor mu? Bu muhtemelen Vim'in nasıl kullanılacağını öğrenmenin ilk beş dakikasındadır.
dash-tom-bang

131
Bu satırı çoğaltmak ister misiniz? Yes Pkira. :)
Stavr00

3
FWIW Son 2 ay içinde yaklaşık bir düzine kez tetikleyici yaptım ve bu kavram ele alınmadı. Önce “dd” ve “v - navigate - y” ve ardından “p” nin nasıl yapılacağını anlatır. Burada istendiği gibi silmeden tek bir satırın nasıl kopyalanacağını anlatmaz.
danielson317

Yanıtlar:


2769

yyveya Y(anımsatıcı: çizgisini kopyalamak için y ank )
ya
ddkadar d elete hattını (bir benzeri, "kayıt" benzeri panoya bir içine silinen Ne Vim kopyalar kesme işlemi)

sonra

piçin p bu simge kopyalanan veya metin silinir sonra şimdiki hattına
veya
Phiç p bu simge kopyalanmış veya silinmiş metin önce akım hattı


129
Mükemmel bir nokta. Bazı nedenlerden dolayı, y'ye iki kez vurmanın benim için SHIFT-y'den daha hızlı olduğunu düşünüyorum
Mark Biek

25
@camflan Bence Y "imleçten sonuna kopyala" olmalı
Dzung Nguyen

42
ve 2yy, 2 satır kopyalamak için kullanılabilir (ve diğer herhangi bir n için)
Amir Ali Akbari

5
@nXqd: Evet, kullanıcıların büyük bir yüzdesi eşler Yiçin y$. (Uygun olarak Dve C,. (Ancak Vi uyumlu (kimse önemsiz hücreler))) da önerilmiştir O :help Y.
Aaron Thoma

11
İki satır kopyalamak için, daha da hızlı sadece gitmek oluyor yjya yksen bir karakter bölüşmek yok, özellikle de. Artı, ykbir geriye sürümüdür 2yyyapamaz ve geriye ulaşmak için satır sayısını koyabilirsiniz y9jya y2k, vb .. Tek fark senin sayımı olmak zorunda olmasıdır n-1olmak üzere toplam n, çizgilerin ama kafası o kadar öğrenebilir neyse.
zelk

406

Normal mod: diğer cevaplara bakın.

Ör yol:

  • :t. satırı çoğaltır,
  • :t 7 7. satırdan sonra kopyalar,
  • :,+t0dosyanın başlangıcında geçerli ve sonraki satırı kopyalar ( ,+aralığın eşanlamlısıdır .,.+1),
  • :1,t$satırları başlangıçtan sonuna kadar kopyalar ( 1,aralığın eş anlamlısıdır 1,.).

Yerine kopyalamak taşımanız gerekirse, kullanmak :myerine :t.

:gVeya ile birleştirirseniz bu gerçekten güçlü olabilir :v:

  • :v/foo/m$ "foo" kalıbıyla eşleşmeyen tüm satırları dosyanın sonuna taşır.
  • :+,$g/^\s*class\s\+\i\+/t.formun sonraki tüm satırlarını class xxximleçten hemen sonra kopyalar .

Referans: :help range, :help :t, :help :g, :help :mve:help :v


1
:Görsel modda düğmesine bastığınızda , dönüştürülen '<,'>görsel seçimin çizgi aralığını önceden seçecek şekilde dönüştürülür. Yani, görsel modda, :t0satırları başlangıçta kopyalar.
Benoit

1
Kayıt için: iki nokta üst üste (:) yazdığınızda, Ex komutlarını girebileceğiniz komut satırı moduna girersiniz. vimdoc.sourceforge.net/htmldoc/cmdline.html Eski komutlar gerçekten güçlü ve aldatıcı olabilir. Yyp çözümleri "Normal mod" komutlarıdır. Uzaktaki bir satırı veya satır aralığını kopyalamak / taşımak / silmek istiyorsanız, Ex komutu çok daha hızlı olabilir.
Niels Bom

7
Yanıtla ilgili bir sorun nedeniyle değil (durumum için işe yaramaz olsa da, çoğaltmak istediğim satır numarası hakkında hiçbir fikrim yok) değil, çünkü bunun için en iyi / kabul edilen cevap olmamalıdır. sık aranan soru.
mjaggard

9
@mjaggard: Kabul edilen cevaplar, puanlarına bakılmaksızın her zaman en üstte yer alır. Evet, bu yanıtı bir tamamlayıcı olarak ekledim ve görünüşe göre OP için çok uygun.
Benoit

7
:t.sorunun tam cevabıdır.
Burak Erdem

294

YPveya Ypveya yyp.


Ygenellikle y$(satırın sonuna kadar (mevcut imleç konumundan, satırın başlangıcından değil)) yank (kopyala) şeklinde yeniden eşleştirilir . Bu çizgide .vimrc::nnoremap Y y$
Aaron Thoma

1
Yoksul eski unutmayınyyP
icc97 13:17

253

vim'de kopyala yapıştır

Bundan daha basit olamaz! Normal moddan:

yy

ardından yapıştırmak istediğiniz satıra gidin ve

p

34
Gif yapmak için ne kullandın?
Zoltán

4
@ Zoltán küçük boyutlu LiceCap kullanabilirsiniz
onmyway133


44

Bunu yap:

İlk olarak, yygeçerli satırı kopyalayın ve sonra pyapıştırın.


20
Alanı yazmayın.
Niels Bom

1
Evet, imleç satırın sonuna geldiyse ve alanı gösterildiği gibi yazarsanız, soyduğunuz satırı çoğaltırsınız, soyduğunuz satırın 2 satır altında.

44

Başka bir yol istiyorsanız:

"ayy: Bu satır arabelleğe kaydedilir a.

"ap: Bu arabellek içeriğini aimlece koyacaktır .

Bu konuda birçok varyasyon var.

"a5yy: Bu, 5 satırı arabellekte saklar a.

Daha fazla eğlence için bkz. " Vim yardım dosyaları .


Teşekkürler, bunu bir bağlama olarak kullandım: map <Leader> d "ayy" ap
frbl

39

yyp - "yippee" ile hatırla!

Aralarında sayı bulunan birden çok satır:

y7yp


17
7yy, y7y'ye eşdeğerdir ve nasıl yapılacağını hatırlamak daha kolaydır.
graywh

10
y7yp (veya 7yyp) nadiren yararlıdır; imleç kopyalanan ilk satırda kalır, böylece p kopyalanan satırları kaynağın birinci ve ikinci satırı arasına yapıştırır. Bir satır bloğunu çoğaltmak için 7yyP kullanın
Nefrubyr

@Nefrubyr veya :.,.+7 copy .+7: P
DarkWiiPlayer

23

yyp - sonra yapıştır

yyP - önce yapıştır


6
Satır çoğaltıldığından, içeriğin nihai sonucu aynıdır.
Acumenus

4
@ABB Ancak, burada minyatür bir fark var - imleciniz hangi satıra gelecek.
Mikk

12

Seviyorum: Shift+ v(tüm satırı hemen seçmek ve isterseniz diğer satırları seçmenize izin vermek için), y, p


11

Ekleme modundan son satırı tekrarlayacak ve size tüm satırları içeren bir tamamlama penceresi getiren <Cx> <Cl> 'yi de deneyebilirsiniz. Neredeyse <Cp> gibi çalışıyor


Bu çok faydalı, ancak birçok tuşa basmak zorunda kalmamak için sadece CTRL-L'ye eşledim, bu benim haritam: inoremap ^ L ^ X ^ L
Jorge Gajon

11

Başka bir seçenek de:

nmap <C-d> mzyyp`z

size imleç konumunu koruma avantajı sağlar.


10

Vi bilmeyen biri için, yukarıdan gelen bazı cevaplar onu " mevcut satırdan sonra / sonra yapıştır" gibi ifadelerle yanlış yönlendirebilir .
Aslında " imleçten sonra / sonra yapıştır ".

yyveya Ysatırı kopyalamak
veya satırı
ddsilmek için

sonra

pKopyalanan veya silinmiş metni yapıştırmak sonra imleç
veya
Pkopyalanan veya silinen metni yapıştırmak önce imlecin


Daha fazla anahtar bağlama için bu siteyi ziyaret edebilirsiniz: vi Komple Anahtar Bağlama Listesi


3

1 gotcha: satırı koymak için "p" yi kullandığınızda , imlecinizin açık olduğu satırdan sonra koyar , bu yüzden soran satırdan sonra satırı eklemek istiyorsanız, imleci bir satır aşağı hareket ettirmeyin Yeni çizgiyi koymadan önce.


4
veya büyük P kullanın - daha önce koymak
Ghoti

3

Varsayılan yyp, ama bu yeniden hatırlatmayı bir yıldır kullanıyorum ve seviyorum:

" set Y to duplicate lines, works in visual mode as well. nnoremap Y yyp vnoremap Y y`>pgv


3

Partiye geç kaldığımı biliyorum, ama her neyse; Bunu benim .vimrc dosyamda var:

nnoremap <C-d> :copy .<CR>
vnoremap <C-d> :copy '><CR>

:copyKomut sadece kopya seçilen hattı veya hat sayısı, parametre olarak verilen aşağıdaki aralığı (her zaman bütün çizgiler).

Normal modda bunun yaptığı, copy . bu satırı bu satırın hemen altına kopyalamaktır .

Ve görsel modda '<,'> copy '> , seçimin başlangıcından seçimin sonuna kadar seçimin sonundaki çizgiye kopyalanır .


1
↑↑ burada en iyi cevap!

2

Vi öğrenmeye başlayanlar için, vi komutlarını tipik Windows GUI Düzenleyicisi imleç hareketi ve kısayol tuşlarına yan yana listeleyerek vi'ye iyi bir giriş. yy(Kopyala satırı) ve p(sonra yapıştır) veya P(önce yapıştır ) dahil tüm temel komutları listeler .

Windows Kullanıcıları için vi (Vim)


1

Bir satırı çoğaltmak ve Sublime Ctrl+ Shift+ 'da olduğu gibi hemen mevcut akımın altına yapıştırmak Distiyorsanız, bunu .vimrcdosyanıza ekleyebilirsiniz .

nmap <S-C-d> <Esc>Yp

Veya, Ekleme modu için:

imap <S-C-d> <Esc>Ypa


Bu, ekleme modunu bırakır ve sadece itekrar girmek için sonuna ekler undo, böylece ekleme modunda satırları çoğaltma çözümü göründüğü kadar önemsiz değildir.
DarkWiiPlayer

Bu benim için mükemmel çalışıyor: imap <S-C-d> <Esc>Ypi ekleme modu ve nmap <S-C-d> <Esc>Ypnormal mod
jedi

0

Bu eşlemeyi kullanmayı seviyorum:

:nnoremap yp Yp

çünkü yerel YPkomutun yanında kullanılmasını tutarlı hale getirir .

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.