Satır sonu hariç tüm bir satırı silebilir miyim?


33

Zorla takıntılı olduğum ve dosyalarımı boşluklardan arındırmak istediğim için oldukça yaygın bir işlem vim'de oldukça yaygın bir işlemdir, tüm satırın içeriğini silmek , ancak satırın kendisini değil (satır sonu değil).

Bunu yapmak için yerleşik bir vim yolu var mı? Belki bir d<movement command>operasyon?

Şimdiye kadar sahip olduğum en iyisi (söz konusu hatta) 0d$. Daha hızlı bir yolu var mı?


2
Boşlukları manuel olarak kırpmaya alternatif olarak , izleyen boşlukları vurgulayan, hepsini bir kerede kaldırmak için bir komut sağlayan ve hatta otomatik olarak kaydetme işlemini bile yapabilen bir vim-daha iyi boşluk gibi bir eklenti kullanabilirsiniz .
29'da 15


3
Eklenti olmadan bile, arama ve değiştirme işlevini kullanarak izleyen boşlukları global olarak silebilirsiniz, örneğin:%s/\s*$//
Kyle Strand

Yanıtlar:


34

Bunu 0D, satırdaki ilk karaktere gider ve satırın sonuna kadar silebilirsiniz. ^DÖnceki boşluk alanlarını yalnız bırakmak istiyorsanız, kullanabileceğinizi unutmayın . Ayrıca, bu işlemler kullanılarak tekrarlanamaz .. Komutla tekrarlanabilecek bir işlem istiyorsanız ., David Lord'un cevabına bakın.

Yardım konuları:

  • :help 0
  • :help D
  • :help ^

4
Bu doğrudan olmasına rağmen, noktaya ve (muhtemelen) en az tuş vuruşuna rağmen, .komut kullanılarak tekrarlanamaz . Bu nedenle, tekrarlamayı önemsiyorsanız, bence cc<Esc>ya S<Esc>da daha çekici.
tommcdo

Bu doğru. Ancak, bunu bir makro olarak kaydedebilir ve onu kullanarak tekrarlayabilirsiniz ..
EvergreenTree

Genel olarak, makrolar ile tekrarlanamaz .. Bu tuş vuruşlarına etkileşimli olarak girilmiş gibi çalışırlar, bu nedenle bireysel komutlar ayrı ayrı ele alınır. Kullanmak .yalnızca makrodaki son komutu tekrar edecektir.
tommcdo

Test ettim ve bu benim için işe yaramıyor. Makroyu kaydettikten sonra kullanarak kullanın, daha sonra @{reg}tekrarlayabilirsiniz ..
EvergreenTree

1
Sadece makrodaki son komutu tekrar ediyorsun D. Bir 0Dişlemden sonra imleciniz 0 sütununda bırakılır. Eğer imleciniz zaten çizginin başındaysa (bir başkasına geçtikten sonra), makro düzgün bir şekilde tekrarlanmış gibi görünür. İmleci satır içinde ileri doğru hareket ettirmeyi ve yazmayı deneyin .; yalnızca tekrarlandığını göreceksiniz D.
tommcdo

20

cc <Esc>İstediğiniz gibi yapacağım, ama daha önemli olduğunu 0D. Daha sonra o çizgiye bir şey koymak istiyorsanız, ccen iyisi olabilir.


2
Eğer Shift'i eklerseniz aynı ve muhtemelen daha kolay.
Holloway

4
Bu "en temiz" çözüm olmasa da, bir avantaja sahip: tam olarak bir eylem ve bu nedenle .komutla tekrarlanabilir . Buna karşılık 0D(seçilen cevapta önerildiği gibi) iki eylemdir: 0hareket ve Dkomut.
tommcdo

@Trengot muhtemelen 0Dbenim için daha kolay çünkü vimrc içinde jkharitalandırdım <Esc>, böylece ellerim bile evden ayrılmak zorunda kalmayacaktı.
EvergreenTree

1
Bakınız @Nobilis cevap: S"Eşanlamlı cc" olarak belgelenmiştir
Volker Siegel

14

Sve sonra Ctrl+Cveya Escaynı işlevi yerine getirmek gibi görünüyor.

.Tek bir eylem oluşturduğu için tekrar edilebilir.


2
Bunu bir cevap olarak eklemeyi düşünüyordum ve sonra seninkini gördüm
15

7

0DMuhtemelen istediğin şey budur. Satırı (ve imleçten önceki karakterleri) yerinde bırakırken imleçten satırın sonuna kadar siler.


Bu cevap Álmos bir yaşında olan Busses, fazlalaştı 0Dsilecektir satırın başından değil imleç konumundan,
FliiFe

4

Genelde kullanırım ddO. ddGeçerli satırı silmek için O(ve bu bir büyük harf o) yeni bir satır eklemek için.

Bu aynı zamanda 3 tuş vuruşu, ancak ddsadece 1 buçuk sayıyor ve yazmam Odaha kolay $.

0DOtomatik girintiyi çözme çözümünden farklıdır, örneğin bu kodla ( !···sekme nerede ve imleç::

def asd():
!···if foo:
!···!···foo()█
!···!···foobar()

0D sizi bırakacak:

def asd():
!···if foo:
█
!···!···foobar()

Ve ddOsizi bırakacak:

def asd():
!···if foo:
!···!···█
!···!···foobar()

Bundan <Esc>hemen sonra basarsanız , Vim otomatik girintiyi kaldırmalıdır, böylece aynı olana sahipsiniz 0D.

'Doğru' bir yol yoktur, tam olarak ne yapmak istediğinize bağlı olacaktır. Tercih ediyorum ddOçünkü daha esnek ve "parmaklarımda" :-)


2
^Dboşlukları yalnız bırakacağım.
EvergreenTree

Yana Oekleme modunda yaprakları sizi bu eşdeğerdir ccsatır zaten otomatik girintili olduğu sürece ...., otomatik girinti olmaksızın hariç.
Kyle Strand,

Bu, dosyanın son satırında farklı davranacaktır.
tommcdo

0

Ve bu 0Csatırdaki tüm karakterleri silecek ve sizi ekleme moduna sokacak olan değerli bir tuş vuruşunu kaydetmek için kullanabilirsiniz .

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.