Aşağıdakileri takip etmeye çalıştım:
VI editöründe seçili metin nasıl silinir
fakat
5dd
verir
E492: Düzenleyici değil komutu: 5dd
Sonra denedim:
5d
Bu sadece tek bir satırı siler. Birden çok satırı nasıl silebilirim?
Aşağıdakileri takip etmeye çalıştım:
VI editöründe seçili metin nasıl silinir
fakat
5dd
verir
E492: Düzenleyici değil komutu: 5dd
Sonra denedim:
5d
Bu sadece tek bir satırı siler. Birden çok satırı nasıl silebilirim?
Yanıtlar:
Komutları komut modunda giriyormuşsunuz gibi geliyor (diğer adıyla "Eski mod"). Bu bağlamda :5d
, 5 numaralı satırı kaldırırdı, başka bir şey yok. İçin 5dd
olduğunu, imlecin başlayan beş izleyen satırları kaldırmak - - amaçlandığı gibi çalışmaya normal modda girin ve komutları önek yok :
.
Bunu daha kolay buluyorum
/superuser/170795/how-can-i-select-and-delete-lines-of-text-in-vi
Satır numaralarını biliyorsanız, birden fazla (aralık) satırı silebilirsiniz:
:[start_line_no],[end_line_no]d
Not: d, silme anlamına gelir
burada,
start_line_no, silmek istediğiniz başlangıç satırı no ve end_line_no, silmek istediğiniz bitiş satırı no'dur. Başlangıç ve bitiş dahil olmak üzere başlangıç ve bitiş arasındaki satırlar silinecektir.
Örneğin:
:45,101d
45 ile 101 dahil 45 ile 101 arasındaki satırlar silinecektir.
$
Dosyadaki son satırı da belirtmek için kullanabilirsiniz . Yani :45,$d
45'ten sonuna kadar her satırı silecekti.
/<\/div>/
:.,[end_line_no]d
Normal modda kullanım için listelenen komutlar ( :komut modu için ön ek ).
Vim'de test edilmiştir.
Satır miktarına göre:
Satır numaralarına göre:
Backwards range given, OK to swap (y/n)?
Görsel olmayan bir mod yöntemini tercih ederseniz ve satır numaralarını kabul ederseniz, size başka bir basit yol önermek isterim.
Misal
45. satırdan 101. satıra kadar olan metni silmek istiyorum.
Yöntemim, komut modunda aşağıdaki bir komutu yazmanızı önerir:
45Gd101G
Okur:
45. satıra (
45G
) gidin, ardındand
mevcut satırdan 101. satıra kadar metni ( ) silin (101G
.
Not o vim
sen kullanabilirgg
yerineG
.
@Bonnie Varghese'nin cevabıyla karşılaştırın:
:45,101d[enter]
Cevabından yukarıdaki komut, dahil olmak üzere 9 kez yazmayı gerektirir enter 8-10 kez yazmayı gerektirdiği yer gerektirir. Bu nedenle, yöntemimin bir hızı karşılaştırılabilir.
Şahsen ben kendim tercih 45Gd101G
üzerinde :45,101d
bu böyledir içinde, vi 'ın komutunun sözdizimi sopa gibi çünkü ben:
+---------+----------+--------------------+
| syntax | <motion> | <operator><motion> |
+---------+----------+--------------------+
| command | 45G | d101G |
+---------+----------+--------------------+
EscDüzenleme modunda olmadığınızdan emin olmak için tuşuna basın . İmleci silinecek ilk satırın üzerine yerleştirin. Girin :5dd
. Mevcut satır ve sonraki dört satır silinmelidir.
Alternatif olarak, satır numaralandırmayı açtıysanız ...
EscDüzenleme modunda olmadığınızdan emin olmak için tuşuna basın . :#,#d
Silinecek başlangıç ve bitiş satır numaralarının '#' yerine geçtiği yeri girin .
Belirli bir satır tetiklemesinden SONRA bir aralığı silmek istiyorsanız, bunun gibi bir şey kullanabilirsiniz.
:g/^TMPDIR/ :.,+11d
Bu, her karşılaşmadan sonra 11 satırı (dahil) siler ^TMPDIR
.
Tüm satırları silmek için şunu kullanın - ESC gg dG Birkaç satırı silmek için 5 diyelim ve ardından ESC 5dd kullanalım
Aşağıdaki şekilde yapılabilir ..