2011-09-15 26 views
6

,: Varsayılan olarakIO akış operatörleri << and >> solunda nasıl hizalanır? yerine aşağıdaki uyum Örneğin

std::cout << "Hello " << " Hello " 
      << "world "; 

, Vim ilkini seçer:

std::cout << "Hello " << "Hello " 
    << "world "; 

istediğim << operatör olarak sola yaslar. Görünüşe göre yeni satır için girintiyi bir seviye artırıyor.

İkinci hizalamayı varsayılan olarak alabilmem mümkün mü?

P.S. Zaten Align eklentisi çalıştı, ama böyle bir tabloda bölgeyi hizalar: Ben de seyrek düşünün

std::cout << "Hello World" << "Hello " 
      << "World"  << "World Hello". 

.

cevap

4

Ben Tabular kullanıyorum ve bu beni

:Tabularize /^[^<<]\S* 


Çıktı için çalışır:

std::cout << "Hello World" << "Hello " 
      << "world " << "World Hello"; 

Açıklama

^ birinciye kadar << ardından ederek başlayarak <<, daha sonra maç tam olarak ilk << başlayacak.

+0

bu imho'nun en basit yoludur ve benzer kuralları tüm diğer dillerde de kolayca ayarlayabilirsin – dubvfan87

+0

Benim için iyi çalışmıyor. Bunun yerine ': Tab/\% (<<. * \) \ @

+0

@ib katılıyorum, thnx. Rejeksimdeki fazladan alandan kurtulmak için cevabımı da güncelledim. –

1

Align eklentisi ile, seçili metin satırlarını istediğiniz gibi hizalama komutu :<,>Align! l: <<. İlk argüman, ilk alanı sola hizalayıp satırın geri kalanını tek bir alan olarak ele almasını söyleyen bir AlignCtrl Komutudur. İkinci argüman ayırıcıdır. Hizalama kılavuzu mevcut tüm argümanları ve önceden tanımlanmış eşlemeleri açıklar.