Re: How to get vi to delete characters
>Most of the time I can get vi to insert characters after entering 'i'
>Also know how to :wq etc
>But I can't figure out how to delete characters: my book says ndd will
>delete N lines; but it doesn't work. In insert mode, backspace key
>often changes case of letters. Del key doesn't delete anything.
That sounds like either you're using a strange terminal, or a
less-capable vi clone, or both. Debian doesn't tend to give you strange
terminals (log in to other Unixes from Debian, though, and you'll find
plenty; I've never bothered digging deep enough to find out which), so I
suspect you're trying things which only work in certain vi clones.
First, install vim and use that as your vi. :)
A quick summary of deletion follows. For more than this, the vim online
help files are exceptionally good; use :help or :h. These commands have
to be executed in command mode; thus, if you're currently in insert
mode, you need to hit Escape first.
x Deletes one character
d<movement> Deletes everything from the current position to wherever
the movement would take you; sometimes this works in
terms of lines rather than characters. For example, dl
deletes a character, dw deletes a word, dj deletes this
line and the next, and d} deletes to the end of the
paragraph. As a special case, repeat the command to act
on the current line - thus, dd.
Nd<movement> As above, but you put a number before it to act multiple
times. 3dd deletes this line and the next two.
<visual>d Possibly the most intuitive, depending on your
background. Hit v to enter visual mode, where you can
move around and extend a block. Then commands, like d,
will act on that block and take you out of visual mode.
v again will cancel visual mode if you decide you made a
mistake. Visual mode is vim-specific.
s Like x, but takes you into insert mode afterwards. Short
c Like d in all its contexts, except "change" rather than
"delete": that is, it deletes then takes you into insert
mode. Note, cc changes the current line, *not* cd.
In insert mode, put 'set backspace=2' in your ~/.vimrc, or type ':set
backspace=2' at vim. (This might be the default, depending on your
package.) Then, backspace can backspace over the start of the current
insertion, which is what most people expect.
Like I say, for other basic vi things please consult the vim help files.
It looked here like you needed a bit more of a tutorial.
Colin Watson [email@example.com]