¿Cómo puedo agregar números de línea a un rango de filas en vim? No como en ": establecer nu": esto solo muestra números, pero no los agrega al archivo.Agregar números de línea al código fuente en vim
Respuesta
Con
:%s/^/\=line('.')/
EDITAR: para resumir los comentarios.
Este comando se puede ajustar tanto como desee.
Digamos que desea agregar números delante de las líneas de una selección visual (V
+ moverse), y desea que la numeración se inicia en 42.
:'<,'>s/^/\=(line('.')-line("'<")+42)/
Si desea agregar una cadena entre el número y el texto anterior de la línea, simplemente concatenar (con .
en VimL) a la expresión de número:
:'<,'>s/^/\=(line('.')-line("'<")+42).' --> '/
Si necesita este para ordenar en forma de texto, es posible que desee almohadilla cero los resultados, los cuales se pueden hacer usando printf
para 0001, 0002
... en lugar de 1, 2
... ej:
:%s/^/\=printf('%04d', line('.'))/
De todos modos, si desea obtener más información, basta con abrir vim ayuda: :h :s
y seguir los enlaces (|subreplace-special|
, ..., |submatch()|
)
cat -n
agrega números de línea a su entrada. Puede canalizar el archivo actual a cat -n
y reemplazar el búfer actual con lo que imprime en stdout. Afortunadamente esta solución complicada es menos de 10 caracteres en vim:
:%!cat -n
O, si sólo desea una subselección, seleccionar visualmente la zona, y escribe esto:
:!cat -n
Eso pondrá automáticamente el visual marcadores de selección, y se verá así después de haber tecleado:
:'<,'>!cat -n
para borrar los números de línea, recomiendo el uso de control-v
, lo que permitirá Para seleccionar visualmente un rectángulo, puede eliminar ese rectángulo con x
.
Lo que si quieres los números de línea comienzan con 0 en lugar de 1? – Nils
Borrar la primera línea, numerar el resto. Primero se leyó la primera línea con un '0' inicial. ;) – sjas
¡ESA es la respuesta! – user3751385
Con entorno tipo Unix, puede usar cat o awk para generar un número de línea fácilmente, porque vim tiene una interfaz amigable con shell, por lo que todo funciona tanto en vim como en shell.
De Vim Tip28:
:%!cat -n
o
:%!awk '{print NR,$0}'
Pero, si se utiliza vim en MS-DOS, de win9x, Win2000, que la pérdida de estos kit de herramientas. aquí es una manera muy sencilla para archivar esto sólo por vim:
fu! LineIt()
exe ":s/^/".line(".")."/"
endf
O, una secuencia compuesta con el alfabeto es tan fácil como antes:
exe "s/^/".nr2char(line("."))."/"
También puede utilizar un subst:
:g/^/exe ":s/^/".line(".")."^I/"
puede también sólo desea imprimir las líneas sin agregarlos al archivo:
"A veces puede resultar especialmente útil editar grandes archivos fuente para imprimir los números de línea en papel.
Para hacerlo, puede usar la opción:set printoptions=number:y
para activar y:set printoptions=number:n
para desactivar esta función.
Si el número de línea se debe imprimir siempre, colocar la líneaset printoptions=number:y
en elvimrc
"
¿Quisiste decir 'gato' en lugar de 'llamar' en el primer ejemplo? –
@Lance: dos años después, no estoy muy seguro: la revisión 3 de esta publicación me muestra revertir una corrección de 'cat' a' call' ... (la fuente probablemente sea Vim tip28 como en http: //neuron.tuke .sk/~ hudecm/VimTips-OFFLINE-nov02.txt) – VonC
OK, la línea awk era lo que necesitaba de todos modos. ¿Sabes cómo implementaría eso para que me diera 3 o 4 números de letras, como comenzar con 100 o 1000? –
En un sistema GNU:. Con el nl
externa binaria:
:%!nl
cool nl -v le permite especificar dónde debe comenzar la numeración, por lo que si desea que la primera línea sea la línea 0 en lugar de 1 use nl -v 0 – Nils
ElEl complemento 210 es bueno para insertar columnas de números incrementales en general (o letras, fechas, números romanos, etc.). Puede controlar el formato de número, el relleno, etc. Así que inserte un "1" delante de cada línea (a través de :s
o :g
o inserción de bloque visual), resalte esa columna en el modo de bloque visual y ejecute uno de los comandos del complemento.
En primer lugar, puede quitar los números de línea existentes si es necesario:
:%s/^[0-9]*//
A continuación, puede agregar números de línea. NR
se refiere al número de línea actual que comienza en uno, por lo que puede hacer algunas operaciones matemáticas para obtener la numeración que desea. El siguiente comando le da cuatro números de línea dígitos:
:%!awk '{print 1000+NR*10,$0}'
- 1. Agregar imágenes al código fuente
- 2. vim - formato automático del código fuente de golang al guardar
- 3. ¿Cómo agregar texto al final de cada línea en Vim?
- 4. Xcode: Agregar WorkspaceSettings.xcsettings al control de código fuente
- 5. ¿Debo agregar archivos .vcxproj.filter al control de código fuente?
- 6. ejecutar python código fuente línea por línea
- 7. Opción Vim Spell para ignorar los identificadores de código fuente que contienen subrayado, números, etc.
- 8. VIM: ¿Buscar solo entre números de línea específicos?
- 9. Convirtiendo BCI (índices de códigos de bytes) a números de línea de código fuente
- 10. Cómo autoindent código fuente de Ruby en Vim
- 11. ¿Cómo puedo agregar números de línea no seleccionables por el mouse a vim?
- 12. números de línea vim: cómo tenerlos activados de manera predeterminada?
- 13. Primeros "Error al crear el mapeo" al agregar una solución al control de código fuente TFS
- 14. Opción "Agregar al control de código fuente" al crear un nuevo proyecto C# en VS 2010
- 15. Números de línea de registro del código java ejecutado
- 16. ¿Cómo se busca todo el código fuente en Vim?
- 17. Buscar cadena y agregar línea en vi/vim
- 18. Editar código fuente al depurar
- 19. línea más larga en vim?
- 20. números de línea relativa en Emacs
- 21. ¿Debo agregar .vs10x al control de fuente?
- 22. ¿Cómo puedo agregar automáticamente algún código de esqueleto al crear un nuevo archivo con vim
- 23. Línea horizontal en vim
- 24. vim memoria de línea limitada
- 25. ¿Cómo agregar números de línea a una UITextView?
- 26. Al presionar "Inicio" en Vim en una línea con sangría
- 27. Agregar caracteres al inicio y al final de cada línea en un archivo
- 28. Código de bytes al código fuente de Java
- 29. Agregar una carpeta de código fuente existente a Git
- 30. cómo puedo agregar Agregar texto al comienzo de cada línea?
Probado haciendo esto en una selección visual (donde 1 sería la primera línea en la selección) sin embargo, comienza el número en ese numerador de línea en el archivo. ¿Alguna forma de modificar el número de inicio? ¡Gracias! – Jason
Por supuesto. Cambia "line ('.')" To "(offset + line ('.'))". –
@Jason 'offset' puede ser' 1-line ("'<") '. Preguntándome por qué apareció esa pregunta tan antigua en mi RSS. – ZyX