2009-10-14 17 views
21

Vim'deki her satırın ilk kelimesini nasıl silerim?Her satırın ilk sözcüğünü sil

Her satırda bir desen nasıl olur?

(kelime hiçbir boşluk olarak tanımlanır)
+4

Bu sorunun SuperUser.com'a ait olduğunu düşünüyorum –

+0

neden böyle düşünüyorsunuz? vi ayrıca bir betik dili. Superuser.com'a ait olduğu gibi Kapalı – vehomzzz

+0

Kapalı herhangi bir şey, superuser.com'a taşınan ile aynı ise, bu soru kapatılmamalıdır. – tvanfosson

cevap

19

aşağıdaki gibi bir şey kullanmak istiyorsunuz satırın başında başlayan bir ya da daha fazla "kelime" karakteriyle eşleşecek ve ardından en az bir boşluk karakteri. Sözcüğü ve aşağıdaki boşlukları kaldıracaktır. Bir satırda sadece tek bir sözcük varsa - ve yine de kaldırılmasını istiyorsanız - boşluğu veya satırın sonunu eşleştirmek için alternatif kullanabilirsiniz.

:%s/^\w+(\s+|$)// 
+0

Bunu daha genel olarak ifade edebilirsiniz: :%: s/^ \\ (\ w \ {- 1,} \\) \\ (\ W \? \\)/\ 2/ Bu şekilde de Kelimeyi sonlandıran şeyi atmayın. (Ayrıca konuştuğunuz regexp'in hangi lehçesini izlemelisiniz?) –

3

İlk kelime

:%s/^\s*[^ ]* //g 

Sil desen:

:%s/^\w+\s+// 

düzenli ifade:

:%s/< insert pattern here >//g 
27

gerçek vi tarzında, burada şifreli Going for: O yola çıkıp için

[email protected]@q 

:

[email protected] 

Randy fazla 100000 hatları üzerinde çalışmaya yorumlarda bu kadar sabit Vim ile bu, aşağıdakilere bölünür:

Özünde, makro özyineledir - bir sözcüğü siler, bir satır aşağı hareket eder, sonra kendini tekrar çağırır, her satır için dosyanın sonuna kadar yinelenir. Son '@q', her satırda makroyu ayarlamak için gereken ilk (el ile) çağrıdır.

+2

-1 - "gerçek vi stili" nin ne olduğundan emin değilsiniz, ancak gösteriş yapmak için şifreli, düşmanca şeyler yapmanın bir anlamı yoktur. Daha genel olan, mükemmel okunabilir bir çözüm var. –

+3

Ah, ama birisi zaten 'doğru' çözümü gönderdi. Bu kod golf hatları boyunca daha fazla oldu. "Gerçek vi stili", bir editörde bir ironi kaydırmadır: wq! değişiklik yapmadan çıkmak için doğru yoldur. En kullanıcı dostu canavar değil. Tam açıklama: vi'yı seviyorum ve ana editörüm olarak kullanıyorum. Tam açıklama: vi komut sözdizimi çok anlaşılabilir değildir. –

+9

ggqqdwj @ qq @ q, sadece <100000 satırları olan dosyaları değil, herhangi bir sayı satırı üzerinde çalışacaktır. Tbh, bu 'şifreli', aklımda normal bir ifadeyle ilk gelen şeydi. –

4

Buna ne dersiniz?
:% kesti -s -d' '-f2-

25

: Eğer (normal bunları yazarak sanki

:%norm dw 

Temelde argümanlar tekrarlanıyor kurtarmaya normal'! Olmayan düzenleme ') modu. yardım: Nereden

: [!] norm [el] {komutlar}

Normal mod komutları {komutlar} yürütün.

Bu, komut satırında yazılmış Normal mod komutlarını çalıştırmayı mümkün kılar. {commands} yazdığı gibi yürütülür.

+0

Nasıl çalışır? – vehomzzz

+0

Yanıtıma daha fazla bilgi ekledim. –

+5

Girintili bir satırda ': norm dw' çalıştırdıysanız, ilk sözcük yerine girintiyi siler. Running:: norm^dw' her zaman ilk kelimeyi silerdi. – nelstrom

1
:%s,^[^ ]*,, 

Çizginin başlangıcından itibaren bir şeyle eşleşir, ancak bir boşluk ile eşleşmez ve hiçbiriyle değiştirilmez.

+0

Bunun, çentikli çizgilerdeki herhangi bir şeyi silmeyeceğine ve bunun, Vim'in WORDS (boşlukla ayrılmış) sözcükleri değil, sözcüklerini sildiğini sildiğine dikkat edilmelidir. –

İlgili konular