Usando Vim 6.0. Supongamos que estoy editando este archivo:Cómo ordenar columnas numéricas y literales en Vim
sdfsdg
dfgdfg
34 12
2 4
45 1
34 5
¿Cómo ordeno la segunda columna?
Usando Vim 6.0. Supongamos que estoy editando este archivo:Cómo ordenar columnas numéricas y literales en Vim
sdfsdg
dfgdfg
34 12
2 4
45 1
34 5
¿Cómo ordeno la segunda columna?
Si tiene cáscara decente disponible, seleccione sus números y ejecutar el comando
:'<,'>!sort -n -k 2
Si va a tipo esto en modo visual, después de escribir el colon, marcadores '<,'> se appead automáticamente y solo tendrás que escribir el resto.
Este tipo de comandos (: [movimiento]!) Se llama que filtra. Se puede obtener más información consultando la ayuda de Vim:
:h filter
un ejemplo de esto, por favor: '<,'>! Ordenar -n -k 2? – vehomzzz
También recibo un error: E20: Mark no está configurado – vehomzzz
Este es un comando de modo visual - Pavel usó 'V' para seleccionar un rango, luego tipeó': ', que inserta automáticamente el rango de selección visual' '<,'> ', y luego tipeó el comando real '! sort -n -k 2'. Por supuesto, puede especificar el rango de alguna manera; consulte ': rango de ayuda" si tiene curiosidad. – Cascabel
Ordenar todas las líneas de la segunda columna N mediante el uso de comandos de Vim sort
, por ejemplo,
:sort /.*\%2v/
Referencia: vimtips.txt
¡Guau, vim tiene un procedimiento de clasificación interno! ¿Qué tan grande es ese bastardo? –
Ningún comando de clasificación en vim 6.0 :( – vehomzzz
Cualquier razón por la que no puede actualizar? Vim.org dice 7.2 es la última versión estable –
Para vim7 Yo iría por:
:sort n /.*\s/
Esto ordenar los números haciendo caso omiso de texto que coincide con expresión regular dada. En tu caso, es la segunda columna.
Ordenar por segunda columna seleccionándolo en modo visual (por ejemplo control + v), a continuación, ejecute:
!sort
o para ordenar por tercera columna
sort -k 3
o
:sort /.*\%3v/
Alternativamente, seleccione las líneas que desea ordenar con el comando Shift + V. A continuación, introduzca
!sort -k 3n
o usar el siguiente código para contar Vim saltarse las dos primeras palabras en cada línea y cada especie en lo siguiente:
:%sort /^\S\+\s\+\S\+\s\+/
o es decir, ordenar por octava línea:
:sort /.*\%55v/
La especificación 'virtual' es el número absoluto de columna, que trata espacios + pestañas como carácter único (en breve, no cuenta las pestañas como ocho espacios),
modo para ordenar por última columna:
:%sort /\<\S\+\>$/ r
Esta debería ser la respuesta. Pero shell '¡tipo!' también es bueno. – firedev
relacionada, si su segunda (o tercera, cuarta ...) la columna pasa a ser la primera columna con un número decimal, tenga en cuenta que puede usar simplemente ': ordenar n', como dice la ayuda:" Con [n] ... la clasificación se realiza en el primer número decimal en la línea. .. "Esto no se aplica a tu caso, pero podría serlo para alguien más. – Rabarberski