Pregunta Vim: ¿cómo eliminar cada segunda fila?


Cómo hacerlo en Vim:

ANTES DE:

aaa
bbb
ccc
ddd
eee
fff

DESPUÉS:

aaa
ccc
eee

74
2017-12-22 14:35


origen


Respuestas:


Puedes usar una macro para esto. Haz lo siguiente.

  • Comience en el modo de comando.
  • Vaya al principio del archivo presionando gg.
  • prensa qq.
  • Haga clic en la flecha hacia abajo y presione dd después.
  • prensa q.
  • prensa 10000@q

PD: Para ir al modo de comando, simplemente presione Escape un par de veces.


87
2017-12-22 14:40



Una forma elegante (y eficiente) de lograr la tarea es emitir el :+delete comando quitando la línea al lado de la actual, en cada línea utilizando el :global mando.

:g/^/+d

217
2017-12-01 03:20



Nosotros podemos usar :normal o :norm para ejecutar los comandos del modo normal. Fuente.

:%norm jdd

55
2017-12-01 00:12



:map ^o ddj^o
^o

Aquí ^ representan CTRL. Macro recursiva para eliminar una línea cada dos líneas. Elige bien tu primera línea y listo.


10
2017-12-22 17:25



de archivo de correo vim:

:let i=1 | while i <= line('$') | if (i % 2) | exe i . "delete" | endif | let i += 1 | endwhile

(Para escribir en una línea en la línea de comandos vim, eliminará la fila 1,3,5,7, ...)


7
2017-12-22 14:40



Siempre puede canalizar a través de un comando de shell, lo que significa que puede usar cualquier lenguaje de scripts que desee:

:%!perl -nle 'print if $. % 2'

(o use "a menos" en lugar de "si", dependiendo de las líneas que desee)


5
2017-12-22 14:50



:%!awk -- '++c\%2'

alternativamente

:%!awk -- 'c++\%2'

dependiendo de qué mitad quieres eliminar.


4
2017-12-22 15:00