How can I delete all lines in a file using vi?
At moment I do that using something like this to remove all lines in a file:
echo > test.txt
How can I delete all lines using vi?
Note: Using dd is not a good option. There can be many lines.


==============

302
down voteaccepted
In vi do
:1,$d
to delete all lines.
The : introduces a command (and moves the cursor to the bottom).
The 1,$ is an indication of which lines the following command (d) should work on. In this case the range from line one to the last line (indicated by $, so you don't need to know the number of lines in the document).
The final d stands for delete the indicated lines.
There is a shorter form (:%d) but I find myself never using it. The :1,$d can be more easily "adapted" to e.g. :4,$-2d leaving only the first 3 and last 2 lines, deleting the rest.

===========


In vi I use
:%d
where
  • : tells vi to go in command mode
  • % means all the line
  • d : delete
On the command line,
> test.txt
will do also.
What is the problem with dd?
dd if=/dev/null of=test.txt
where
  • /dev/null is a special 0 byte file
  • if is input file
  • of is ouput file