Vim에서 빈 줄을 제거하기 위해 어떤 명령을 실행할 수 있습니까?
Vim에서 빈 줄을 제거하기 위해 어떤 명령을 실행할 수 있습니까?
답변:
:g/^$/d
:g
정규식과 일치하는 행에서 명령을 실행합니다. 정규식은 '빈 줄'이고 명령은 :d
(삭제)입니다.
:%!cat -s
선택이 될 수도 있습니다.
그것을 찾았습니다 :
g/^\s*$/d
출처 : vim wikia에서 g의 힘
간단한 설명
:g
:[range]g/pattern/cmd
이것은 각 행 일치 패턴 에 대해 Ex 명령 cmd 를 실행 하여 지정된 [범위] (기본 전체 파일)에서 작동합니다 (Ex 명령은 삭제 와 같이 콜론으로 시작하는 명령입니다 ). cmd를 실행하기 전에 " "가 현재 줄로 설정되어 있습니다.
:d
.
:v/./d
또는
:g/^$/d
또는
:%!cat -s
다음은 여러 개의 빈 줄만 제거하고 (하나의 빈 줄로 줄임) 하나의 빈 줄은 그대로 둡니다.
:g/^\_$\n\_^$/d
\_$
패턴 내에서 사용할 수있는 라인 의 끝을 의미합니다 (패턴 $
의 끝에서만 사용할 수 있습니다). 이는 라인의 시작\_^
을 의미 하며 패턴 내부의 어느 곳에서나 사용할 수 있습니다. 따라서 패턴은 빈 줄, 줄 바꿈 및 다시 빈 줄과 일치합니다. 참조 빔은 도움말 페이지를 정규식 .
:g/^$/,/./-j
모든 공백 줄을 제거하는 방법
:%s,\n\n,^M,g
(이 빈번한 행을 모두 사용 하여이 작업을 여러 번 수행하십시오)
빈 줄을 남겨두고 모든 공백 줄을 제거하는 방법
:%s,\n\n\n,^M^M,g
(여러 번 수행)
최대 공백에서 두 개의 빈 줄을 남기고 모든 빈 줄을 제거하는 방법,
:%s,\n\n\n\n,^M^M^M,g
(여러 번 수행)
^ M을 입력하려면 Windows에서 control-Q와 control-M을 입력해야합니다
\r
대신에 사용할 수도 있습니다 Ctrl-M
.
어때요?
:g/^[ \t]*$/d
이 페이지에서 몇 가지 답변을 시도했지만 많은 답변을 얻지 못했습니다. 어쩌면 Windows 7에서 Vim을 사용하고 있기 때문에 (모의하지 말고 동정하십시오 : p)?
Windows 7의 Vim에서 작동하는 가장 쉬운 방법은 다음과 같습니다.
:v/\S/d
Vim Wikia에 대한 더 자세한 답변은 다음과 같습니다. http://vim.wikia.com/wiki/Remove_unwanted_empty_lines
:g/^\s*$/d
^ begin of a line
\s* at least 0 spaces and as many as possible (greedy)
$ end of a line
풀
:command -range=% DBL :<line1>,<line2>g/^\s*$/d
.vimrc에서 vim을 다시 시작하십시오. : 5,12DBL 명령을 사용하면 5 번째 행과 12 번째 행 사이의 모든 빈 줄이 삭제됩니다. 내 답변이 가장 좋은 답변이라고 생각합니다!
이것은 나를 위해 일했다 :
:%s/^[^a-zA-Z0-9]$\n//ig
기본적으로 숫자 나 문자가없는 모든 줄을 삭제합니다. 내 목록의 모든 항목에 문자가 있었으므로 빈 줄이 모두 삭제되었습니다.