vi를 사용하여 파일의 모든 줄을 어떻게 삭제합니까?

vi를 사용하여 파일의 모든 줄을 어떻게 삭제합니까?

vi를 사용하여 파일의 모든 줄을 어떻게 삭제합니까?

현재 나는 파일의 모든 줄을 제거하기 위해 다음과 같은 것을 사용합니다.

echo > test.txt

을 사용하여 모든 줄을 어떻게 삭제할 수 있습니까 vi?

메모: 사용하는 dd것은 좋은 선택이 아닙니다. 많은 줄이 있을 수 있습니다.

답변1

하고 있는 vi

:1,$d

모든 줄을 삭제하려면.

명령 :을 소개하고 커서를 맨 아래로 이동합니다.
는 다음 명령( )이 작동해야 하는 1,$행을 나타냅니다 . d이 경우 첫 번째 줄부터 마지막 ​​줄까지의 범위입니다( 로 표시되므로 $문서의 줄 수를 알 필요가 없습니다).
마지막은 d표시된 줄을 삭제하는 것을 의미합니다.

더 짧은 형식( :%d)이 있지만 나는 그것을 전혀 사용하지 않습니다. 예를 들어 처음 3줄과 마지막 2줄만 남기고 나머지는 삭제하도록 :1,$d더 쉽게 "적응"할 수 있습니다 .:4,$-2d

답변2

vi에서 나는 사용한다

:%d

어디

  • :vi에게 명령 모드로 들어가라고 지시합니다.
  • %모든 라인을 의미
  • d: 삭제

명령줄에서,

> test.txt

또한 그럴 것이다.

dd에 무슨 문제가 있나요?

dd if=/dev/null of=test.txt

어디

  • /dev/null특수한 0바이트 파일입니다.
  • if입력 파일입니다
  • of출력 파일입니다

답변3

다음을 수행하는 것이 좋습니다(모든 POSIX 호환 셸에서 작동해야 함).

> test.txt

정말로 vi로 하고 싶다면 다음과 같이 하십시오:

  • 1G (첫 번째 줄로 이동)
  • dG(마지막 줄까지 삭제)

답변4

커서가 첫 번째 줄에 있는 경우(그렇지 않은 경우 다음을 입력: gg또는 1G) 를 사용할 수 있습니다 dG. 현재 줄부터 파일 끝까지 모든 줄을 삭제합니다. 따라서 파일에서 모든 줄을 삭제하려면 두 줄을 함께 혼합하면 됩니다. 이는 다음과 같습니다 ggdG(명령 모드에서).

또는 %dEx 모드에서는 명령줄 예: vim +%d foo.bar.

관련된:VIM에서 현재 줄부터 파일 끝까지 모든 텍스트를 어떻게 삭제할 수 있나요?

관련 정보