[vim] Vim : 두 번째 행마다 삭제하는 방법?

Vim에서 수행하는 방법 :

전에:

aaa
bbb
ccc
ddd
eee
fff

후:

aaa
ccc
eee



답변

이를 위해 매크로를 사용할 수 있습니다. 다음을 수행하십시오.

  • 명령 모드에서 시작하십시오.
  • 를 눌러 파일의 시작 부분으로 이동합니다 gg.
  • 를 누릅니다 qq.
  • 아래쪽 화살표를 클릭하고 dd뒤를 누릅니다 .
  • 를 누릅니다 q.
  • 프레스 10000@q

추신 : 명령 모드로 이동하려면 Escape를 몇 번 누르십시오.


답변

작업을 수행하는 우아하고 효율적인 방법은 :+delete명령을 사용하여 모든 줄에서 현재 줄 다음 줄을 제거하는 명령 을 호출하는 것입니다 :global.

:g/^/+d


답변

주어진 일반 모드 명령을 사용 :normal하거나 :norm실행할 수 있습니다 . 출처.

:%norm jdd


답변

:map ^o ddj^o
^o

여기서 ^는 CTRL을 의미합니다. 두 줄마다 한 줄을 삭제하는 재귀 매크로입니다. 첫 번째 줄을 잘 선택하면 완료됩니다.


답변

에서 VIM 메일 아카이브 :

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

(vim 명령 줄에서 한 줄에 입력하려면 1,3,5,7, … 행을 삭제합니다.)


답변

쉘 명령을 통해 항상 파이프 할 수 있습니다. 즉, 원하는 스크립팅 언어를 사용할 수 있습니다.

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

(또는 원하는 줄에 따라 “if”대신 “unless”사용)


답변

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

대안으로

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

제거하려는 절반에 따라 다릅니다.