From wagner@hatteras.cs.unc.edu (Michael Wagner) Subject: vi (including file name) Date: 9 Jan 92 20:47:44 GMT Status: RO I'm working on a macro (in vi) that would allow me to automatically write the name of the file into the current cursor location in the file. I know that "%" seems to be the name of the file, it seems that you can rename a file with :w %.new I think I could usually simulate what I want with a :r !ls % but there has to be a better way. Mike From steinbac@hpl-opus.hpl.hp.com (Guenter Steinbach) Subject: Re: vi (including file name) Date: 10 Jan 92 23:41:01 GMT Status: O In comp.editors, wagner@hatteras.cs.unc.edu (Michael Wagner) writes: > I'm working on a macro (in vi) that would allow me > to automatically write the name of the file into > the current cursor location in the file. Yes! I'd like that also. Right now all I can do is ^G to display the name, then cut it with the mouse (under X11) and paste it where I need it. But a macro would be so much nicer. > I think I could usually simulate what I want with a > :r !ls % Usually, but not before the file has been written, else instead of "filename" you'll get "filename not found". Guenter Steinbach steinbac@hpl-opus.hpl.hp.com From dattier@gagme.chi.il.us (David W. Tamkin) Subject: Re: vi (including file name) Date: 10 Jan 92 23:30:03 GMT Status: O wagner@hatteras.cs.unc.edu (Michael Wagner) wrote in <8656@borg.cs.unc.edu>: | I'm working on a macro (in vi) that would allow me | to automatically write the name of the file into | the current cursor location in the file. :r !echo % will write it below the current line, and :-r !echo % will write it above the current line. David W. Tamkin Box 7002 Des Plaines, Illinois 60018-7002 +1 708 518 6769 dattier@gagme.chi.il.us CIS: 73720,1570 MCI Mail: 426-1818 +1 312 693 0580 From ttobler@unislc.uucp (Trent Tobler) Subject: Re: vi (including file name) Date: 13 Jan 92 17:40:53 GMT Status: O steinbac@hpl-opus.hpl.hp.com (Guenter Steinbach) writes: > In comp.editors, wagner@hatteras.cs.unc.edu (Michael Wagner) writes: > > > > I'm working on a macro (in vi) that would allow me > > to automatically write the name of the file into > > the current cursor location in the file. > > Yes! I'd like that also. Right now all I can do is ^G to display the > name, then cut it with the mouse (under X11) and paste it where I need > it. But a macro would be so much nicer. > > > I think I could usually simulate what I want with a > > :r !ls % > Usually, but not before the file has been written, else instead of > "filename" you'll get "filename not found". would :r !echo % work? -- Trent Tobler - ttobler@csulx.weber.edu From gerolima@netlabs.com (Mark Gerolimatos) Subject: VI: Changing case for an entire word...how did I do it? Date: 19 Jan 92 01:58:39 GMT Status: O Somehow, I managed to do this by accident. Just now, I did it again. And the damned thing is that I don't know how! Now, '~' will toggle the case of a character, but it seems to be immune to the standard VI [count] command [address modifier] syntax (i.e. '~w' will toggle the case of the current character, and then move on to the next word). How did I do this? If possible, please respond via mail... -Mark P.S. If it's in the manual, I couldn't find it... ====================================Cut Here==================================== gerolima@neon.stanford.edu "Righteousness comes ONLY from Jesus Christ... @netlabs.com ...NEVER from an apron." -Jack T. Chick ================================================================================ From gregg@cbnewsc.cb.att.com (gregg.g.wonderly) Subject: Re: How do I... (vi or awk question, perhaps?) Date: 25 Jan 92 00:02:07 GMT Status: O >From article <1992Jan16.215423.11078@ux1.cso.uiuc.edu>, by weller@osiris (Bonnie Weller): > For instance, my vi file looks like this... > > Field 1 Field 2 > Record# Coorx Coory > > 1 1234 4321 > 2 1111 4444 > 3 2222 3333 > > > I want it to look like this.... > > Field 1 Field 2 Field 3 > Record# Coorx Coory Label > > 1 1234 4321 1 > 2 1111 4444 2 > 3 2222 3333 3 Two people have suggested using awk, and their solutions involve doing something with an intermediate file. From within vi, you can filter your file by doing the following. On the top line of your file, add the following line. !Gawk '{printf "\%s\%8d\n", $0, NR}' Next type 1G"ayy to put the top line (the one with awk on it) into the buffer a. Next, put the cursor at the beginning of the first line of data that you want to change. Then, type @a to tell vi to eat the contents of buffer a as keystrokes you have typed. If you don't like the spacing, type a 'u' to undo the changes, and change the '%8' to be '%5', or something. Then start over at "Next type" above. Filtering and using the named buffers as macros are very useful parts of vi. Knowing how to use them can save you many hours of work... -- ----- gregg.g.wonderly@att.com (AT&T bell laboratories) From lwv26@cas.org (Larry W. Virden) Subject: Re: .exrc location(s) Date: 25 Jan 92 15:53:13 GMT Status: O In article <1992Jan24.211333.18456@jpradley.jpr.com> jpr@jpradley.jpr.com (Jean-Pierre Radley) writes: :In article <1992Jan24.001030.8749@samba.oit.unc.edu> uevans@med.unc.edu (Elizabeth A. Evans) writes: :>So why am I finding that the file has to be in (or linked to) every :>subdirectory I'm in during a vi session? Is there some other way :>I should do it? : :Try putting it into your $HOME directory; vi looks there too. : :I don't use a .exrc file, since it's alledgedly quicker to put the information :into an EXINIT environment variable, which I do in my .profile or .login. : :You can "localize" your vi macros, if the last thing in your $HOME/.exrc, or in :your EXINIT, is ":so .exrc+". Then you can have a different .exrc+ in your :directory for for new C code; in your directory for mail, etc. Most often, the :kind of macros I'd put in a .exrc+ would concern sw and wm. 1. I dont know why some folks on Suns seem not get to their ~/.exrc used, unless they have EXINIT set to "" - it should be unset altogether! 2. A warning about many vi's that I have used. It appears that the .exrc handling isnt too smart. For instance, if you edit a file in your HOME directory - .exrc gets read twice (once as your HOME exrc and once for your local perhaps?). Well, so what? If you have a lot of macros defined in your HOME/.exrc, you will find you start getting error msgs when you edit in your HOME directory - you run the macro code out of buffer space. The thing is, if you have the same macro defined IDENTICALLY (or any other way) both definitions appear in vi's macro buffer - I believe he only executes the last one - but the others are still there. Sigh. -- Larry W. Virden UUCP: osu-cis!chemabs!lwv26 Same Mbox: BITNET: lwv26@cas INET: lwv26@cas.org Personal: 674 Falls Place, Reynoldsburg,OH 43068-1614 America Online: lvirden From jpr@jpradley.jpr.com (Jean-Pierre Radley) Subject: Re: vi macro def at startup Date: 26 Jan 92 18:57:42 GMT Status: O In article sjreeves@eng.auburn.edu (Stan Reeves) writes: >I want to define a macro in my ~/.exrc file, but it doesn't seem to work. >For example, I put > >:map t dd > >in the ~/.exrc file to test it, and it doesn't take. I don't have another >.exrc file in the directory I was using. Any ideas? One little colon! If you're already inside 'vi', then typing :map t dd would map 't' to 'dd'. But that ':' doesn't belong in your .exrc file. -- Jean-Pierre Radley Unix in NYC jpr@jpr.com jpradley!jpr CIS: 72160,1341 From mike@swsrv1.cirr.com (Mike Haddon) Subject: Re: vi macro def at startup Date: 26 Jan 92 21:44:11 GMT Status: O In article sjreeves@eng.auburn.edu (Stan Reeves) writes: >I want to define a macro in my ~/.exrc file, but it doesn't seem to work. >For example, I put > >:map t dd I am doing this in my .exrc file as: map P :t dd where P is the macro identifier to use when you want to execute the macro and it works pretty well. -- ****************************************************************************** * | | * * Mike Haddon | 6717 Woodsmoke Way | Fort Worth, Tx. 76137 * * mike@swsrv1.cirr.com | ...!egsner!swsrv1!mike | ...!void!swsrv1!mike * From hansm@cs.kun.nl (Hans Mulder) Subject: Re: vi macro def at startup Date: 29 Jan 92 02:20:08 GMT Status: O In <1992Jan26.185742.11545@jpradley.jpr.com> jpr@jpradley.jpr.com (Jean-Pierre Radley) writes: >In article sjreeves@eng.auburn.edu (Stan Reeves) writes: >>:map t dd >One little colon! >But that ':' doesn't belong in your .exrc file. What version of vi are you using? All versions I've ever seen allow you to type 1 (one) superfluous colon at the start of an ex command. And, frankly, I find myself doing that a lot when in ex mode. -- Hans Mulder hansm@cs.kun.nl From hansm@cs.kun.nl (Hans Mulder) Subject: Re: vi macro def at startup Date: 29 Jan 92 11:49:59 GMT Status: O In <1992Jan26.214411.795@swsrv1.cirr.com> mike@swsrv1.cirr.com (Mike Haddon) writes: >I am doing this in my .exrc file as: >map P :t dd >where P is the macro identifier to use when you want to execute the macro >and it works pretty well. When I try that, vi says "t requires a trailing address". Wouldn't it be better to write: map P :t 'd ^M [As always, getting a ^M requires typing control-V control-M.] -- Hans Mulder hansm@cs.kun.nl From soh@andromeda.trl.OZ.AU (Kam Hung Soh) Subject: Re: .exrc location(s) Date: 29 Jan 92 21:29:41 GMT Status: O jos@and.nl (Jos Horsmeier) writes: >In article <1992Jan24.001030.8749@samba.oit.unc.edu> uevans@med.unc.edu (Elizabeth A. Evans) writes: >|Well, I knew this a while back and then didn't fiddle with vi macros >|for a while, and now I'm back at them. To create a vi macro, I >|create a file called .exrc with the macro(s) defined in it, right? >|So why am I finding that the file has to be in (or linked to) every >|subdirectory I'm in during a vi session? Is there some other way >|I should do it? [ Jos quotes from the Sun vi man page ... ] >It simply doesn't work that way. Vi (with SunOS 4.1.1.) just checks >the cwd for .exrc, *not* the ~/ dir. On my system (SparcStation 1+, SunOS 4.1.1), vi reads .exrc in the present directory, AND .exrc in my home directory. If the EXINIT environment variable is defined, vi will use that variable and only .exrc in the present directory, ignoring .exrc in my home directory. Regards, --- Soh, Kam Hung | h.soh@trl.oz.au | Telecom Research Laboratories, | +61 3 253 6638 | POB 249 Clayton, Victoria 3168, Australia From marzouki@rhone.imag.fr (Meryem Marzouki) Subject: Re: vi macro def at startup Date: 29 Jan 92 10:03:34 GMT Status: O In article <1992Jan26.185742.11545@jpradley.jpr.com> jpr@jpradley.jpr.com (Jean-Pierre Radley) writes: >In article sjreeves@eng.auburn.edu (Stan Reeves) writes: >>I want to define a macro in my ~/.exrc file, but it doesn't seem to work. >>For example, I put >> >>:map t dd >> >>in the ~/.exrc file to test it, and it doesn't take. I don't have another >>.exrc file in the directory I was using. Any ideas? >One little colon! >If you're already inside 'vi', then typing > :map t dd >would map 't' to 'dd'. >But that ':' doesn't belong in your .exrc file. It also works in the ~/.exrc file ! This macro (and any macro) syntax is the same if you are either inside vi or if it's a line of your .exrc. The only difference is that in the first case, the macro is no longer valid after your current vi session. Meryem MARZOUKI - Groupe Architecture des Ordinateurs - Lab TIM3/IMAG INPG Tel. (+33) 76 57 46 96 - Fax. (+33) 76 47 38 14 46 avenue Felix Viallet - 38031 Grenoble Cedex - France Internet : marzouki@archi.imag.fr - Bitnet : marzouki@frcime51.bitnet Newsgroups: comp.editors From jjj@mits.mdata.fi (Joni Jarvenkyla) Subject: Octal code quotation in vi search & replace? How to quote octal codes to vi seach & replace command (%s/string1/string2/g)? Problem is that I've got a file with octal codes \204 and \244 which should get translated to ascii characters { and |. -- jjj@mits.mdata.fi "Miks mun pit{is olla vastuussa jos t{{lt{ jjj@niksula.hut.fi l|ytyy jotain vitun irtop{it{?" -Kari Nenonen, "Ken Kuolleita Kutsuu" From beaty@aberdeen.FtCollins.NCR.com (Steve Beaty) Subject: Re: .exrc location(s) Date: 31 Jan 92 16:42:00 GMT Status: O uevans@med.unc.edu (Elizabeth A. Evans) writes: > Well, I knew this a while back and then didn't fiddle with vi macros > for a while, and now I'm back at them. To create a vi macro, I > create a file called .exrc with the macro(s) defined in it, right? i recently was dorking around with this stuff and realized that i wanted to change my mappings based on the type of file i was editing. i wrote the following csh file to do this: ---------------------------------------------------------------------- #! /bin/csh -f set suffix = $argv[1]:e if (-e ~/.exrc.$suffix) then /usr/ucb/vi +":so ~/.exrc.$suffix" $argv else /usr/ucb/vi $argv endif ---------------------------------------------------------------------- what this does is search in my home directory for files like ".exrc.c" and ".exec.tex" for mappings for C and TeX source file mappings. i then just place my generic stuff in .exrc and the source-specific stuff in the additional .exec.*. if there isn't an associated file, it just runs with the generic arguments. pretty handy. one problem i've found is that vi doesn't seem to source the extra .exrc's when editing an empty file. oh well. Steve Beaty Steve.Beaty@ftcollins.ncr.com Advanced Development beaty@longs.lance.colostate.edu NCR Microelectronics (303) 226-9622 (palinphone) "What You See Is What You Get, but it sure ain't what we need." Talking Heads