LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Slackware (https://www.linuxquestions.org/questions/slackware-14/)
-   -   using backspace or delete in vi (https://www.linuxquestions.org/questions/slackware-14/using-backspace-or-delete-in-vi-132091/)

Didier Spaier 06-01-2018 06:17 PM

Quote:

Originally Posted by stf92 (Post 5862314)
A question: what has .vimrc to do with vi?

Did you notice that the previous post of this thread is more than 13 years old?

Furthermore the answer has been given in post #4, more that 14 years ago!

stf92 06-01-2018 06:44 PM

So?

enorbet 06-01-2018 06:56 PM

Although I started with Slackware v9.0 and began using vi then, I can't recall how it functioned back then in terms of the Delete and Backspace keys. That said, since v12 iirc the stock vim that comes with each release has very handy default configs from my POV. I can delete a character or a series of characters with the Delete key without ever having invoked "i" insert mode and then save that with the ordinary ":wq" command, without ever having entered insert mode. I know that's only one keystroke and a very minor issue but the point is Delete key does delete and rather handily in modern vim. Perhaps there is a way to utilize a more modern version in your older system. It certainly would be trivial to try.

Edit : NecroOOPS!

stf92 06-01-2018 07:42 PM

I say vi's default behavior in what respects to the backspace key is weird. The name of the key implies its function: go back one space. But vi does not seem to agree. If you edit a new file (with vi), type some letters (except Enter), save and quit. Then reedit it and press A (that will send the cursor to the end of the line) and you now press the backspace key, you'll see nothing happens! It is this behavior that keeps people away from vi and throus them in the arms of vim.

I have read many posts regarding this strange default behavior of the backspace key but none of them has ever been of any use to me. I think it would be intelligent on the part of the developers (if vi is still being maintained) to make the default behavior of the backspace key that which it has in vim (which on the other hand is logical) and, if someone wants to make it do those strange things, then write the appropriate line in its config file which, by the way, I don't know which it is (I mean, has vi a cofiguration file like .vimrc in vim?).

One thing is still odder. I have vi installed by default in Debian 9. Then I installed vim and wrote this ~/.bashrc:
Code:

semoi@debian:~$ cat .vimrc
set backspace=indent,eol,start
fixdel
semoi@debian:~$

Now I ran vi and found the backspace key behaved as in vim (normal behavior). Excelent I said, and uninstalled vim. But then vi reverted to its old behavior. Does this mean when I installed vim vi became a link to vim?

volkerdi 06-01-2018 09:46 PM

Quote:

Originally Posted by stf92 (Post 5862364)
I say vi's default behavior in what respects to the backspace key is weird. The name of the key implies its function: go back one space. But vi does not seem to agree. If you edit a new file (with vi), type some letters (except Enter), save and quit. Then reedit it and press A (that will send the cursor to the end of the line) and you now press the backspace key, you'll see nothing happens! It is this behavior that keeps people away from vi and throus them in the arms of vim.

You've put vi (elvis) into insert mode. Insert mode will not delete previously existing text. You could hit Esc, and then start hitting 'x' to delete characters.

Quote:

I have read many posts regarding this strange default behavior of the backspace key but none of them has ever been of any use to me. I think it would be intelligent on the part of the developers (if vi is still being maintained) to make the default behavior of the backspace key that which it has in vim (which on the other hand is logical) and, if someone wants to make it do those strange things, then write the appropriate line in its config file which, by the way, I don't know which it is (I mean, has vi a cofiguration file like .vimrc in vim?).
Conversely, I find vim to behave strangely compared with the classic vi that I used on Unix. Elvis is pretty close to that, but I suppose we could have nvi, which is actually derived from what was used back then.

A real vi user does not need the cursor keys or the backspace key anyway.

Quote:

One thing is still odder. I have vi installed by default in Debian 9. Then I installed vim and wrote this ~/.bashrc:
Code:

semoi@debian:~$ cat .vimrc
set backspace=indent,eol,start
fixdel
semoi@debian:~$

Now I ran vi and found the backspace key behaved as in vim (normal behavior). Excelent I said, and uninstalled vim. But then vi reverted to its old behavior. Does this mean when I installed vim vi became a link to vim?
vi might be a symlink to vim on Debian. In fact, that would not surprise me.

stf92 06-02-2018 03:16 PM

Quote:

Originally Posted by volkerdi (Post 5862395)
You've put vi (elvis) into insert mode. Insert mode will not delete previously existing text. You could hit Esc, and then start hitting 'x' to delete characters.

But if I want to delete 15 chars behind the cursor I should hit 'x' 15 times to erase them. In vim (in the default setting) I only have to hit the backspace key once and hold it down until all chars have been deleted. I think that's economy.

Quote:


vi might be a symlink to vim on Debian. In fact, that would not surprise me.
In fact what makes the behavior of vi to emulate that of vim is this (if you have vim installed):
Code:

root@debian:~# whereis vi
vi: /usr/bin/vi /usr/share/man/man1/vi.1.gz
root@debian:~# ls -l /usr/bin/vi
lrwxrwxrwx 1 root root 20 May 30 14:52 /usr/bin/vi -> /etc/alternatives/vi
root@debian:~# ls -l /etc/alternatives/vi
lrwxrwxrwx 1 root root 18 Jun  2 16:52 /etc/alternatives/vi -> /usr/bin/vim.basic
root@debian:~#

So it seems it is vim.basic who is being executed!

volkerdi 06-02-2018 03:27 PM

Quote:

Originally Posted by stf92 (Post 5862633)
But if I want to delete 15 chars behind the cursor I should hit 'x' 15 times to erase them. In vim (in the default setting) I only have to hit the backspace key once and hold it down until all chars have been deleted. I think that's economy.

You could hit: 15x

Quote:

In fact what makes the behavior of vi to emulate that of vim is this (if you have vim installed):
Code:

root@debian:~# whereis vi
vi: /usr/bin/vi /usr/share/man/man1/vi.1.gz
root@debian:~# ls -l /usr/bin/vi
lrwxrwxrwx 1 root root 20 May 30 14:52 /usr/bin/vi -> /etc/alternatives/vi
root@debian:~# ls -l /etc/alternatives/vi
lrwxrwxrwx 1 root root 18 Jun  2 16:52 /etc/alternatives/vi -> /usr/bin/vim.basic
root@debian:~#

So it seems it is vim.basic who is being executed!
The theory was correct, then.

montagdude 06-02-2018 04:43 PM

Quote:

Originally Posted by stf92 (Post 5862633)
But if I want to delete 15 chars behind the cursor I should hit 'x' 15 times to erase them. In vim (in the default setting) I only have to hit the backspace key once and hold it down until all chars have been deleted. I think that's economy.



In fact what makes the behavior of vi to emulate that of vim is this (if you have vim installed):
Code:

root@debian:~# whereis vi
vi: /usr/bin/vi /usr/share/man/man1/vi.1.gz
root@debian:~# ls -l /usr/bin/vi
lrwxrwxrwx 1 root root 20 May 30 14:52 /usr/bin/vi -> /etc/alternatives/vi
root@debian:~# ls -l /etc/alternatives/vi
lrwxrwxrwx 1 root root 18 Jun  2 16:52 /etc/alternatives/vi -> /usr/bin/vim.basic
root@debian:~#

So it seems it is vim.basic who is being executed!

Not to be elitist or anything, but if you are wanting to press and hold backspace to delete a bunch of characters in vi/vim, you are doing it wrong. I recommend you learn the proper keyboard shortcuts. You will be much more productive.

(As far as being elitist is concerned, I'm not that hardcore. I use vim instead of elvis.)

stf92 06-02-2018 05:10 PM

But what if you make a mistake while typing and type a j instead of a k? You are in insert mode. OK. You have not to exit insert mode. You just hit one key: backspace!

montagdude 06-02-2018 07:52 PM

Quote:

Originally Posted by stf92 (Post 5862657)
But what if you make a mistake while typing and type a j instead of a k? You are in insert mode. OK. You have not to exit insert mode. You just hit one key: backspace!

Well yeah, but we were talking about deleting 15 characters, not 1.

Petri Kaukasoina 06-03-2018 03:19 AM

Quote:

Originally Posted by stf92 (Post 5862633)
But if I want to delete 15 chars behind the cursor I should hit 'x' 15 times to erase them. In vim (in the default setting) I only have to hit the backspace key once and hold it down until all chars have been deleted. I think that's economy.

Or hit 'x' once and hold it down until all chars have been deleted.


All times are GMT -5. The time now is 12:08 AM.