Niedawno zdałem sobie sprawę z !
techniki filtrowania i uwielbiam ją. Niestety nie jestem w stanie używać go w trybie wizualnego blokowania. Mam nadzieję, że niektórzy eksperci tutaj pomogą mi.
Zasadniczo chcę na miejscu posortować kolumnę, taką jak trzecia poniżej (tylko MWE). I nie chcę przeszkadzać innym kolumnom podczas sortowania.
Próbowałem odfiltrować ( !
) wizualnie (tryb blokowy) wybraną trzecią kolumnę za pomocą sort
narzędzia. Ale sortowanie raczej wykracza poza zaznaczenie, tzn. Wszystkie wiersze są zamieniane, a nie tylko zaznaczenie, to też sortowanie na podstawie pierwszej kolumny!
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
Wybrałem ostatnią kolumnę za pomocą bloku wizualnego i powiedziałem, !sort --reverse
który pokazuje się jako
'<,'>!sort --reverse
A wynik jest dziwny w przeciwieństwie do tego, czego się spodziewałem. W wyniku posortowano / zamieniono całe wiersze, a nie tylko jedną kolumnę, i to również, w oparciu o pierwszą kolumnę, niezależnie od mojego wyboru trzeciej kolumny!
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
O ile nie jest to niemożliwe inaczej, chciałbym raczej czyste rozwiązanie sortowania vim + niż stosunkowo zaawansowane narzędzia, takie jak sed
/ awk
. Ważniejsze jest, aby wiedzieć, jak ograniczony jest tryb blokowania wizualnego w porównaniu do, powiedzmy, trybu wizualnego.
źródło
sort
dostępne wewnętrzne polecenie vim , więc nie musisz wywoływać zewnętrznego,!sort
aby wykonywać regularne sortowanie.:help filter
), ale także ustandaryzowane (przepraszam, nie wiem jak głęboko połączyć tego POS). Nie możesz narzekać, jeśli nie RFTM.Odpowiedzi:
Myślę, że twoją najlepszą nadzieją jest wtyczka vis.vim . Ta wtyczka udostępnia polecenie,
B
które pozwala zastosować polecenie do bloku.Tutaj po zainstalowaniu wtyczki wybierz blok, a następnie użyj:
Zauważ, że polecenie może być cokolwiek, więc zamiast tego
!sort
możesz wykonać wiele innych operacji w bloku, takich jak zapisanie go w innym pliku (:'<,'>B w foo.txt
) lub zastosowanie podstawienia (:'<,'>B s/foo/bar/g
)źródło
$
jest używany w blokowym trybie wizualnym.