Farklı satırlarda farklı metin uzunluklarında seçim nasıl yapılır?


10

aşağıdaki metinlerim olduğunu varsayalım:

aaa-dd-e: "aaa",
bb-x: "bb",
c-9: "c"

Aşağıdaki gibi seçim yapmak istiyorum:

aaa-dd-e:"aaa",
bb-x:"bb",
c-9:"c"

Görsel bir blok oluşturmak için cv kullanmayı denedim, ancak ilk sütunda seçim oluşturduktan ve "f:" tuşuna bastıktan sonra (yukarıdaki gibi her satırda iki nokta üst üste işaretine seçim yapmak istedim), ne olsun:

aaa-dd-e: "aaa",:
bb-x"bb",
c-9:"c"

seçim ilk kolonda durur ve bir dikdörtgen oluşturur.


6
Bu seçimle ne elde etmek istersiniz, başka bir yol olabilir
Arjen Dijkstra

Karakterle ayrılırsa, önce bloğu yeniden hizalayıp ardından seçmeyi deneyebilirsiniz. Bakınız: Metni yalnızca VIM'deki ilk ayırıcıda hizalayın
kenorb

Yanıtlar:


6

Seçim genellikle bir amaç için ortalamadır, daha çok ilk etapta seçimin gerekli olmadığı Vim'de.

JSON olmayan dosyanızdaki özellik adlarının etrafına tırnak koymak istediğinizi varsayarsak, onu uygun JSON'a dönüştürmek için:

  1. değiştirilecek satırları seçin, karakter bazında veya satır bazında, önemli değil,
  2. :'<,'>norm I"^[f:i"( '<,'>sizin için otomatik olarak eklenir ve ^[ile elde edilir <C-v><Esc>).

Güzel surround eklentisine sahipseniz, 2. adım:

:'<,'>norm ^vt:S"

Bir ikame ile, 2. adım:

:'<,'>s/^\s*\([^:]*\):/"\1"

haklısınız, şimdi görsel seçimi muhtemelen gereksiz buluyorum. ya da :g/regex/normyapmak istediğim her şeyi elde edebilirim.
Aaron Shen

Seçilen bloğu sistem panosuna koyup başka bir dosyaya yapıştırmamın herhangi bir yolu var mı?
Aaron Shen

Elbette. Vim'inizin pano desteği ile derlendiğini varsayarak "+yveya "*yhedeflemek istediğiniz panoya bağlı olarak. Burada ilgili birçok soru var.
romainl

14

Vim, düğmesine bastığınızda pürüzlü sağ kenarlık haricinde yalnızca dikdörtgen bloklu seçimleri destekler $.

Çoklu seçimleri taklit edebilen eklentiler ( vim çoklu imleçler gibi ) vardır, ancak gerçek hedefinize (maalesef bahsetmediğiniz) örneğin saf Vim komutlarıyla :globalve :substitutedüzenli bir formüle edebiliyorsanız her satırdaki seçimle eşleşen ifade) veya makroları tekrarlayarak (her satırdaki seçimi kapsayan belirli bir hareket varsa).


bu çizgileri kesmek ve başka bir tampona yapıştırmak istersem ne olur?
Aaron Shen

1

Halkaya başka bir şapka atmak için, gerçekten görsel seçimi kullanmak istiyorsanız , iki nokta üst üste çizgilerini sıralamak için Tabular eklentisini kullanabilirsiniz, ardından görsel seçiminizi yapabilirsiniz.

Orijinal metninizi alırsanız:

aaa-dd-e: "aaa",
bb-x: "bb",
c-9: "c"

:Tab /:\zs kolondan sonra her şeyi aşağıdaki gibi hizalar

aaa-dd-e:  "aaa",
bb-x:      "bb",
c-9:       "c"

Ve sonra görsel blok seçiminizi yapabilirsiniz.

Diğerlerinin söylediği gibi, bu durumda muhtemelen görsel seçim gerekli değildir. Kullanmak normveya değiştirmek, görsel seçimlerle uğraşmadan istediğinizi başarabilir.


1

Bu soruna şaşırtıcı derecede basit bir çözüm buldum! Kopyalamak istediğiniz metin seçiminin altından görsel blok modunu başlatın ve yukarı doğru seçin! Siz ilerledikçe bloğu genişletir, aşağı doğru vurursanız seçimi küçültür.


Ama bu şekilde daima dikdörtgen bir blok olacak, değil mi? Okuduğumda, OP'nin istediği bu değil (görsel blok modunu denediklerini belirtiyorlar).
Martin Tournoij

Hayır. Tüm çizgiler aynı uzunlukta olursa, her zaman dikdörtgen bir blok olacaktır. En alttan başlayıp yukarı doğru vurgulamanın ve satırın sonuna gitmek için $ tuşuna basmanın satırın sonuna vurgulanan tüm vurgulanmış satırlarla sonuçlanacağını gördüm.
Arthur Bowers
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.