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
(명령 모드에서).
또는 %d
Ex 모드에서는 명령줄 예: vim +%d foo.bar
.