xref: /vim-8.2.3635/src/vimtutor (revision 071d4279)
1*071d4279SBram Moolenaar#! /bin/sh
2*071d4279SBram Moolenaar
3*071d4279SBram Moolenaar# Start Vim on a copy of the tutor file.
4*071d4279SBram Moolenaar
5*071d4279SBram Moolenaar# Usage: vimtutor [xx], where xx is a language code like "es" or "nl".
6*071d4279SBram Moolenaar# When an argument is given, it tries loading that tutor.
7*071d4279SBram Moolenaar# When this fails or no argument was given, it tries using 'v:lang'
8*071d4279SBram Moolenaar# When that also fails, it uses the English version.
9*071d4279SBram Moolenaar
10*071d4279SBram Moolenaarxx=$1
11*071d4279SBram Moolenaarexport xx
12*071d4279SBram Moolenaar
13*071d4279SBram Moolenaar# We need a temp file for the copy.  First try using a standard command.
14*071d4279SBram Moolenaartmp="${TMPDIR-/tmp}"
15*071d4279SBram MoolenaarTUTORCOPY=`mktemp $tmp/tutorXXXXXX || tempfile -p tutor || echo none`
16*071d4279SBram Moolenaar
17*071d4279SBram Moolenaar# If the standard commands failed then create a directory to put the copy in.
18*071d4279SBram Moolenaar# That is a secure way to make a temp file.
19*071d4279SBram Moolenaarif test "$TUTORCOPY" = none; then
20*071d4279SBram Moolenaar	tmpdir=$tmp/vimtutor$$
21*071d4279SBram Moolenaar	OLD_UMASK=`umask`
22*071d4279SBram Moolenaar	umask 077
23*071d4279SBram Moolenaar	getout=no
24*071d4279SBram Moolenaar	mkdir $tmpdir || getout=yes
25*071d4279SBram Moolenaar	umask $OLD_UMASK
26*071d4279SBram Moolenaar	if test $getout = yes; then
27*071d4279SBram Moolenaar		echo "Could not create directory for tutor copy, exiting."
28*071d4279SBram Moolenaar		exit 1
29*071d4279SBram Moolenaar	fi
30*071d4279SBram Moolenaar	TUTORCOPY=$tmpdir/tutorcopy
31*071d4279SBram Moolenaar	touch $TUTORCOPY
32*071d4279SBram Moolenaar	TODELETE=$tmpdir
33*071d4279SBram Moolenaarelse
34*071d4279SBram Moolenaar	TODELETE=$TUTORCOPY
35*071d4279SBram Moolenaarfi
36*071d4279SBram Moolenaar
37*071d4279SBram Moolenaarexport TUTORCOPY
38*071d4279SBram Moolenaar
39*071d4279SBram Moolenaar# remove the copy of the tutor on exit
40*071d4279SBram Moolenaartrap "rm -rf $TODELETE" 0 1 2 3 9 11 13 15
41*071d4279SBram Moolenaar
42*071d4279SBram Moolenaar# Vim could be called "vim" or "vi".  Also check for "vim6", for people who
43*071d4279SBram Moolenaar# have Vim 5.x installed as "vim" and Vim 6.0 as "vim6".
44*071d4279SBram Moolenaartestvim=`which vim6 2>/dev/null`
45*071d4279SBram Moolenaarif test -f "$testvim"; then
46*071d4279SBram Moolenaar	VIM=vim6
47*071d4279SBram Moolenaarelse
48*071d4279SBram Moolenaar	testvim=`which vim`
49*071d4279SBram Moolenaar	if test -f "$testvim"; then
50*071d4279SBram Moolenaar		VIM=vim
51*071d4279SBram Moolenaar	else
52*071d4279SBram Moolenaar		VIM=vi
53*071d4279SBram Moolenaar	fi
54*071d4279SBram Moolenaarfi
55*071d4279SBram Moolenaar
56*071d4279SBram Moolenaar# Use Vim to copy the tutor, it knows the value of $VIMRUNTIME
57*071d4279SBram Moolenaar# The script tutor.vim tells Vim which file to copy
58*071d4279SBram Moolenaar$VIM -u NONE -c 'so $VIMRUNTIME/tutor/tutor.vim'
59*071d4279SBram Moolenaar
60*071d4279SBram Moolenaar# Start vim without any .vimrc, set 'nocompatible'
61*071d4279SBram Moolenaar$VIM -u NONE -c "set nocp" $TUTORCOPY
62