Diğer sütunları değiştirmeden bir sütunu sıralama


10

Son zamanlarda filtreleme !tekniğinin farkındaydım ve onu seviyorum. Ne yazık ki, görsel blok modunda kullanamıyorum. Umarım buradaki bazı uzmanlar bana yardımcı olur.

Temel olarak, aşağıdaki üçüncü gibi bir sütun sıralamak istiyorum (sadece bir MWE). Ve sıraladığımda diğer sütunları rahatsız etmek istemiyorum.

!Görsel (blok modu) seçilen üçüncü sütun sortyardımcı programı aracılığıyla filtre ( ) çalıştı . Ancak sıralama, seçimin ötesine uzanır, yani tüm satırlar, yalnızca seçim değil, ilk sütuna dayalı olarak da sıralanır .

1.  LARGEST         40
2.  SECOND-LARGEST  168     
3.  MID             2.8     
4.  MID             540     
5.  MID             14.84   
6.  MID             40      
7.  SECOND-LEAST    64      
8.  LEAST           8

Görsel-bloğu kullanarak son sütunu seçilir, ve bahsedilen !sort --reverseolarak gösterir ki

'<,'>!sort --reverse

Ve sonuç beklediğimden farklıdır. Sonuçta, yalnızca bir sütun değil tüm satırlar sıralanır / değiştirilir ve üçüncü sütun seçimimden bağımsız olarak ilk sütuna dayanır !

 8.  LEAST           8    
 7.  SECOND-LEAST    64      
 6.  MID             40      
 5.  MID             14.84   
 4.  MID             540     
 3.  MID             2.8     
 2.  SECOND-LARGEST  168     
 1.  LARGEST         40   

Aksi halde imkansız olmadığı sürece, sed/ gibi nispeten gelişmiş araçlar yerine saf bir vim + sıralama çözümü istiyorum awk. Görsel blok modunun, görsel mod ile karşılaştırıldığında, kendimi bilmek daha önemlidir.


Bu sorununuzu çözmez, ancak sortmevcut bir vim dahili komutunun bulunduğunu unutmayın , bu nedenle harici bir dosyayı !sortnormal bir sıralama için çağırmanız gerekmez .
Dalker

2
Filtreler yalnızca satırlarda çalışır .
romainl

@Dalker Evet, teşekkürler. Ama ben zaten denedim, benzer bir sonuç verdi.
Olasılığı

@romainl Öyle mi? Umut ışığı yok mu? Ben nadiren Vim ile oluyor bulmak !! Ama yine de, çıktı başka bir şey seçtikten sonra "Filtreler sadece satırlarda çalışır" demek garip değil mi? Bir uyarı / hata açmazsa, bunun bir HATA olduğunu bile iddia ederim.
Olasılığı

Bir böcek? Haha hayır. Davranış sadece belgelenmiştir ( :help filter) değil, aynı zamanda standartlaştırılmıştır (üzgünüm, bu POS'u nasıl derinden bağlayacağımı bilmiyorum). RFTM yapmıyorsanız şikayet edemezsiniz.
romainl

Yanıtlar:


9

En iyi umudun vis.vim eklentisidir. Bu eklenti, Bbir bloğa komut uygulanmasına izin veren bir komut sağlar.

Eklentiyi yükledikten sonra bloğunuzu seçip şunu kullanırsınız:

:'<,'>B !sort

Komutun herhangi bir şey olabileceğini unutmayın, bunun yerine !sortblokta başka bir dosyaya ( :'<,'>B w foo.txt) kaydetmek veya bir ikame ( :'<,'>B s/foo/bar/g) uygulamak gibi birçok başka işlem yapabilirsiniz.


1
@LovesProbability, Üçüncü sütunu ilk iki sütununu değiştirmeden sıralamaya çalışıyorsanız, bu iş parçacığı yardımcı olabilir.
Jair López

@ JairLópez Hiçbir suç olmadan, sorumun orijinal bir kaynağa geri dönmesinin istendiği başka bir yere nasıl kopyalandığı gerçekten komik (yani bu cevabın yeniden düzenlenmiş bir kopyasının yanındaki bu sayfa) ve son olarak benden bir cevap bulmamı istiyorsun.
Olasılığı

Yorumunuz için teşekkür ederim, yaptım çünkü (1) hem sorunuz hem de bu cevap ilginçti; (2) belki yalnız değilsiniz ve ilgilenen daha fazla kişi olabilir; (3) Bu, birinin $bloklu görsel modda nasıl kullanıldığını anlamasına yardımcı olmak için harika bir fırsattır .
Jair López
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.