How to delete a character


 
Thread Tools Search this Thread
Top Forums UNIX for Advanced & Expert Users How to delete a character
# 1  
Old 02-18-2004
How to delete a character

Hi,

T think this is a question for Perderabo.
If you think you know the answer you must be very good ! Smilie

Most of us know how the make the <backspace> key backspace a character.
Now how do I make the <delete> key delete a character.

!! So when I press the delete key the character after my current cursor position gets deleted. !!

Running "stty erase ^?" makes the delete key performing a backspace.
Now what do I need to run to make the delete key delete.


Some background info might be that I use Midnight Commander for Unix. It has several types of terminals where I can define the erase function, etc.. However per default in a Unix dtterm the delete key does print a ^? or performs a backspace.

Hope it's clear and someone knows the answer.

Regs David
# 2  
Old 02-18-2004
I was looking around a bit and found several sources saying it's not possible, since there is no stty setting for delete-next-character.
Quote:
The standard Unix tty driver does not recognize a cursor, or keys (like the arrow keys) to move the current position, and hence does not have a command `delete current character' either.
# 3  
Old 02-18-2004
oombera's right, the standard tty driver does not support an option to delete the character after the cursor. So the answer to your question is to write your own tty driver. But before you do that, think about why unix has no such option.

When the driver is reading in canonical mode, it is collecting a line of characters. When it has a complete line, the read() system call will complete and the line will be delivered to the program that issued the read. The characters are collected from the keyboard, not the screen. In fact, there may not even be a screen. Remember that the tty driver is prepared to work fine with a printing terminal like the old asr-33.

In canonical mode, the user can edit the line. There is a notion of an erase character that removes the last character typed from the input line. There are options to control what is echoed to the display when the erase character is typed. Unless you are using a printing terminal, you should set echoe. echoe makes the erase character echo as BS-SP-BS. This removes the last character typed from the screen.

To the tty driver, any characters on the screen ahead of the cursor are garbage. They have no bearing on the input line being collected, anymore than a pre-typed character on a sheet of paper in a printing terminal would.

The notion of deleting a character after a cursor would make sense in the context of a full screen editor. emacs does this. But emacs has an in-core copy of the contents of the screen and it is using the tty driver in raw mode. There is no reason to bless this behavior as the official definition of "delete" as you seem to be doing.

I arrange for my backspace key to to be my erase character and my delete key to be my kill character. I set echoe as I mentioned. If I have echoke, I use that, otherwise I use echok. In my mind, my delete key deletes.

Originally, the delete key really deleted. In the 60's I used to type in fortran programs on an asr-33 using paper tape. If I typed a character in error, I would backspace the paper tape and type a delete character. Since the delete character is 177, this drilled all possible holes on the paper tape. Then I could dial the computer and send the program in. All software always ignored delete characters completely so the deleted characters were simply not there.
# 4  
Old 02-19-2004
Hi Perderabo / Oombera,

Thanks for your help and very detailed explanation !!

There was one thing that hit my attention :



quote:
--------------------------------------------------------------------------------
In the 60's I used to type in fortran programs
--------------------------------------------------------------------------------



I don't think I was there yet by that time and You just showed your self a little

Thanks a lot for your explenation !! I can rest now in the knowledge of knowing there is no solution possible for me


Best regs David

(sorry i hit edit on mistake) - optimus_p

Last edited by Optimus_P; 02-19-2004 at 10:33 AM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Count specific character of a file in each line and delete this character in a specific position

I will appreciate if you help me here in this script in Solaris Enviroment. Scenario: i have 2 files : 1) /tmp/TRANSACTIONS_DAILY_20180730.txt: 201807300000000004 201807300000000005 201807300000000006 201807300000000007 201807300000000008 2)... (10 Replies)
Discussion started by: teokon90
10 Replies

2. Shell Programming and Scripting

Sed: delete on each line before a character and after a character

Hi there, A total sed noob here. Is there a way using sed to delete everything before a character AND after another character on each line in a file? The deletion should also delete the indicating characters(here: an opening and a closing parenthesis). The original file would look like... (3 Replies)
Discussion started by: bnbsd
3 Replies

3. Shell Programming and Scripting

delete all symbolic character

Hello is there a way to delete all symbolic characters using the tr command or delete everything apart from letters for example input="u;'#n] i would like echo $input to be "unix" or a way to only accept letters PLEASE HELP:wall: (4 Replies)
Discussion started by: omaral
4 Replies

4. Shell Programming and Scripting

sed to delete character 0 only when it's on its own?

Hi all I am trying to get my head around doing the following.... I have an input field that could contain either a number a blank field or a whitespace field. What I want to do is delete a 0 (zero) if it's on its own or leading the number. So:- \t0 delete the zero 0 delete the... (8 Replies)
Discussion started by: Bashingaway
8 Replies

5. Shell Programming and Scripting

Delete character from a word

Friends, I'm looking for a command that delete the first tho caractere in a word. Here is an exp : I want to replace "20091001" by "091001" or "replace" by "place" Thx, (13 Replies)
Discussion started by: newpromo
13 Replies

6. UNIX for Dummies Questions & Answers

How to delete all character before certain word

Hi, For example, i have a string "123 456 789 abc 111 222 333" and I would like to delete all the characters before abc so that it becomes "abc 111 222 333" how can i do that in unix? using sed? note: I actually don't know how many words/charachters before "abc", so the "cut"... (9 Replies)
Discussion started by: phandy
9 Replies

7. UNIX for Dummies Questions & Answers

Delete between 10th character and 20th character

Hi, I have a .txt and I need to delete the characters betwwen the 10th and 20th... How can I do that... I need to do somethink like these: %s/I don't know how to define a range between 10th and 20th character//g Can you help me... If I want the 10 first characters i do this:... (2 Replies)
Discussion started by: nuno_fbo
2 Replies

8. Shell Programming and Scripting

delete \n character

Hello. I'm next problem.. I'm a tmp file $ cat tmp word1 word2 word3 word4 and I like have word1 word2 word3 word4 I try with: $ cat tmp |sed 's/\n//' word1 word2 word3 (2 Replies)
Discussion started by: ReneVielma
2 Replies

9. Shell Programming and Scripting

Use sed to delete a character

I built a 12 million record file and made a mistake, one field is 1 character too long. The record is 40 bytes and ends always in 999. I am trying to delete the 37 character in each record. Is this possible without doing a cut and paste. (1 Reply)
Discussion started by: bthomas
1 Replies

10. UNIX for Dummies Questions & Answers

Delete first 2 character from string

Hi ! All, I have to delete first 2 characters from string. How its possible? Like string value is "2001". I required output as "01" Plaese help me. Nitin (4 Replies)
Discussion started by: nitinshinde
4 Replies
Login or Register to Ask a Question