Tek komut kullanarak 100 editörden vi editöründen sil


33

Ubuntu kullanıyorum ve 100 satırın hepsini vieditörden silmeye çalışıyorum, ancak bunu tek bir komutla yapmakla mülakat sorusu buldum.


VI çözümü değil, komut satırından: echo -n > <file>tüm satırları bir dosyadan kaldırır (aslında sadece "" ile dosyanın üzerine yazar).
azz

3
@Der Bunun için hiç kullanmanıza gerek yok echo; > $filesadece iyi çalışıyor.
Bir CVn

4
Bu nasıl bir şirket, viröportajda soru sormak mı?
Bir CVn

2
Bu soru basit bir vi bilgisi ile kolayca cevaplanabilir. Vim yüklü bir bilgisayarda (Ubuntu'da, vim-gtkpaketi öneririm , çünkü bu vim içindeki xclipboard'a erişmenizi sağlar), vimtutortemel bilgilerin etkileşimli bir öğreticisini edinmek için komut satırına (vim içinde değil) yazın. Yarım saatten fazla sürmemelidir ve bulmanız gereken vi / vim'i kullanmak için en iyi başlangıç ​​kılavuzu.
evilsoup

1
@ MichaelKjörling Başvuranın önceki deneyimlerden visözlü veya özgeçmişle bahsetmiş olsaydı ya da soru ön plana çıkmış olsaydı, "Tamam, bir sysadmin olarak komut satırı editörleri hakkında bir şeyler bilmelisin, tamam mı? Kullandınız vimı?
Joker,

Yanıtlar:


62

Normal modda, yapmak

100dd

ddgeçerli satırı siler. Bu komutun ön yüzünde kullanılması, 100100 kez tekrar etmesine neden olur.

Geçerli satırdan başlayarak dosyada 100'den az satır varsa, viuygulamaya bağlı olarak, herhangi biri silinemez veya olduğu kadar silinir. Bu durumda vim, cpaka compatibleseçeneğinin açık olup olmamasına bağlıdır .


yanlış cevap sadece şu anki satırı siliyor
mayur Mehta

Bir seferde bir komut kullanarak 100 satırı silmek istiyorum
mayur Mehta

13
100dddoğru cevap. Ne yapıyorsun acaba
ott--

1
@ mayurMehta hangi şirketin böyle sorular sorduğunu bilmiyor ve cevap olarak ne beklediklerini bilmiyor. Ancak herhangi bir acemi VI kullanıcısı 100dd'nin doğru cevap olduğunu bilecektir.
Munim,

1
@vgoff Bilmiyorum .. Temel vim becerilerinizi test etmek için genel bir çözüm aramıyorlarsa, o zaman görüşülenleri güdük yapmak için sadece bir hile sorusu var. Cevap 100dd diyebilirim. Eğer görüşmeci "Eğer dosya mevcut imlecin 100 satırından daha az satırına sahipse ne olur?" Bu tamamen mantıklı. Görüşmeci açıklığa kavuşturmadıkça, imleç neden ilk satırda olmasın? Bunun gibi hileli sorulardan nefret ediyorum.
Munim

44
  1. geçerli satırdan ileriye doğru 100 satırı silmek

    • dd'yi (geçerli satırı sil) 100 kez tekrarla:

      100dd
      
    • geçerli satırdan 99 satıra ileri sil

      d99j
      
  2. 100 satırını geçerli satırdan geriye doğru sil (dahil)

    d99k
    
  3. belirli bir aralıktaki satırları satır numarasına göre sil

    :1,100d
    
  4. geçerli satırla başlayan bir aralıktaki satırları sil

    :.,.+99d
    

vesaire vesaire.


2
sayı 4, 101'inci (0 + 100) satırlara kadar geçerli satırı (0) silecektir, bu yüzden sorulan 100 yerine 101 satır olacaktır. deneyin:.,+99d
Olivier Dulac 12

Drat, hareketleri doğru yaptım! Teşekkürler.
Yararsız

100dd benim için de işe yaramadı - ama # 4 yukarıda Solaris 10 altındaki VI'da benim için iyi çalışıyor.
DemiSheep

8

Eğer tüm dosyadaki satırları silinecek olan bu vi komut silme aralığını belirtir:

:1,$d

1ilk satırı ve $son satırı belirtir.


veya :%d (":" bağlamında ":% ...", ": 1, $ ..." kısayoludur)
Olivier Dulac

ayrıca güzel: d Gtuşları & rarr; gerçek içeriği [ör. en üst satır] en alt satıra kadar tüm içeriği
erch

3

Bir dosyadaki tüm satırları silmek ister misiniz? Dosyayı ile açın vi. İlk satırın başındayken - sadece dosyayı açtığınızda imlecin varsayılan konumu - ve Escardından tuşuna basın dG.

Sadece dikkat, eylem d silinmeyi ve Gdosyanın son satırını gösterir. Bu nedenle, bastığınız herhangi bir satırda dG, geçerli satırdan başlayarak son satıra kadar olan tüm satırları siler.

Söz, hat 101 ile 200 arasında - - Eğer ardışık satırları silmek için hangi biliyorsanız türünü aşağıdaki anahtar dizileri de: Esc:101,200d.


Dosyayı yeni açtıysanız ve dosyanın başındaysanız escape tuşuna basmanıza gerek yoktur. Normal modda otomatik olarak (varsayılan olarak).
vgoff

3

Nerede olursanız olun dosyada yapabilirsiniz ggdG

:%ddaha az tuşa basıldığında daha iyi sonuç verirdi. Aslında shiftve entertuşları sayarsak, aslında yukarıdakinden iki daha fazla tuşa bas.

Böyle bir şey yapmak , bulunduğunuz yerin konumuna bağlı olarak100dd yalnızca bulunduğunuz yerden en fazla 100 satır silebilir ve dosyadaki tüm satırları silmeyebilir.


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.