[comp.editors] including filename with vi

fyl@ssc.UUCP (Phil Hughes) (11/03/90)

A friend just asked how to include the name of the current file
in vi.  In other words, he wants the current file pathname inserted
into the text for reference purposes.  I couldn't think of how to do it.
I wrote the shell script below as a nasty hack to solve the problem but
it seems there must be a vi'ish way to do it.

----------nasty hack follows--------------
: nvi
# create new file and put filename into it
# call with:
#	nvi filename

# make sure nvi was called with one argument
if [ $# -ne 1 ] ; then
	echo "usage: nvi filename"
	exit 1
fi

# make sure specified file doesn't exist
if [ -f "$1" ] ; then
	echo "$0: $1 already exists"
	exit 1
fi

# prepend path to filename if it doesn't start with a /
if [ `expr $1 : "\/"` -eq 1 ] ; then
	pn=$1
else
pn=`pwd`/$1
fi

# create the file with a filename line in it
echo File: $pn >$pn
# invoke vi
vi $pn
-- 
Phil Hughes, SSC, Inc. P.O. Box 55549, Seattle, WA 98155  (206)FOR-UNIX
     uunet!pilchuck!ssc!fyl or attmail!ssc!fyl            (206)527-3385

Dan_Bloch@TRANSARC.COM (11/04/90)

fyl@ssc.UUCP (Phil Hughes) writes:

> A friend just asked how to include the name of the current file
> in vi.  In other words, he wants the current file pathname inserted
> into the text for reference purposes.

To insert the filename as it was given to vi:

    :r !echo %

To insert the current pathname followed by this:

    :r !echo $cwd/%

Dan Bloch
dan@transarc.com

dattier@ddsw1.MCS.COM (David W. Tamkin) (11/04/90)

fyl@ssc.UUCP (Phil Hughes) wrote in <484@ssc.UUCP>:

| A friend just asked how to include the name of the current file
| in vi.  In other words, he wants the current file pathname inserted
| into the text for reference purposes.  I couldn't think of how to do it.
| I wrote the shell script below as a nasty hack to solve the problem but
| it seems there must be a vi'ish way to do it.

:r !echo %

In shell escapes, vi replaces unquoted percent signs with the current file
name.

David Tamkin  Box 7002  Des Plaines IL  60018-7002  708 518 6769  312 693 0591
MCI Mail: 426-1818  GEnie: D.W.TAMKIN  CIS: 73720,1570   dattier@ddsw1.mcs.com

dattier@ddsw1.MCS.COM (David W. Tamkin) (11/05/90)

Dan_Bloch@TRANSARC.COM wrote in <sbAjPar0BwwZ0TUlMy@transarc.com>:

| To insert the filename as it was given to vi:
| 
|     :r !echo %
| 
| To insert the current pathname followed by this:
| 
|     :r !echo $cwd/%

The second suggestion is rather csh-specific.  In sh or ksh, :r !echo $PWD/%
is the equivalent, but the current directory will get named twice if vi was
given the full pathname.  [That might happen with Dan's suggestion as well; I
know nothing about csh, but I get the feeling it would.]  $cwd|$PWD will
genrally match the directory % is in if % is not a full path.

If you have a command available that gives full paths for files (let's call
it "path" for the example), then    :r !path %    should work regardless of
which shell you're using.

David Tamkin  Box 7002  Des Plaines IL  60018-7002  708 518 6769  312 693 0591
MCI Mail: 426-1818  GEnie: D.W.TAMKIN  CIS: 73720,1570   dattier@ddsw1.mcs.com