6

I'm studying the ed text editor.

To exit from input mode, a user should enter a line a single period (.).

Let's say I want to enter the period as text.

I thought of a workaround: first, I insert something like ... Then, I replace .. with ..

But my approach is little unwieldy. Is there a better way to do this?

Benjamin W.
  • 46,058
  • 19
  • 106
  • 116
Daniil Iaitskov
  • 5,525
  • 8
  • 39
  • 49
  • Your approach is fine, it's even suggested by POSIX: _The typical method of entering a single has been to precede it with another character and then use the substitute command to delete that character._ And POSIX also specifies that there are no escape characters in input mode. – gniourf_gniourf Nov 20 '15 at 19:07

2 Answers2

6

I didn't found magic escape sequence.

It seems it doesn't exist.

But this link offers 2 solutions. First I described in my question. Second one is closer to a solution with escape.

r ! echo .
Benjamin W.
  • 46,058
  • 19
  • 106
  • 116
Daniil Iaitskov
  • 5,525
  • 8
  • 39
  • 49
6

Reading through the C source for GNU ed(1), there is no escape character. On the occasions that I've wanted to do this, I tend to add a blank line and then use a quick substitution:

a↵
↵
.↵
s/^/.↵

or you can add a character then delete it (which, if you're playing ed(1) golf), is one character more than above)

a↵
x↵
.↵
s/./.↵
Gumnos
  • 403
  • 3
  • 7