Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.1 6/24/83 v7 ucbtopaz-1.8; site ucbtopaz.CC.Berkeley.ARPA Path: utzoo!watmath!clyde!bonnie!akgua!sdcsvax!dcdwest!ittvax!decvax!ucbvax!ucbtopaz!gbergman From: gbergman@ucbtopaz.CC.Berkeley.ARPA Newsgroups: net.text Subject: correction to yesterday's item on net.text bugs Message-ID: <591@ucbtopaz.CC.Berkeley.ARPA> Date: Sun, 28-Oct-84 20:18:38 EST Article-I.D.: ucbtopaz.591 Posted: Sun Oct 28 20:18:38 1984 Date-Received: Tue, 30-Oct-84 01:29:58 EST References: <262@lzmi.UUCP> <590@ucbtopaz.CC.Berkeley.ARPA> Organization: Univ. of Calif., Berkeley CA USA Lines: 63 Apologies for saying that ^V^V^V^M would not give the desired effect of inserting a newline in a vi :map! command. It will, though ^V^M will do it as well. Here is the general scheme as well as I've been able to figure it out: in :map! escapes special command, interpretation typing: at the level: of characters: ^V writing command your delete & kill; ab.t; line ^W, ^V, ^M, ^[, ^\ ^V^V processing of space, tab, |, ^V command ^V^V^V^V insertion your delete & kill; ab.t; into text ^W, ^V, ^M, ^[, ^\ (here by "ab.t" I mean "abbreviation terminator", for example, any nonalphanumeric character following an alphanumeric abbreviation.) So before ^M, a single ^V will escape the interpretation of ^M as carriage-return at the level of writing the command, i.e. will allow you to include it in the command; an additional two ^V's (contrary to what I said) will have no effect, since ^M does not seem to be "special" at the command processing level; and it takes four ^V's to escape its special interpretation at the level of insertion into text. So with either 1 or 3 ^V's, it will be included in the map! command, and produce the effect of a carriage return in the inserted text, while with 5 or 7 ^V's it will produce an inserted ^M in the text. For constrast, consider the "substitute" command (with "magic" set): in :s escapes special command, interpretation typing: at the level: of characters: ^V writing command your delete & kill; ab.t; line ^W, ^V, ^M, ^[, ^\ _ | pattern delimiter, \, ., ^, $, ~, [ \ -| [string] ^, \, -, ] |_ replacement delimiter, \, &, ~, ^M (Here by "delimiter" I mean the character you type immediately after the s, typically /.) So if you type in s/x/^V^M, then you will see this as s/x/^M, and when you type the final carriage return, x in your text will be replaced by a newline, while if you type in s/x/\^V^M you will see s/x/\^M, and when you hit another carriage return, x will be replaced by an inserted ^M. Apologies again for having sent that "correction" without testing or thinking through what I was saying. (The above is not, of course, complete. I haven't spoken of the impossibility of escaping ^@ or linefeed, the special case of \ escaping ^H in text, the positive effect of \ in various "magic" combinations, what happens if your map!ing includes an ^[... . And since much of the above was discovered by trial and error, I'm sure there is much more to be learned.) George Bergman Math, UC Berkeley 94720 USA ...!ucbvax!gbergman%cartan