2012-12-28 18 views
15

Powiel możliwe:
How to sort numeric and literal columns in VimSortuj numerycznie w edytorze VI

muszę uporządkować poniższe linie oparte na identyfikator wątku.

Internal thread 0 bound to OS proc set {1} 
Internal thread 1 bound to OS proc set {5} 
Internal thread 2 bound to OS proc set {9} 
Internal thread 10 bound to OS proc set {41} 
Internal thread 9 bound to OS proc set {37} 

Kiedy wydawać :!sort -n dostają sortowane tak:

Internal thread 0 bound to OS proc set {1} 
Internal thread 1 bound to OS proc set {5} 
Internal thread 10 bound to OS proc set {41} 
Internal thread 2 bound to OS proc set {9} 
Internal thread 9 bound to OS proc set {37} 

Ale muszę im być klasyfikowane tak:

Internal thread 0 bound to OS proc set {1} 
Internal thread 1 bound to OS proc set {5} 
Internal thread 2 bound to OS proc set {9} 
Internal thread 9 bound to OS proc set {37} 
Internal thread 10 bound to OS proc set {41} 
+6

W twoim przypadku zrobione jako ':%! sort -n -k 3' –

+0

@MichaelBerkowski: Dzięki temu działa idealnie. Podaj tę odpowiedź jako odpowiedź, aby ją zaakceptować. Rozumiem opcje "n" i "3". Ale dlaczego potrzebuję dodatkowego '-k'. Czy 'n' nie jest wystarczający do sortowania numerycznego – arunmoezhi

+0

' -k 3' wyraźnie sortuje na trzecim polu. – sebnukem

Odpowiedz

26

Wystarczy użyć własną funkcję sortowania VIM jest. Wizualnie podświetlić tekst (lub użyć zakres) i typ:

:sort n

dokumentacja jest dostępna tutaj: http://vim.wikia.com/wiki/Sort_lines

albo w samej Vima: :help sort

(edytowane w celu odzwierciedlenia ważny punkt wyjaśnienia od dash-tom-bang i odniesienie do własnego pliku pomocy Vima.)

+1

Warto zauważyć, że to nie usuwanie dash jest tu wielką różnicą, ponieważ używa funkcji wbudowanej w Vima zamiast wywoływania zewnętrznej aplikacji (zauważ także brak '!'). Dokumentacja jest również dostępna w samym Vimie; ': help: sort ' –

+0

To ważne wyjaśnienie. Dzięki! – Nate

+1

Edytowałem swoją odpowiedź, ponieważ uważam, że twój punkt widzenia jest na tyle ważny, aby stać się bardziej zauważalnym. – Nate