Her satıra bir tane olmak üzere sıralı numaraların listesini nasıl oluşturabilirim?


38

Boş bir sayfadan başlayarak içeren bir belgeyi nasıl alabilirim

1
2
3
4
5
6
7
8
9
10
…
100

Açık olmak gerekirse, bu numaraların kenarda gösterilmesini istemiyorum; Belgenin kendisine eklenmesini istiyorum.

Yanıtlar:


51

Kullanın :putve range():

:put =range(1,100)

(Üstte boş satır önlemek için romainl şeref ), kullanım :0put:

:0put =range(1,100)

1
Veya ekleme modunda <C-r>=range(1,100).
Hotschke

18

Undo'nun saf vim'ine ek olarak :put =range(1,100)(sizi gerçekten boş bir sıra bırakır), işletim sisteminize bağlı olarak komutlarından birini kullanabilirsiniz. Örneğin, bir Unix / Linux kutusunda:

%!seq 1 100

Yukarıdakiler seqgirişini görmezden gelen ve sadece 1'den 100'e kadar olan sayıları çıkaran tüm (boş) tamponu pipo ederek çalışır. Vim daha sonra tüm tamponu seqçıktısıyla değiştirir.

İstediğinizi elde etmek için komut satırı yöntemlerini zaten bildiğiniz zaman bu faydalıdır.


Bu, soruyu "sorar", bu yüzden kabul edilenden daha iyi olduğunu düşünüyorum. Evet, çorbayı karıştırmak için hilal anahtarı kullanabildiğiniz gibi vim işini yapabilirsiniz. Vim isteğe bağlı bir metin oluşturucu değil, bir metin editörüdür; Bunun için çok daha belirgin araçlar var.
msw

16

Kayıt için ve kesinlikle en kısa yol değil (bkz. @ Undo'nun mükemmel çözümü), ancak tuş vuruşlarının sırası da bunu yapacaktır:

i1EscqaYpCtrl+aq98@a

Bunu senin için yıkmama izin ver:

  1. i1<Esc> - 1 rakamını girin, ardından komut moduna geri dönün
  2. qa - "a" siciline bir makro kaydetmeye başlayın
  3. Y - geçerli satırı kopyala
  4. p - geçerli satırı yapıştırın (imleç yapıştırılan satıra da taşınır)
  5. <Ctrl>a - satırdaki bir sonraki sayıyı artırmak, onu 2 yapmak
  6. q - Makroyu kaydetmeyi durdur ("a" kaydı yapıldı)
  7. 98@a - "a" registerındaki makroyu 98 kez tekrar et

4

İşte daha yeni bir Vim'e ihtiyaç duyan farklı bir yaklaşım. (7.4.800 gibi bir şey)

Bu boş bir arabellek varsayar ve a. İlk önce tampon belleğine 100 1 girin "a100P,.

Sonra görsel olarak 2'den 100'e kadar olan satırları seçin :2EnterVG.

Şimdi gCtrl+ tuşuna basın A.

Yardımı oku :h v_g_CTRL-A


Cevabınıza let @ a = "1" eklemelisiniz. Yeni başlayanlar, a değerinde 1 değerini nasıl saklayacaklarını bulmak için takılıp kalmış olabilir.
SibiCoder

GCtrl + A combo'yu diğer benzer çözümlerde gördüm. Ancak ne yaptığının / nasıl çalıştığının bir açıklamasını bulamadım mı? Dokümantasyonda g'nin ne yaptığını açıklayan bir referansınız var mı? Teşekkürler! Bir açıklama bulursam gönderirim.
codingFoo 16:16

1
dokümantasyon at:h g_CTRL-A
Christian Brabandt

V_g_CTRL-A bölümünün bağlantısını özlemiştim.
codingFoo

2

Bu sorunun gerçekten eski olduğunu biliyorum, ancak bunu yapmanın başka bir yolu var. Bunu dene:

99o<esc>:%s/^/\=line('.')<cr>

99o<esc>sadece 100 boş satır açacak. Sonra bir substitute komutu çalıştırırız:

:%                  " On every line
  s/                " substitute
    ^/              " the start of the line. (This will always match no matter what)
      \=            " Evaluate:
        line('.')   " The current line.
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.