summaryrefslogtreecommitdiffstats
path: root/src/option.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/option.c')
-rw-r--r--src/option.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/option.c b/src/option.c
index 1bb9e29bae..0cd2823851 100644
--- a/src/option.c
+++ b/src/option.c
@@ -384,6 +384,8 @@ set_init_xdg_rtp(void)
char_u *xdg_rtp = NULL;
char_u *vimrc_xdg = NULL;
+ // initialize chartab, so we can expand $HOME
+ (void)init_chartab();
vimrc1 = expand_env_save((char_u *)USR_VIMRC_FILE);
vimrc2 = expand_env_save((char_u *)USR_VIMRC_FILE2);
n90' href='#n90'>90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968
*os_vms.txt*    For Vim version 9.0.  Last change: 2022 Nov 25


		  VIM REFERENCE MANUAL


							*VMS* *vms*
This file contains the particularities for the VMS version of Vim.
You can reach this information file by typing :help VMS in Vim command
prompt.

 1. Getting started	|vms-started|
 2. Download files	|vms-download|
 3. Compiling		|vms-compiling|
 4. Problems		|vms-problems|
 5. Deploy		|vms-deploy|
 6. Practical usage	|vms-usage|
 7. GUI mode questions	|vms-gui|
 8. Useful notes	|vms-notes|
 9. VMS related changes	|vms-changes|
10. Authors		|vms-authors|

==============================================================================

1. Getting started					*vms-started*

Vim (Vi IMproved) is a Vi-compatible text editor that runs on nearly every
operating system known to humanity.  Now use Vim on OpenVMS too, in character
or X/Motif environment.  It is fully featured and absolutely compatible with
Vim on other operating systems.

==============================================================================

2. Download files					*vms-download*

You can download the Vim source code by ftp from the official Vim site:
	ftp://ftp.vim.org/pub/vim/
Or use one of the mirrors:
	ftp://ftp.vim.org/pub/vim/MIRRORS

You can download precompiled executables from:
	http://www.polarhome.com/vim/
	ftp://ftp.polarhome.com/pub/vim/

To use the precompiled binary version, you need one of these archives:

  vim-XX-exe-ia64-gui.zip       IA64 GUI/Motif executables
  vim-XX-exe-ia64-gtk.zip       IA64 GUI/GTK executables
  vim-XX-exe-ia64-term.zip      IA64 console executables
  vim-XX-exe-axp-gui.zip	Alpha GUI/Motif executables
  vim-XX-exe-axp-gtk.zip	Alpha GUI/GTK executables
  vim-XX-exe-axp-term.zip       Alpha console executables
  vim-XX-exe-vax-gui.zip	VAX GUI executables
  vim-XX-exe-vax-term.zip       VAX console executables

and of course (optional)
  vim-XX-runtime.zip		runtime files

The binary archives contain: vim.exe, ctags.exe, xxd.exe files.

For GTK executables you will need GTKLIB that is available for
Alpha and IA64 platform.

==============================================================================

3. Compiling						*vms-compiling*

See the file [.SRC]INSTALLVMS.TXT.

==============================================================================

4. Problems						*vms-problems*

The code has been tested under Open VMS 6.2 - 8.2 on Alpha, VAX and IA64
platforms with the DEC C compiler. It should work without major problems.
If your system does not have some include libraries you can tune up in
OS_VMS_CONF.H file.

If you decided to build Vim with +perl, +python, etc. options, first you need
to download OpenVMS distributions of Perl and Python.  Build and deploy the
libraries and change adequate lines in MAKE_VMS.MMS file.  There should not be
a problem from Vim side.

Also GTK, XPM library paths should be configured in MAKE_VMS.MMS

Note: Under VAX it should work with the DEC C compiler without problems.  The
VAX C compiler is not fully ANSI C compatible in pre-processor directives
semantics, therefore you have to use a converter program that will do the lion
part of the job.  For detailed instructions read file INSTALLvms.txt

MMS_VIM.EXE is built together with VIM.EXE, but for XXD.EXE you should
change to a subdirectory and build it separately.

CTAGS is not part of the Vim source distribution anymore, however the OpenVMS
specific source might contain CTAGS source files as described above.
You can find more information about CTAGS on VMS at
http://www.polarhome.com/ctags/

Advanced users may try some acrobatics in FEATURE.H file as well.

It is possible to compile with +xfontset +xim options too, but then you have
to set up GUI fonts etc. correctly.  See :help xim from Vim command prompt.

You may want to use GUI with GTK icons, then you have to download and install
GTK for OpenVMS or at least runtime shareable images - LIBGTK from
polarhome.com
Post 7.2 Vim uses GTK2+ while the last GTK on OpenVMS is 1.2.10, therefore
the GTK build is no longer available.

For more advanced questions, please send your problem to Vim on VMS mailing
list <vim-vms@polarhome.com>
More about the vim-vms list can be found at:
http://www.polarhome.com/mailman/listinfo/vim-vms

==============================================================================

5. Deploy						*vms-deploy*

Vim uses a special directory structure to hold the document and runtime files:

   vim (or wherever)
    |- tmp
    |- vim57
    |----- doc
    |----- syntax
    |- vim62
    |----- doc
    |----- syntax
    |- vim64
    |----- doc
    |----- syntax
    vimrc    (system rc files)
    gvimrc

Use: >

	define/nolog VIM	device:[path.vim]
	define/nolog VIMRUNTIME device:[path.vim.vim60]
	define/nolog TMP	device:[path.tmp]

To get vim.exe to find its document, filetype, and syntax files, and to
specify a directory where temporary files will be located.  Copy the "runtime"
subdirectory of the Vim distribution to vimruntime.

Logicals $VIMRUNTIME and $TMP are optional.

If $VIMRUNTIME is not set, Vim will guess and try to set up automatically.
Read more about it at :help runtime

If $TMP is not set, you will not be able to use some functions as CTAGS,
XXD, printing etc. that use temporary directory for normal operation.
The $TMP directory should be readable and writable by the user(s).
The easiest way to set up $TMP is to define a logical: >

	define/nolog TMP SYS$SCRATCH
or as: >
	define/nolog TMP SYS$LOGIN

==============================================================================

6. Practical usage					*vms-usage*

Usually, you want to run just one version of Vim on your system, therefore
it is enough to dedicate one directory for Vim.
Copy the whole Vim runtime directory structure to the deployment position.
Add the following lines to your LOGIN.COM (in SYS$LOGIN directory).
Set up the logical $VIM as: >

	$ define VIM device:<path>

Set up some symbols: >

	$ ! vi starts Vim in chr. mode.
	$ vi*m  :== mcr VIM:VIM.EXE

	$ !gvi starts Vim in GUI mode.
	$ gv*im :== spawn/nowait mcr VIM:VIM.EXE -g

Please, check the notes for customization and configuration of symbols.

You may want to create .vimrc and .gvimrc files in your home directory
(SYS$LOGIN) to overwrite default settings.

The easiest way is just rename example files.  You may leave the menu file
(MENU.VIM) and files vimrc and gvimrc in the original $VIM directory.  It will
be the default setup for all users, and for users it is enough to just have
their own additions or resetting in their home directory in files .vimrc and
.gvimrc.  It should work without problems.

Note: Remember, system rc files (default for all users) don't have a leading
".".  So, system rc files are: >

	$VIM:vimrc
	$VIM:gvimrc
	$VIM:menu.vim

and user customized rc files are: >

	sys$login:.vimrc
	sys$login:.gvimrc

You can check that everything is at the right place with the :version command.

Example LOGIN.COM: >

	$ define/nolog VIM DKA0:[UTIL.VIM81]
	$ vi*m :== mcr VIM:VIM.EXE
	$ gv*im:== spawn/nowait/input=NLA0 mcr VIM:VIM.EXE -g -GEOMETRY 80x40
	$ set disp/create/node=192.168.10.202/trans=tcpip

Note: This set-up should be enough, if you are working on a standalone server or
clustered environment, but if you want to use Vim as an internode editor in
DECNET environment, it will satisfy as well.
You just have to define the "whole" path: >

	$ define VIM "<server_name>[""user password""]::device:<path>"
	$ vi*m :== "mcr VIM:VIM.EXE"

For example: >

	$ define VIM "PLUTO::RF10:[UTIL.VIM]"
	$ define VIM "PLUTO""ZAY mypass""::RF10:[UTIL.VIM]" ! if passwd required

You can also use the $VIMRUNTIME logical to point to the proper version of Vim
if you have installed more versions at the same time.  If $VIMRUNTIME is not
defined Vim will borrow its value from the $VIM logical.  You can find more
information about the $VIMRUNTIME logical by typing :help runtime as a Vim
command.

System administrators might want to set up a system wide Vim installation,
then add to the SYS$STARTUP:SYLOGICALS.COM >

	$ define/nolog/sys VIM device:<path>
	$ define/nolog/sys TMP SYS$SCRATCH

And to the SYS$STARTUP:SYLOGIN.COM >

	$ vi*m :== mcr VIM:VIM.EXE
	$ gv*im:== spawn/nowait/input=NLA0 mcr VIM:VIM.EXE -g -GEOMETRY 80x40


It will set up a normal Vim work environment for every user on the system.

IMPORTANT: Vim on OpenVMS (and on other case insensitive system) command line
parameters are assumed to be lowercase. In order to indicate that a command
line parameter is uppercase "/" sign must be used.

Examples:
  >
	vim -R  filename  ! means: -r List swap files and exit
	vim -/r filename  ! means: -R Readonly mode (like "view")
	vim -u	<vimrc>   ! means: -u Use <vimrc> instead of any .vimrc
	vim -/u <gvimrc>  ! means: -U Use <gvimrc> instead of any .gvimrc

==============================================================================

7. GUI mode questions					*vms-gui*

OpenVMS is a real mainframe OS, therefore even if it has a GUI console, most
of the users do not use a native X/Window environment during normal operation.
It is not possible to start Vim in GUI mode "just like that".  But anyhow it
is not too complicated either.

First of all: you will need an executable that is built with the GUI enabled.

Second: you need to have installed DECW/Motif on your VMS server, otherwise
you will get errors that some shareable libraries are missing.

Third: If you choose to run Vim with extra features such as GUI/GTK then you
need a GTK installation too or at least a GTK runtime environment (LIBGTK
can be downloaded from http://www.polarhome.com/vim/).

1) If you are working on the VMS X/Motif console:
   Start Vim with the command: >

	$ mc device:<path>VIM.EXE -g
<
   or type :gui as a command to the Vim command prompt.  For more info :help
   gui

2) If you are working on some other X/Window environment like Unix or a remote
   X VMS console.  Set up display to your host with: >

	$ set disp/create/node=<your IP address>/trans=<transport-name>
<
   and start Vim as in point 1.  You can find more help in VMS documentation or
   type: help set disp in VMS prompt.
   Examples: >

	$ set disp/create/node=192.168.5.159		 ! default trans is DECnet
	$ set disp/create/node=192.168.5.159/trans=tcpip ! TCP/IP network
	$ set disp/create/node=192.168.5.159/trans=local ! display on the same node

Note: you should define just one of these.
For more information type $help set disp in VMS prompt.

3) Another elegant solution is XDM if you have installed on OpenVMS box.
   It is possible to work from XDM client as from GUI console.

4) If you are working on MS-Windows or some other non X/Window environment
   you need to set up one X server and run Vim as in point 2.
   For MS-Windows there are available free X servers as MIX, Omni X etc.,
   as well as excellent commercial products as eXcursion or ReflectionX with
   built-in DEC support.

Please note, that executables without GUI are slightly faster during startup
than with enabled GUI in character mode. Therefore, if you do not use GUI
features, it is worth to choose non GUI executables.

==============================================================================

8. Useful notes						*vms-notes*

8.1 Backspace/delete
8.2 Filters
8.3 VMS file version numbers
8.4 Directory conversion
8.5 Remote host invocation
8.6 Terminal problems
8.7 Hex-editing and other external tools
8.8 Sourcing vimrc and gvimrc
8.9 Printing from Vim
8.10 Setting up the symbols
8.11 diff and other GNU programs
8.12 diff-mode
8.13 Allow '$' in C keywords
8.14 VIMTUTOR for beginners
8.15 Slow start in console mode issue
8.16 Common VIM directory - different architectures

8.1 Backspace/delete

There are backspace/delete key inconsistencies with VMS.
:fixdel doesn't do the trick, but the solution is (without "<" in 'cpo'): >

	:inoremap <C-?> <C-H>	" for terminal mode
	:inoremap <Del> <C-H>	" for gui mode

Read more in ch: 8.6 (Terminal problems).
(Bruce Hunsaker <BNHunsaker@chq.byu.edu> Vim 5.3)


8.2 Filters

Vim supports filters, i.e., if you have a sort program that can handle
input/output redirection like Unix (<infile >outfile), you could use >

	:map \s 0!'aqsort<CR>

(Charles E. Campbell, Jr. <cec@gryphon.gsfc.nasa.gov> Vim 5.4)


8.3 VMS file version numbers

Vim is saving files into a new file with the next higher file version
number, try these settings. >

	:set nobackup	     " does not create *.*_ backup files
	:set nowritebackup   " does not have any purpose on VMS.  It's the
			     " default.

Recovery is working perfectly as well from the default swap file.
Read more with :help swapfile

(Claude Marinier <ClaudeMarinier@xwavesolutions.com> Vim 5.5, Zoltan Arpadffy
Vim 5.6)


8.4 Directory conversion

Vim will internally convert any unix-style paths and even mixed unix/VMS
paths into VMS style paths.  Some typical conversions resemble:

	/abc/def/ghi		-> abc:[def]ghi.
	/abc/def/ghi.j		-> abc:[def]ghi.j
	/abc/def/ghi.j;2	-> abc:[def]ghi.j;2
	/abc/def/ghi/jkl/mno	-> abc:[def.ghi.jkl]mno.
	abc:[def.ghi]jkl/mno	-> abc:[def.ghi.jkl]mno.
	  ./			-> current directory
	  ../			-> relative parent directory
	  [.def.ghi]		-> relative child directory
	   ./def/ghi		-> relative child directory

Note: You may use <,> brackets as well (device:<path>file.ext;version) as
rf10:<user.zay.work>test.c;1

(David Elins <delins@foliage.com>, Jerome Lauret
<JLAURET@mail.chem.sunysb.edu> Vim 5.6)


8.5 Remote host invocation

It is possible to use Vim as an internode editor.
1. Edit some file from remote node: >

	vi "<server>""username passwd""::<device>:<path><filename>;<version>"

Example: >
	vi "pluto""zay passwd""::RF10:<USER.ZAY.WORK>TEST.C;1"

Note: syntax is very important, otherwise VMS will recognize more parameters
instead of one (resulting with: file not found)

2.  Set up Vim as your internode editor.  If Vim is not installed on your
host, just set up your IP address, the full Vim path including the server name
and run the command procedure below: >

	$ if (p1 .eqs. "") .OR. (p2 .eqs. "") then goto usage
	$ set disp/create/node=<your_IP_here>/trans=tcpip
	$ define "VIM "<vim_server>""''p1' ''p2'""::<device>:<vim_path>"
	$  vi*m :== "mcr VIM:VIM.EXE"
	$ gv*im :== "spawn/nowait mcr VIM:VIM.EXE -g"
	$ goto end
	$ usage:
	$ write sys$output " Please enter username and password as a parameter."
	$ write sys$output " Example: @SETVIM.COM username passwd"
	$ end:

Note: Never use it in a clustered environment (you do not need it), loading
could be very-very slow, but even faster than a local Emacs. :-)

(Zoltan Arpadffy, Vim 5.6)


8.6 Terminal problems

If your terminal name is not known to Vim and it is trying to find the default
one you will get the following message during start-up:
---
Terminal entry not found in termcap
'unknown-terminal' not known.  Available built-in terminals are:
    builtin_gui
    builtin_riscos
    builtin_amiga
    builtin_ansi
    builtin_vt320
    builtin_vt52
    builtin_pcansi
    builtin_win32
    builtin_xterm
    builtin_iris-ansi
    builtin_debug
    builtin_dumb
defaulting to 'vt320'
---
The solution is to define the default terminal name: >

	$ ! unknown terminal name.  Let us use vt320 or ansi instead.
	$ ! Note: it's case sensitive
	$ define term "vt320"

Terminals from VT100 to VT320 (as V300, VT220, VT200) do not need any extra
keyboard mappings.  They should work perfectly as they are, including arrows,
Ins, Del buttons etc., except Backspace in GUI mode.  To solve it, add to
.gvimrc: >

	inoremap <Del> <BS>

Vim will also recognize that they are fast terminals.

If you're using Vim on remote host or through a very slow connection, you
might want to reset fast terminal option with: >

	set nottyfast   " set terminal to slow mode


8.7 Hex-editing and other external tools

A very important difference between OpenVMS and other systems is that VMS uses
special commands to execute executables: >

	RUN <path>filename
	MCR <path>filename <parameters>

OpenVMS users always have to be aware that the Vim command :! "just" drop them
to DCL prompt.  This feature is possible to use without any problem with all
DCL commands, but if we want to execute some programs such as XXD, CTAGS, JTAGS,
etc.  we're running into trouble if we follow the Vim documentation (see: help
xxd).

Solution: Execute with the MC command and add the full path to the executable.
Example: Instead of :%!xxd command use: >

	:%!mc vim:xxd

... or in general: >
	:!mc <path>filename <parameters>

Note: You can use XXD and CTAGS from GUI menu.

To customize ctags it is possible to define the logical $CTAGS with standard
parameters as: >

	define/nolog CTAGS "--totals -o sys$login:tags"

For additional information, please read :help tagsearch and CTAGS
documentation at http://ctags.sourceforge.net/ctags.html.

(Zoltan Arpadffy, Vim 5.6-70)


8.8 Sourcing vimrc and gvimrc

If you want to use your .vimrc and .gvimrc from other platforms (e.g. Windows)
you can get in trouble if you ftp that file(s): VMS has different end-of-line
indication.
The symptom is that Vim is not sourcing your .vimrc/.gvimrc, even if you say:
>
	:so sys$login:.vimrc

One trick is to compress (e.g. zip) the files on the other platform and
uncompress it on VMS; if you have the same symptom, try to create the files
with copy-paste (for this you need both op. systems reachable from one
machine, e.g. an Xterm on Windows or telnet to Windows from VMS).

(Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> Vim 6.0a)


8.9 Printing from Vim

To be able to print from Vim (running in GUI mode) under VMS you have to set
up $TMP logical which should point to some temporary directory and logical
SYS$PRINT to your default print queue.
Example: >

	$define SYS$PRINT HP5ANSI

You can print out the whole buffer or just the marked area.
More info under :help hardcopy

(Zoltan Arpadffy, Vim 6.0c)


8.10 Setting up the symbols

When I use gvim this way and press CTRL-Y in the parent terminal, gvim exits.
I now use a different symbol that seems to work OK and fixes the problem.
I suggest this instead: >

	$ GV*IM:==SPAWN/NOWAIT/INPUT=NLA0: MCR VIM:VIM.EXE -G -GEOMETRY 80X40

The /INPUT=NLA0: separates the standard input of the gvim process from the
parent terminal, to block signals from the parent window.
Without the -GEOMETRY, the gvim window size will be minimal and the menu
will be confused after a window-resize.

(Carlo Mekenkamp, Coen Engelbarts, Vim 6.0ac)


8.11 diff and other GNU programs

From 6.0 diff functionality has been implemented, but OpenVMS does not use
GNU/Unix like diff therefore built in diff does not work.
There is a simple solution to solve this anomaly.  Install a Unix like diff
and Vim will work perfectly in diff mode too.  You just have to redefine your
diff program as: >

	define /nolog diff <GNU_PATH>diff.exe

Another, more sophisticated solution is described below (8.12 diff-mode)
There are other programs such as patch, make etc that may cause the same
problems.  At www.polarhome.com is possible to download an GNU package for
Alpha and VAX boxes that is meant to solve GNU problems on OpenVMS.
(Zoltan Arpadffy, Vim 6.1)


8.12 diff-mode

Vim 6.0 and higher supports Vim diff-mode (See |new-diff-mode|, |diff-mode|
and |08.7|).  This uses the external program 'diff' and expects a Unix-like
output format from diff.  The standard VMS diff has a different output
format.  To use Vim on VMS in diff-mode, you need to:
    1 Install a Unix-like diff program, e.g. GNU diff
    2 Tell Vim to use the Unix-like diff for diff-mode.

You can download GNU diff from the VIM-VMS website, it is one of the GNU
tools in http://www.polarhome.com/vim/files/gnu_tools.zip.  I suggest to
unpack it in a separate directory "GNU" and create a logical GNU: that
points to that directory, e.g: >

   DEFINE GNU    <DISK>:[<DIRECTORY>.BIN.GNU]

You may also want to define a symbol GDIFF, to use the GNU diff from the DCL
prompt: >

   GDIFF :==     $GNU:DIFF.EXE

Now you need to tell Vim to use the new diff program.  Take the example
settings from |diff-diffexpr| and change the call to the external diff
program to the new diff on VMS.  Add this to your .vimrc file: >

     " Set up vimdiff options
       if v:version >= 600
	" Use GNU diff on VMS
	set diffexpr=MyDiff()
	function MyDiff()
	   let opt = ""
	   if &diffopt =~ "icase"
	     let opt = opt .. "-i "
	   endif
	   if &diffopt =~ "iwhite"
	     let opt = opt .. "-b "
	   endif
	   silent execute "!mc GNU:diff.exe -a " .. opt .. v:fname_in .. " " ..  v:fname_new ..
		\  " > " .. v:fname_out
	endfunction
      endif

You can now use Vim in diff-mode, e.g. to compare two files in read-only
mode: >

    $ VIM -D/R <FILE1> <FILE2>

You can also define new symbols for vimdiff, e.g.: >

    $ VIMDIFF     :== 'VIM' -D/R
    $ GVIMDIFF    :== 'GVIM' -D/R

You can now compare files in 4 ways: >

    1. VMS  diff:  $ DIFF     <FILE1> <FILE2>
    2. GNU  diff:  $ GDIFF    <FILE1> <FILE2>
    3. VIM  diff:  $ VIMDIFF  <FILE1> <FILE2>
    4. GVIM diff:  $ GVIMDIFF <FILE1> <FILE2>

(Coen Engelbarts, Vim 6.1)


8.13 Allow '$' in C keywords

DEC C uses many identifiers with '$' in them.  This is not allowed in ANSI C,
and Vim recognises the '$' as the end of the identifier.  You can change this
with the 'iskeyword' option.
Add this command to your .vimrc file: >

    autocmd FileType c,cpp,cs  set iskeyword+=$

You can also create the file(s) $VIM/FTPLUGIN/C.VIM (and/or CPP.VIM and
CS.VIM) and add this command: >

	set iskeyword+=$

Now word-based commands, e.g. the '*'-search-command and the CTRL-]
tag-lookup, work on the whole identifier.  (Ctags on VMS also supports '$' in
C keywords since ctags version 5.1.)

(Coen Engelbarts, Vim 6.1)

8.14 VIMTUTOR for beginners

The VIMTUTOR.COM DCL script can help Vim beginners to learn/make their first
steps with Vim on OpenVMS.  Depending of binary distribution you may start it
with: >

	@vim:vimtutor

(Thomas.R.Wyant III, Vim 6.1)

8.16 Slow start in console mode issue

As GUI/GTK Vim works equally well in console mode, many administrators
deploy those executables system wide.
Unfortunately, on a remote slow connections GUI/GTK executables behave rather
slow when user wants to run Vim just in the console mode - because of X
environment detection timeout.

Luckily, there is a simple solution for that. Administrators need to deploy
both GUI/GTK build and just console build executables, like below: >

    |- vim73
    |----- doc
    |----- syntax
       vimrc    (system rc files)
       gvimrc
       gvim.exe (the renamed GUI or GTK built vim.exe)
       vim.exe  (the console only executable)

Define system symbols like below in for ex in LOGIN.COM or SYLOGIN.COM: >

	$ define/nolog VIM RF10:[UTIL.VIM73] ! where you VIM directory is
	$ vi*m  :== mcr VIM:VIM.EXE
	$ gvi*m :== mcr VIM:GVIM.EXE
	$ ! or you can try to spawn with
	$ gv*im :== s