Önceki satırdaki “=” ye kadar içeriği nasıl geriye doğru silebilirim?


9

Javascript kodunun bir örneğini kullanıyorum:

1        var a = 1;
2        var b = |{};

İmleç |(imleç şekli blok olduğunda "{" karakterinde) konumundadır, ben abir nesne atanmasını istiyorum, bu yüzden aşağıdaki gibi değiştirmek istiyorum:

1        var a = {};

Bu yüzden imlecin "{" üzerinde ne zaman olduğunu bilmek istiyorum, "{" işaretinden sonra satır 1'deki "=" işaretinden sonraki boşluğa kadar tüm içeriği nasıl hızlı bir şekilde silebilirim?

Diğer normal editörlerde, kodu silmek için geri silme tuşuna basacağım. Ama bunu vim'de nasıl başaracağım.


ayrıca igeri silme tuşuna basıp kullanabilirsiniz. Bunun için hiçbir vücut seni vurmayacak. Bence.
elyashiv

1
ancak geri silme yukarıdaki satırın karakterini silmez
Aaron Shen

3
@AaronShen Bu 'geri silme' ayarınıza bağlıdır. O içeriyorsa eolsonra silme olacak satır sonlarını silin. Ayrıca startayara dahil olmanız gerekir . (Bkz. :help backspace). Yine de bu yöntemi kullanmayın! Aşağıdaki cevaplarda ayrıntılı olarak açıklanan çok daha hızlı yöntemler vardır.
Zengin

Yanıtlar:


20

Soruyu tamamen anladığımdan emin değilim, ancak yalnızca siz elde edene kadar silmek istiyorsanız var a = {};, imleç konumundan şunu kullanabilirsiniz:d?1Enter

dbir hareket alır ve /ileriye doğru arama veya ?geriye doğru arama için ona bir arama deseni verebilirsiniz .

İşte bunu gösteren küçük bir gif:

resim açıklamasını buraya girin


1
Muhtemelen Enteryazdıktan sonra vurmanız gerektiğini belirtmek gerekir d?1.
Zengin

@Rich gerçekten teşekkürler, cevabı içerecek şekilde güncelledim.
akshay

1
Bu kabuk hangi yazı tipini kullanıyor?
Chris Burt-Brown

@ ChrisBurt-Brown: Terminus
akshay

10

Vim kullanıyorsanız (klasik vi değil), o zaman örneğinizde vkd(veya vkx) yapabilirsiniz.

  • v 'görsel' (seç) moduna geçirecek
  • k silinmesini istediğiniz bölümü seçerek imleci '1' üzerine getirmek için bir satır yukarı gider
  • dya xda seçimi silecek

5

Sil

Bu özel örnek için, dgkbunu yapmanın en hızlı yollarından biridir.

dOlarak komut, Akshay açıkladı , tüm imleç başladığı yerde arasındaki karakterler silme, hareketi tarafından izlenen ve hareket onu nereye götürecek edilebilir.

Kodunuzda, imleç konumu ile aynı sütun arasındaki her satırı bir satır daha silmek istersiniz, böylece imleci hareketle yukarı doğru hareket ettirmek gk(bir işleçle kullanıldığında çizgisel olmayan) hedefinize ulaşır.

EDIT: BobH yorumlarda bu yöntemin yalnızca 'wrap'ayarlandığında çalıştığını belirtir . Bu nedenle, her zaman sarma ayarınız yoksa, muhtemelen bu sayfadaki diğer cevapların önerdiği gibi dvkveya seçeneğini kullanmanız daha iyi olur vkd.

Kelimeleri Geri Sil

Ayrıca şunları kullanabilirsiniz: d5bveya d4B, sırasıyla 5 kelimeyi veya 4 WORD'ü geriye doğru siler. ( 1;bir WORD, ancak iki normal kelimedir).


dk neden hem mevcut satırı hem de yukarıdaki satırı tamamen silecek
Aaron Shen

@AaronShen Hayır. Dene.
Zengin

1
@ Bu sizin için işe yarıyorsa o silme hareketini sağlayan bir ayarınız vardır. Sadece test ettim vim -u NONE -U NONEve her iki satırı da sildi.
Vitor

@Vitor Haklısın. Şimdi hangi ayarın yapıldığını anlamaya çalışıyorum.
Zengin

1
BTW gkgörünüşe göre :set wrap(biraz şifreli olarak) gerektiği gibi kullanarak çıkıyor . Bunun neden herkes için işe yaradığını ama benim için değil, gkaynı şekilde yardımın çalışması gerektiği anlamına geldiğini anlayamadım . Tek ipucu, ana anlamının gksarılmış çizgilerle ilgisi olmasıydı . Bir kez (bir kapris üzerinde) şal ayarlamaya çalıştım, voila, işe yaradı.
BobH

1

Henüz yorum yapamıyorum, bu yüzden yeni bir cevap vermem gerekiyor. d kUyumlu olmayan seçeneği kullanırken bile Rich tarafından verilen tuşlar benim için çalışmaz. Bunun nedeni, hareketin kvim tarafından yeni çizgi olarak kabul edilmesi olabilir , bu durumda her iki satır da silinir. Gönderen :help d:

D {motion} komutu için bir istisna: Hareket satır içi değilse, hareketin başlangıcı ve bitişi aynı satırda değildir ve yalnızca hareketin başlamasından önce ve bitiminden sonra boşluklar olur, silme işlemi linewise. Bu, silme işleminin aynı zamanda beklediğiniz boşluk satırını da kaldırdığı anlamına gelir. | O_v | Hareketi karakterli olmaya zorlayan operatör

Ayrıca çözümü de gösterir: dvkHareketi karakter açısından zorlamak için kullanın . Bu benim için hile yapar.

Daha önce o_v bilmiyordum, işte :help o_v:

v

Operatörden sonra, hareket komutundan önce kullanıldığında: Hareketi hareketsiz olduğunda da operatörün karakterli çalışmaya zorlayın. Eğer hareket çizgi halinde olsaydı, | exclusive | olur. Hareket zaten karakter yönündeyse, kapsayıcı / dışlayıcı arasında geçiş yapın. Bu, özel bir hareketi kapsayıcı ve kapsayıcı bir hareketi özel yapmak için kullanılabilir


'Uyumsuz' şey tamamen kırmızı bir ringa balığıydı. Test ederken berbat ettim çünkü bir aptalım.
Zengin

Ayrıca gk'nin münhasır olmadığı ve satırbaşı olmadığı dgk'yi de kullanabiliriz.
MS.Kim
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.