218

How can I delete a line in VI?

Here what I am doing right now:

  1. Open up the terminal alt + ctrl + t
  2. vi a.txt
  3. I move my cursor to the line which I wan to delete, then what key-combination is should use to delete line in vi editor?
2

7 Answers 7

361

Pressing dd will remove that line (actually it will cut it). So you can paste it via p.

0
23

As others said, it's dd if you're in normal mode (press ESC) to ensure you are in normal mode, but by default, you will be. You may have found that vi doesn't act as you would expect an editor to act. It's pretty unique, and those unique features make it extremely powerful and fast to work with. If you want to learn more, you can run vimtutor at the command line, and you'll get a quick (maybe an hour worth of reading/experimenting) tutorial on the basics of how to use it.

Now, you can use an editor with a more familiar interface. Most systems have nano. You can type nano a.txt to open your file in nano. You can even go a step further - there isn't any reason you have to use a terminal-based editor. Since you mentioned using (Ctrl+Alt++T) and this is the default shortcut in Ubuntu and some other Gnome distributions, so I'd be surprised if you didn't have gedit installed. At the command line, try gedit a.txt and you'll get a graphical editor.

3
  • A few people need it. If you edit text files regularly, it's worth the time to learn vim. If you don't, and you're just trying to follow some instructions to get something working, then it's probably not worth it unless you just interested in trying different software and learning new things. Commented Apr 15, 2011 at 16:36
  • I fired vimtutor at command line, and it opened up a vim, with a temp. file. Have I done any mistake?
    – I-M-JM
    Commented Apr 16, 2011 at 4:21
  • @i-m-jm I don't think you've made a mistake, but your system might have an unusual configuration. It should open a document that begins "Welcome to the VIM Tutor". If you're interested in working through that, you should post another question. Commented Apr 16, 2011 at 8:57
15

To delete the line under the cursor, use dd.

The delete command accepts all the normal positional modifiers, so if you are on the beginning of the line below the one you want to delete, you could just dk to go into delete mode and move up one line, deleting everything the cursor passed.

You can also specify repetition, so 5dd will delete the line under the cursor five times, effectively deleting the current and following four lines.

1
  • 9
    Or d5d. I don't know why, but I prefer this. (Fun fact: NdMd deletes N × M lines)
    – Random832
    Commented Apr 15, 2011 at 19:28
8

Esc dd after going to the line you want to delete

2
  • 2
    The escape is not necessary, if you can go to the line you want to delete.
    – Anthon
    Commented Jan 14, 2014 at 6:15
  • 4
    Escape is needed if you use the arrow keys in insert mode to go to the right line.
    – Alexander
    Commented May 4, 2014 at 20:02
3
  • dd delete (cut) a line and stay in the COMMAND mode.
  • S delete (cut) a line and go to the INSERT mode.
1
  • And small s cuts the current character and goes to insert mode Commented Jun 27 at 8:49
1

In visual mode,

shift+v, choose the lines, then d

ctrl+v, choose the columns, then d

0
0

If you want to delete all lines containing a pattern, use g/pattern/d, for example:

:g/r[ea]gu.*r/d

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .