home *** CD-ROM | disk | FTP | other *** search
- Newsgroups: comp.editors
- Path: sparky!uunet!munnari.oz.au!metro!physiol.su.OZ.AU!john
- From: john@civil.su.oz.au (John Mackin)
- Subject: Re: A little question on vi
- Message-ID: <1993Jan21.150505.28644@physiol.su.OZ.AU>
- Summary: vi is a _text_ editor
- Sender: john@physiol.su.OZ.AU (John Mackin)
- Organization: Chickenhawk Software
- References: <1993Jan21.061448.25739@cdf.toronto.edu>
- Date: Thu, 21 Jan 1993 15:05:05 GMT
- Lines: 59
-
- In article <1993Jan21.061448.25739@cdf.toronto.edu>,
- g2chanhk@cdf.toronto.edu (Simon Ho Ki CHAN) writes:
-
- > Hi, is there anybody who knows how to put the EOF marker at the end of
- > the last line, instead of putting it in a new line? e.g I wanna create a file
- > like the following
- >
- > blah, blah
- > blah, blah<EOF>
- >
- > instead of
- >
- > blah, blah
- > blah, blah
- > <EOF>
-
- Someone has made this point already, but I have a few things to add.
-
- The answer to the question is that this is impossible with vi. And
- as `someone' (what I wouldn't give for a better news-reading
- interface!) pointed out, there is no "EOF marker" in a UNIX file.
- A UNIX file is an exact number of characters (bytes, octets)
- long and therefore has no requirement for an "EOF marker" such as is
- needed on some filesystems where files don't have an exact
- length in bytes, but only a sector or block count. (Note,
- all my remarks here apply to UNIX. If the original poster
- is using vi on something else, all bets are off.)
-
- There is a good reason why this is impossible. The reason is that
- vi is a text editor, for editing text files. A well-formed UNIX
- text file consists of zero or more lines. A line consists of
- zero or more non-null characters followed by a terminating
- newline character. Hence, a non-empty file with no terminal newline
- is not a well-formed UNIX text file. You don't want to
- create one of those, since (unfortunately) far too many
- UNIX tools will behave in `interesting' ways when presented
- with one of them. Similarly, you don't want to treat files
- with embedded nulls as text -- I'll never forget the day grep
- failed to match patterns that were indeed matched by strings
- in the file, because the file also had nulls in it.
-
- (There is also a well-known bug in many versions of vi to do
- with this. The above definition of a text file certainly
- admits the null (that is, zero-length or empty) file as a
- valid text file, as it must. Unfortunately, many versions
- of vi don't allow you to create the null file, or indeed
- operate on it sensibly. You can read it in, but it immediately
- becomes a one-line file.)
-
- This is not to say that a text editor _mustn't_ let you
- create a file without a terminal newline. Indeed, I tend
- to come down on the side of never second-guessing the user.
- But, I can see where the idea came from, and it's not
- wholly without merit.
-
- --
- John Mackin <john@civil.su.oz.au>
- Knox's box is a 286. Fox in Socks does hacks and tricks
- Knox's box is hard to fix. To fix poor Knox's box for kicks.
-