Penguin
Diff: HowToVimHOWTO
EditPageHistoryDiffInfoLikePages

Differences between current version and predecessor to the previous major change of HowToVimHOWTO.

Other diffs: Previous Revision, Previous Author, or view the Annotated Edit History

Newer page: version 3 Last edited on Monday, October 25, 2004 4:06:00 am by StuartYeates
Older page: version 2 Last edited on Friday, June 7, 2002 1:07:48 am by perry Revert
@@ -1,3761 +1 @@
-  
-  
-  
-Vim Color Editor HOW-TO (Vi Improved with syntax color highlighting)  
-  
-  
-  
-----  
-  
-!!!Vim Color Editor HOW-TO (Vi Improved with syntax color highlighting)  
-  
-!!Al Dev (Alavoor Vasudevan)  
- alavoor [[AT ]yahoo.com v17.9, 11 April 2002  
-  
-  
-----  
-''This document is a guide to quickly setting up the Vim color editor on Linux or Unix systems. The information here will improve the productivity of programmers because the  
-Vim editor supports syntax color highlighting and bold fonts, improving the  
-"readability" of program code. A programmer's productivity improves 2 to 3 times with a color editor like Vim.  
-The information in this document applies to all operating sytems where Vim works, such as Linux, Windows 95/NT, Apple Mac, IBM OSes, VMS, BeOS and all flavors of Unix like Solaris, HPUX, AIX, SCO, Sinix, BSD, Ultrix etc.. (it means almost all operating systems on this planet!)''  
-----  
-  
-  
-  
-  
-!!1. Introduction  
-  
-  
-****1.1 Before you Install  
-  
-****1.2 Install Vim on Redhat Linux  
-  
-****1.3 Install Vim on Debian GNU/Linux  
-  
-****1.4 Install Vim on Unixes  
-  
-****1.5 Install Vim on Microsoft Windows 95/NT  
-  
-****1.6 Install Vim on VMS  
-  
-****1.7 Install Vim on OS/2  
-  
-****1.8 Install Vim on Apple Macintosh  
-  
-  
-  
-  
-  
-!!2. Install Vim on Microsoft Windows 95/NT  
-  
-  
-****2.1 Install bash shell  
-  
-****2.2 Edit bash_profile  
-  
-****2.3 Setup Window colors  
-  
-  
-  
-  
-  
-!!3. Setup gvim init files  
-  
-  
-****3.1 Sample gvimrc file  
-  
-****3.2 Xdefaults parameters  
-  
-  
-  
-  
-  
-!!4. Color Syntax init files  
-  
-  
-****4.1 Auto source-in method  
-  
-****4.2 Manual method  
-  
-  
-  
-  
-  
-!!5. VIM Usage  
-  
-  
-  
-  
-!!6. Remote Vi - MS Windows QVWM Manager  
-  
-  
-  
-  
-!!7. Vi companions  
-  
-  
-****7.1 Ctags for ESQL  
-  
-****7.2 Ctags for !JavaScript programs, Korn, Bourne shells  
-  
-****7.3 Debugger gdb  
-  
-  
-  
-  
-  
-!!8. Online VIM help  
-  
-  
-  
-  
-!!9. Vim Home page and Vim links  
-  
-  
-  
-  
-!!10. Vim Tutorial  
-  
-  
-****10.1 Vim Hands-on Tutorial  
-  
-****10.2 Vi Tutorials on Internet  
-  
-  
-  
-  
-  
-!!11. Vi Tutorial  
-  
-  
-****11.1 Cursor Movement Commands  
-  
-****11.2 Repeat Counts  
-  
-****11.3 Deleting Text  
-  
-****11.4 Changing Text  
-  
-****11.5 Yanking (Copying) Text  
-  
-****11.6 Filtering text  
-  
-****11.7 Marking Lines and Characters  
-  
-****11.8 Naming Buffers  
-  
-****11.9 Substitutions  
-  
-****11.10 Miscellaneous "Colon Commands"  
-  
-****11.11 Setting Options  
-  
-****11.12 Key Mappings  
-  
-****11.13 Editing Multiple Files  
-  
-****11.14 Final Remarks  
-  
-  
-  
-  
-  
-!!12. Vim Reference Card  
-  
-  
-****12.1 Vi states  
-  
-****12.2 Shell Commands  
-  
-****12.3 Setting Options  
-  
-****12.4 Notations used  
-  
-****12.5 Interrupting, cancelling  
-  
-****12.6 File Manipulation  
-  
-****12.7 Movement  
-  
-****12.8 Line Positioning  
-  
-****12.9 Character positioning  
-  
-****12.10 Words, sentences, paragraphs  
-  
-****12.11 Marking and returning  
-  
-****12.12 Corrections during insert  
-  
-****12.13 Adjusting the screen  
-  
-****12.14 Delete  
-  
-****12.15 Insert, change  
-  
-****12.16 Copy and Paste  
-  
-****12.17 Operators (use double to affect lines)  
-  
-****12.18 Search and replace  
-  
-****12.19 General  
-  
-****12.20 Line Editor Commands  
-  
-****12.21 Other commands  
-  
-  
-  
-  
-  
-!!13. Related URLs  
-  
-  
-  
-  
-!!14. Other Formats of this Document  
-  
-  
-****14.1 Acrobat PDF format  
-  
-****14.2 Convert Linuxdoc to Docbook format  
-  
-****14.3 Convert to MS !WinHelp format  
-  
-****14.4 Reading various formats  
-  
-  
-  
-  
-  
-!!15. Copyright Notice  
-----  
-  
-!!1. Introduction  
-  
-  
-__(The latest version of this document is at  
-http://www.milkywaygalaxy.freeservers.com. You may  
-want to check there for changes).__  
-  
-  
-Vim stands for 'Vi Improved'. Vi is the most popular and powerful  
-editors in the Unix world. __Vi__ is an abbreviation for "''__Vi__''sual" editor.  
-One of the first editors was a line editor  
-called 'ed' (and 'ex'). The ''__Vi__''sual editor  
-like Vi was a vast improvement over line editors like 'ed' (or 'ex'). The editors 'ed'  
-and 'ex' are still available on Linux: see 'man ed' and 'man ex'.  
-  
-  
-A good editor improves programmer productivity. Vim supports color syntax highlighting of program code and  
-also emphasises text using different fonts like normal, bold or italics. A color editor like Vim  
-can improve the __productivity__ of programmers by __2 to 3 times__!! Programmers can  
-read the code much more rapidly as the code syntax is colored and highlighted.  
-  
-!! 1.1 Before you Install  
-  
-  
-  
-Before you install Vim, please refer to the OS specific release notes and  
-information about compiling and usage of Vim at -  
-  
-  
-**** Go to this location and look for files os_*.txt  
-http://cvs.vim.org/cgi-bin/cvsweb/vim/runtime/doc  
-****  
-  
-If you do not have the Vim package (RPM, DEB, tar, zip) then download  
-the Vim source code by ftp from the official Vim site  
-  
-  
-**** The home page of vim is at  
-http://www.vim.org  
-****  
-  
-**** Mirror site in US is at  
-http://www.us.vim.org  
-****  
-  
-**** Ftp site  
-ftp://ftp.vim.org/pub/vim  
-****  
-  
-**** Or use one of the mirrors  
-ftp://ftp.vim.org/pub/vim/MIRRORS  
-****  
-  
-  
-!!1.2 Install Vim on Redhat Linux  
-  
-  
-  
-To use Vim install the following RPM packages on Redhat Linux -  
-----  
-  
-rpm -i vim*.rpm  
-OR do this -  
-rpm -i vim-enhanced*.rpm  
-rpm -i vim-X11*.rpm  
-rpm -i vim-common*.rpm  
-rpm -i vim-minimal*.rpm  
-  
-----  
-You can see the list of files the vim rpm installs by -  
-----  
-  
-rpm -qa | grep ^vim | xargs rpm -ql | less  
-or  
-rpm -qa | grep ^vim | awk '{print "rpm -ql " $1 }' | /bin/sh | less  
-  
-----  
-and browse output using j,k, CTRL+f, CTRL+D, CTRL+B, CTRL+U or using arrow keys, page up/down keys.  
-See 'man less'.  
-  
-  
-Note that the RPM packages for Redhat Linux use a Motif interface. If you have installed the  
-GTK libraries on your system, consider compiling Vim from the source code for a clean  
-GUI interface. For information on compiling Vim from the source code, see "Install Vim on Unixes", below.  
-  
-  
-  
-  
-!!1.3 Install Vim on Debian GNU/Linux  
-  
-  
-  
-To install Vim on Debian Linux (GNU Linux), login as root and when connected to internet  
-type -  
-----  
-  
-apt-get install vim vim-rt  
-  
-----  
-It will download the latest version of vim, install it, configure it.  
-The first package listed is vim, the standard editor, compiled  
-with X11 support, vim-rt is the vim runtime, it holds all the syntax and help files.  
-  
-  
-On Debian 3.0 (woody) and above, use 'apt-get install vim' instead.  
-The vim-rt package is part of the main vim package.  
-  
-!!1.4 Install Vim on Unixes  
-  
-  
-  
-For other flavors of unixes like Solaris, HPUX, AIX, Sinix, SCO download the source code file  
-( see  
-Before you Install  
-)  
-----  
-  
-zcat vim.tar.gz | tar -xvf -  
-cd vim-5.5/src  
-./configure --enable-gui=motif  
-make  
-make install  
-  
-----  
-  
-  
-  
-  
-!!1.5 Install Vim on Microsoft Windows 95/NT  
-  
-  
-  
-See  
-Install on MS Windows.  
-  
-!!1.6 Install Vim on VMS  
-  
-  
-  
-  
-  
-!Download files  
-  
-  
-You will need both the Unix and Extra archives to build vim.exe for VMS.  
-For using Vim's full power you will need the runtime files as well.  
-Get these files  
-( see  
-Before you Install  
-)  
-  
-  
-You can download precompiled executables from:  
-http://www.polarfox.com/vim  
-  
-VMS vim authors are -  
-  
-  
-****  
- zoltan.arpadffy@essnet.se  
-****  
-  
-****  
- arpadffy@altavista.net  
-****  
-  
-****  
- cec@gryphon.gsfc.nasa.gov  
-****  
-  
-****  
- BNHunsaker@chq.byu.edu  
-****  
-  
-****  
- sandor.kopanyi@altavista.net  
-****  
-  
-  
-!Compiling  
-  
-  
-Unpack the Unix and Extra archives together into one directory. In the <.SRC>  
-subdirectory you should find the make file OS_VMS.MMS. By editing this file  
-you may choose between building the character, GUI and debug version. There  
-are also additional options for Perl, Python and Tcl support.  
-  
-  
-You will need either the DECSET mms utility or the freely available clone of  
-it called mmk (VMS has no make utility in the standard distribution). You can  
-download mmk from http://www.openvms.digital.com/freeware/MMK/  
-  
-  
-If you have MSS on your system, the command  
-  
-  
-> mms /descrip=os_vms.mms  
-  
-  
-will start building your own customised version of Vim.  
-The equivalent command for mmk is:  
-  
-  
-> mmk /descrip=os_vms.mms  
-  
-!Deploy  
-  
-  
-Vim uses a special directory structure to hold the document and runtime files:  
-  
-  
-  
-----  
-  
-vim (or wherever)  
-|- tmp  
-|- vim55  
-|----- doc  
-|----- syntax  
-|- vim56  
-|----- doc  
-|----- syntax  
-vimrc (system rc files)  
-gvimrc  
-Use:  
-> define/nolog device:[[leading-path-here.vim] vim  
-> define/nolog device:[[leading-path-here.vim.vim56] vimruntime  
-> define/nolog device:[[leading-path-here.tmp] 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.  
-  
-  
-Note: Logicals $VIMRUNTIME and $TMP are optional. Read more at :help runtime  
-  
-!Practical 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 all Vim runtime directory structure to the deployment position.  
-Add the following lines to your LOGIN.COM (in SYS$LOGIN directory).  
-Set up logical $VIM as:  
-  
-  
-  
-----  
-  
-> $ define VIM device: <path>  
-  
-----  
-  
-  
-Set up some symbols:  
-  
-  
-  
-----  
-  
-> $ ! vi starts Vim in chr. mode.  
-> $ vi*m :== mcr device:<path>VIM.EXE  
-> $ !gvi starts Vim in GUI mode.  
-> $ gv*im :== spawn/nowait mcr device:<path>VIM.EXE -g  
-  
-----  
-  
-  
-Create .vimrc and .gvimrc files in your home directory (SYS$LOGIN).  
-  
-  
-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 default setup for all users, and for users is enough just to have their  
-own additions or resetting in home directory in files .vimrc and .gvimrc.  
-It should work without problems.  
-  
-  
-Note: Remember, system rc files (default for all users) do not have the leading  
-"." So, system rc files are:  
-  
-  
-  
-----  
-  
-> VIM$:vimrc  
-> VIM$:gvimrc  
-> VIM$:menu.vim  
-  
-----  
-and user's customised rc files are:  
-----  
-  
-> sys$login:.vimrc  
-> sys$login:.gvimrc  
-  
-----  
-  
-  
-You can check that everything is on the right place with the :version command.  
-  
-  
-  
-----  
-  
-Example LOGIN.COM:  
-> $ define/nolog VIM RF10:[[UTIL.VIM]  
-> $ vi*m :== mcr VIM:VIM.EXE  
-> $ gv*im :== spawn/nowait mcr VIM:VIM.EXE -g  
-> $ set disp/create/node=192.168.5.223/trans=tcpip  
-  
-----  
-  
-  
-Note: This set-up should be enough if you are working in a standalone server or  
-clustered environment, but if you want to use Vim as an internode editor, it  
-should suffice. You just have to define the "whole" path:  
-  
-  
-  
-----  
-  
-> $ define VIM "<server_name>[[""user password""]::device:<path>"  
-> $ vi*m :== "mcr VIM:VIM.EXE"  
-  
-----  
-  
-  
-as for example:  
-  
-  
-  
-----  
-  
-> $ define VIM "PLUTO::RF10:[[UTIL.VIM]"  
-> $ define VIM "PLUTO""ZAY mypass""::RF10:[[UTIL.VIM]" ! if passwd required  
-  
-----  
-  
-  
-You can also use $VIMRUNTIME logical to point to proper version of Vim if you  
-have multiple versions installed at the same time. If $VIMRUNTIME is not defined  
-Vim will borrow value from $VIM logical. You can find more information about  
-$VIMRUNTIME logical by typing :help runtime as a Vim command.  
-  
-!GUI mode questions  
-  
-  
-VMS is not a native X window environment, so you can not start Vim in GUI mode  
-"just like that". But it is not too complicated to get a running Vim.  
-  
-  
-  
-----  
-  
-1) If you are working on the VMS X 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 other X window environment as Unix or some 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.  
-  
-!!1.7 Install Vim on OS/2  
-  
-  
-  
-Read the release notes for Vim on OS/2, see  
-Before you Install  
-.  
-  
-  
-At present there is no native PM version of the GUI version of vim: The OS/2  
-version is a console application. However, there is now a Win32s-compatible  
-GUI version, which should be usable by owners of Warp 4 (which supports  
-Win32s) in a Win-OS/2 session. The notes in this file refer to the native  
-console version.  
-  
-  
-To run Vim, you need the emx runtime environment (at least rev. .9b). This  
-is generally available as (ask Archie about it):  
-----  
-  
-emxrt.zip emx runtime package  
-  
-----  
-  
-!!1.8 Install Vim on Apple Macintosh  
-  
-  
-  
-Read the release notes for Vim on OS/2, see  
-Before you Install  
-.  
-  
-  
-The author of Vim on Mac (old version vim 3.) is  
-----  
-  
-Eric Fischer  
-5759 N. Guilford Ave  
-Indianapolis IN 46220 USA  
-  
-----  
-Email to  
- enf@pobox.com  
-  
-Mac Bug Report  
-When reporting any Mac specific bug or feature change, makes sure to include  
-the following address in the "To:" or "Copy To:" field.  
-  
-  
-  
- dany.stamant@sympatico.ca  
-  
-Vim compiles out of the box with the supplied !CodeWarrior project when using  
-!CodeWarrior 9. If you are using a more recent version (e. g. CW Pro) you have  
-to convert the project first.  
-When compiling Vim for 68k Macs you have to open the "size" resource in  
-!ResEdit and enable the "High level events aware" button to get drag and drop  
-working.  
-You have to increase the memory partition to at least 1024 kBytes to prevent  
-Vim from crashing due to low memory.  
-----  
-  
-vim:ts=8:sw=8:tw=78:  
-  
-----  
-----  
-  
-!! 2. Install Vim on Microsoft Windows 95/NT  
-  
-  
-For Windows 95/NT, download the Vim zip file. For Windows 95/NT you  
-must download __TWO__ zip files -  
-  
-  
-**** Runtime support file __vim*rt.zip__  
-****  
-  
-**** Vim command file __vim*60.zip__. Where Vim version is 5.6.  
-****  
-  
-  
-  
-Get these two zip files from:  
-Goto  
-http://www.vim.org and click on  
-Download-> download FAQ-> Windows 95/NT or click on these  
-ftp://vim.ftp.fu-berlin.de/pc/gvim60.zip and  
-ftp://vim.ftp.fu-berlin.de/pc/vim60rt.zip.  
-( see also  
-Before you Install  
-)  
-  
-  
-Unpack the zip files using the Winzip  
-http://www.winzip.com.  
-Both the zip files (vim*rt.zip and vim*60.zip) must be unpacked  
-in the same directory like say __c:\vim__.  
-  
-  
-For Windows 95/98, set the environment variable VIM (all caps no lowercase) in  
-autoexec.bat by adding this line -  
-----  
-  
-set VIM=c:\vim\vim60  
-  
-----  
-For Windows NT, add the environment variable VIM (all caps no lowercase) to the  
-__Start | Control Panel | System | Environment | System Properties__ dialog.  
-For Windows 2000, click on  
-__Start | Control Panel | System | Advanced | Environment Variable__ dialog  
-and add variable VIM (all caps no lowercase):  
-----  
-  
-VIM=c:\vim\vim60  
-  
-----  
-  
-  
-The VIM variable should point to wherever you installed the vim60 directory.  
-You can also set your PATH to include the gvim.exe's path.  
-  
-  
-You may need to logoff and relogin to set your environment. Bring up a MS-DOS window by  
-click on Start->Programs->MSDOS (for Windows 95/98) and Start->Run->cmd (for Windows NT/2000).  
-At an MS-DOS prompt type -  
-----  
-  
-c:\> set vim  
-c:\> cd vim\vim60  
-c:\> install.exe  
-  
-----  
-For 'set vim' command, you should see - VIM=c:\vim\vim60 and start the install program  
-which will setup the enviroment.  
-  
-  
-Create a short-cut on to your desktop by click-and-drag  
-from c:\vim\vim60\gvim.exe.  
-  
-  
-__Color Syntax Highlighting: __ To enable color syntaxt highlighting and  
-other nice features you must copy the gvimrc_example file to  
-the $VIM\_gvimrc. In my case it is c:\vim\vim60\_gvimrc.  
-----  
-  
-c:\> copy c:\vim\vim60\gvimrc_example $VIM\_gvimrc  
-  
-----  
-  
-  
-  
-  
-  
-__Useful Tips : __  
-  
-  
-****Just double click on gvim icon on desktop and  
-click !MyComputer->C:drive->Select a file and drag and drop it into the gvim window.  
-The file is automatically opened by gvim window!!  
-  
-  
-  
-  
-****  
-  
-**** To automatically maximize the Vim window in MS Windows, you can use  
-http://www.southbaypc.com/!AutoSizer or you can right click on Gvim shortcut  
-and select properties and pick maximize the window on startup.  
-****  
-  
-  
-!!2.1 Install bash shell  
-  
-  
-  
-In order make MS Windows 95/98/NT/2000/XP even more user-friendly, install the  
-bash shell (Bourne Again Shell). Install  
-http://sources.redhat.com/cygwin/setup.exe  
-(Cygwin-setup program) and select bash and other common utilities.  
-The !CygWin main site is at  
-http://sources.redhat.com/cygwin.  
-With !CygWin the Windows 2000 computer will look like Linux/Unix box!!  
-And combined with gvim editor, the Windows 2000 gives programmers more power.  
-The cygwin home is at  
-http://cygwin.com.  
-  
-  
-You may also want to install MKS in case you are planning to use Java and  
-Java compilers. Get MKS from  
-http://www.mks.com.  
-  
-!!2.2 Edit bash_profile  
-  
-  
-  
-After installing the Cygwin, insert some useful aliases in /.bash_profile file.  
-Open a cygwin window and at bash prompt -  
-----  
-  
-bash$ cd $HOME  
-bash$ gvim .bash_profile  
-set -o vi  
-alias ls='ls --color '  
-alias cp='cp -i '  
-alias mv='mv -i '  
-alias rm='rm -i '  
-alias vi='gvim '  
-alias vip='gvim ~/.bash_profile & '  
-alias sop='. ~/.bash_profile '  
-alias mys='mysql -uroot -p '  
-PATH=$PATH:"/cygdrive/c/Program Files/mysql/bin"  
-  
-----  
-With color ls, when you do ls you will see all the directory names and files in  
-different colors (it looks great!!).  
-With set -o vi, you can use the command line history editing just as in linux.  
-  
-!!2.3 Setup Window colors  
-  
-  
-  
-The default background color of MS DOS prompt window is black and white text.  
-You must change the color, fontsize and window size to make it more pleasing.  
-On MS Windows 2000, click on button Start->Run and type "cmd" and hit return.  
-On MS Windows 95/98/NT click on Start->Programs->MSDOS Prompt which will  
-bring up MSDOS window.  
-Right click on the top left corner of the MSDOS prompt window and select properties.  
-Select color background and enter R=255, G=255, B=190 (red, green, blue) for  
-lightyellow background  
-and text foreground color to black (R=, G=, B=).  
-This sets background to light yellow and text foreground to black and this  
-combination is most pleasing to human eyes.  
-If you have problems with colors in cygwin bash window when doing 'man ls', set the  
-text color to "marune".  
-  
-  
-For Windows95 see  
-Color for MS-DOS prompt window.  
-----  
-  
-!!3. Setup gvim init files  
-  
-  
-To enable the syntax color highlighting you MUST copy the gvimrc file to  
-your home directory. This will also put the "Syntax" Menu with gvim command.  
-You can click on Syntax Menu and select appropriate languages like C++, Perl, Java, SQL, ESQL etc..  
-----  
-  
-cd $HOME  
-cp /usr/doc/vim-common-5.3/gvimrc_example ~/.gvimrc  
-  
-----  
-Comment lines in .gvimrc begin with double-quotes (").  
-You can customize gvim by editing the file $HOME/.gvimrc and put the following lines -  
-----  
-  
-" This line is a comment .... one which begins with double-quotes  
-" The best is the bold font, try all of these and pick one....  
-set guifont=8x13bold  
-"set guifont=9x15bold  
-"set guifont=7x14bold  
-"set guifont=7x13bold  
-"  
-" Highly recommended to set tab keys to 4 spaces  
-set tabstop=4  
-set shiftwidth=4  
-"  
-" The opposite is 'set wrapscan' while searching for strings....  
-set nowrapscan  
-"  
-" The opposite is set noignorecase  
-set ignorecase  
-set autoindent  
-"  
-" You may want to turn off the beep sounds (if you want quite) with visual bell  
-" set vb  
-" Source in your custom filetypes as given below -  
-" so $HOME/vim/myfiletypes.vim  
-  
-----  
-It is __very strongly__ recommended that you set the ''tabstop'' to 4 and  
-''shiftwidth'' to 4.  
-The ''tabstop'' is the number of spaces the TAB key will indent while editing with gvim. The  
-''shiftwidth'' is the number of spaces the lines will be  
-shifted with ">>" or "<<" vi commands. Refer to Vi  
-tutorials  
-Vim Tutorial  
-for more details.  
-  
-  
-To see the list of available fonts on Linux/Unix see  
-the command __xlsfonts__. Type -  
-----  
-  
-bash$ xlsfonts | less  
-bash$ xlsfonts | grep -i bold | grep x  
-bash$ man xlsfonts  
-  
-----  
-  
-!!3.1 Sample gvimrc file  
-  
-  
-  
-You can change the settings like color, bold/normal fonts in your $HOME/.gvimrc file.  
-It is __very strongly__ recommended that you set the background color  
-to ''lightyellow'' or ''white'' with ''black'' foreground. Ergonomics says  
-that best background color is  
-''lightyellow'' or ''white'' with ''black'' foreground. Hence change  
-the variable 'guibg' in your $HOME/.gvimrc file as follows:  
-----  
-  
-highlight Normal guibg=lightyellow  
-  
-----  
-  
-  
-The sample gvimrc from /usr/doc/vim-common-5.3/gvimrc_example is as follows:  
-----  
-  
-" Vim  
-" An example for a gvimrc file.  
-" The commands in this are executed when the GUI is started.  
-"  
-" To use it, copy it to  
-" for Unix and OS/2: ~/.gvimrc  
-" for Amiga: s:.gvimrc  
-" for MS-DOS and Win32: $VIM\_gvimrc  
-" Make external commands work through a pipe instead of a pseudo-tty  
-"set noguipty  
-" set the X11 font to use. See 'man xlsfonts' on unix/linux  
-" set guifont=-misc-fixed-medium-r-normal--14-130-75-75-c-70-iso8859-1  
-set guifont=8x13bold  
-"set guifont=9x15bold  
-"set guifont=7x14bold  
-"set guifont=7x13bold  
-"  
-" Highly recommended to set tab keys to 4 spaces  
-set tabstop=4  
-set shiftwidth=4  
-"  
-" The opposite is 'set wrapscan' while searching for strings....  
-set nowrapscan  
-"  
-" The opposite is set noignorecase  
-set ignorecase  
-"  
-" You may want to turn off the beep sounds (if you want quite) with visual bell  
-" set vb  
-" Source in your custom filetypes as given below -  
-" so $HOME/vim/myfiletypes.vim  
-" Make command line two lines high  
-set ch=2  
-" Make shift-insert work like in Xterm  
-map <S-Insert> <!MiddleMouse>  
-map! <S-Insert> <!MiddleMouse>  
-" Only do this for Vim version 5.0 and later.  
-if version >= 500  
-" I like highlighting strings inside C comments  
-let c_comment_strings=1  
-" Switch on syntax highlighting.  
-syntax on  
-" Switch on search pattern highlighting.  
-set hlsearch  
-" For Win32 version, have "K" lookup the keyword in a help file  
-"if has("win32")  
-" let winhelpfile='windows.hlp'  
-" map K :execute "!start winhlp32 -k <cword> " . winhelpfile <CR>  
-"endif  
-" Hide the mouse pointer while typing  
-set mousehide  
-" Set nice colors  
-" background for normal text is light grey  
-" Text below the last line is darker grey  
-" Cursor is green  
-" Constants are not underlined but have a slightly lighter background  
-highlight Normal guibg=grey90  
-highlight Cursor guibg=Green guifg=NONE  
-highlight !NonText guibg=grey80  
-highlight Constant gui=NONE guibg=grey95  
-highlight Special gui=NONE guibg=grey95  
-endif  
-  
-----  
-See also sample vimrc used for console mode vim command from /usr/doc/vim-common-5.3/vimrc_example.  
-  
-!!3.2 Xdefaults parameters  
-  
-  
-  
-You can set some of the Vim properties in Xdefaults file.  
-  
-  
-__ WARNING: __''Do not set __Vim*geometry__ as it will break the gvim menu, use __Vim.geometry__ instead''.  
-  
-  
-Edit the $HOME/.Xdefaults file and add the following lines:  
-----  
-  
-! GVim great Colors.  
-Vim*useSchemes: all  
-Vim*sgiMode: true  
-Vim*useEnhancedFSB: true  
-Vim.foreground: Black  
-!Vim.background: lightyellow2  
-Vim*background: white  
-! Do NOT use Vim*geometry , this will break the menus instead  
-! use Vim.geometry. Asterisk between Vim and geometry is not allowed.  
-! Vim.geometry: widthxheight  
-Vim.geometry: 88x40  
-!Vim*font: -misc-fixed-medium-r-normal--20-200-75-75-c-100-iso8859-15-*5  
-Vim*menuBackground: yellow  
-Vim*menuForeground: black  
-  
-----  
-In order for this change to take effect, type -  
-----  
-  
-xrdb -merge $HOME/.Xdefaults  
-man xrdb  
-  
-----  
-  
-  
-You can also edit the ~/.gvimrc file to change the background colors  
-----  
-  
-gvim $HOME/.gvimrc  
-The best background color is lightyellow or white, with black foreground.  
-highlight Normal guibg=lightyellow  
-  
-----  
-----  
-  
-!!4. Color Syntax init files  
-  
-  
-  
-  
-!!4.1 Auto source-in method  
-  
-  
-  
-This section below is obtained from gvim session by typing 'help syntax' -  
-----  
-  
-bash$ gvim some_test  
-:help syntax  
-  
-----  
-Click on the menu Window=>Close_Others to close other Window. And then do CTRL+] on 'Syntax Loading Procedure' menu which will take you there.  
-(Use CTRL+T to rewind and go back).  
-  
-  
-If a file type you want to use is not detected, then there are two ways to  
-add it.  
-  
-  
-  
-  
-  
-__Method 1: __ You can modify the ''$VIMRUNTIME/filetype.vim'' file,  
-but this is not recommended as it will be overwritten when you  
-install a new version of Vim.  
-  
-  
-__ Method 2: __ Create a file in $HOME/vim/myfiletypes.vim and put  
-these lines in it -  
-----  
-  
-"  
-" *************************************************************  
-" Filename : $HOME/vim/myfiletypes.vim  
-" See the document by typing :help autocmd within vim session  
-" see also the doc at /usr/share/vim/doc/autocmd.txt  
-" This file will setup the autocommands for new filetypes  
-" using the existing syntax-filetypes.  
-" For example when you open foo.prc it will use syntax of plsql  
-" Basically does :set filetype=prc inside vim  
-" Add a line in $HOME/.gvimrc as below:  
-" so $HOME/vim/myfiletypes.vim  
-"  
-" *************************************************************  
-augroup filetype  
-au!  
-au! !BufRead,!BufNewFile *.phc set filetype=php  
-au! !BufRead,!BufNewFile *.mine set filetype=mine  
-au! !BufRead,!BufNewFile *.xyz set filetype=drawing  
-au! !BufRead,!BufNewFile *.prc set filetype=plsql  
-augroup END  
-  
-----  
-Then add a line in your $HOME/.vimrc and $HOME/.gvimrc file to source  
-in the file "myfiletypes.vim".  
-(__CAUTION:__ You MUST put this in both vimrc and gvimrc files  
-in order for this to work) Example:  
-----  
-  
-so $HOME/vim/myfiletypes.vim  
-  
-----  
-  
-  
-__NOTE:__ Make sure that you set "so myfiletypes.vim" before switching on file type  
-detection. This is must be before any ":filetype on" or ":syntax on"  
-command.  
-  
-  
-See the documentation on autocommand at -  
-  
-  
-****__:help autocmd__ (within a vim editing session)  
-****  
-  
-****See also the doc at /usr/share/vim/doc/autocmd.txt  
-****  
-  
-  
-  
-Your file will then be sourced in after the default !FileType autocommands have  
-been installed. This allows you to overrule any of the defaults, by using  
-":au!" to remove any existing !FileType autocommands for the same pattern.  
-Only the autocommand to source the scripts.vim file is given later. This  
-makes sure that your autocommands in "myfiletypes.vim" are used before  
-checking the contents of the file.  
-  
-!!4.2 Manual method  
-  
-  
-  
-Instead of using "Syntax" menu you can also  
-manually source in the syntax file. Edit the file with gvim  
-and at : (colon) command give 'so' command. For example -  
-----  
-  
-gvim foo.pc  
-:so $VIM/syntax/esqlc.vim  
-  
-----  
-The syntax source files are at /usr/share/vim/syntax/*.vim. Vim supports more  
-than 120 different syntax files for different languages like C++, PERL, VHDL, !JavaScript,...and so on!!  
-  
-  
-Each syntax file supports one or more default file name extensions, for example, !JavaScript syntax  
-file supports the *.js extension. If you happen to use an extension that conflicts with  
-another default syntax file (such as adding !JavaScript to a *.html file) than you can source in  
-the additional syntax file with the command :so $VIM/syntax/javascript.vim.  
-To avoid all of this typing, you can create a soft link like -  
-----  
-  
-ln -s $VIM/syntax/javascript.vim js  
-gvim foo.html (... this file contains javascript functions and HTML)  
-:so js  
-  
-----  
-----  
-  
-!!5. VIM Usage  
-  
-  
-You can use Vim in two modes - one with GUI and other without GUI.  
-To use GUI use command -  
-----  
-  
-gvim foo.cpp  
-  
-----  
-To use non-gui mode give -  
-----  
-  
-vim foo.cpp  
-OR plain vanilla mode  
-vi foo.cpp  
-  
-----  
-It is very strongly recommended that you always use gvim instead of vim, since GUI mode  
-with colors will definitely improve your productivity.  
-  
-  
-GUI mode gvim provides the following -  
-  
-  
-**** You can mark the text using the mouse to do cut, copy and paste.  
-****  
-  
-**** You can use the Menu bar which has - File, Edit, Window, Tools, Synatx and Help buttons.  
-****  
-  
-**** Also in near future in gvim - a second menu bar will display the list of files being edited,  
-and you can switch files by clicking on the filenames, until then you can use  
-vi commands - :e#, :e#1, :e#2, :e#3, :e#4, ....so on to select the files.  
-****  
-  
-----  
-  
-!!6. Remote Vi - MS Windows QVWM Manager  
-  
-  
-If you want to use Vi and Vim remotely from a MS Windows PC client, then  
-you should use VNC + QVWM manager. Servers are generally located  
-in remote Data Centers and to edit the files, you should first login  
-to remote servers from MS Windows or Linux desktop PCs.  
-After starting VNC server and QVWM manager on remote server, you should  
-fire up __vncviewer__ on your client desktop and edit remote files  
-with __gvim__.  
-  
-  
-To use graphical editor like __gvim__ for remote operations, use the  
-following techniques below:  
-  
-  
-You can use the VNC to display remote machines on your local display.  
-  
-  
-**** The VNC is at  
-http://www.uk.research.att.com/vnc  
-  
-  
-  
-  
-****  
-  
-**** Get VNC rpms from  
-rpmfind.  
-  
-  
-  
-  
-****  
-  
-**** The best Window manager for VNC is QVWM which is like MS Windows 98/NT/2000 interface, get  
-it from  
-http://www.qvwm.org.  
-  
-  
-  
-  
-****  
-  
-**** After starting vncserver, you can start the __vncviewer__ program on clients  
-like MS Windows, Mac or Linux.  
-  
-  
-  
-  
-****  
-  
-**** See also the  
-List of X11 Windows Managers.  
-****  
-  
-  
-  
-__Compiling qvwm on Solaris : __  
-On Solaris you should install the following packages which you can get  
-from  
-http://sun.freeware.com - xpm, imlib, jpeg, libungif, giflib, libpng, tiff.  
-And you can download the binary package for solaris from  
-http://www.qvwm.org.  
-  
-  
-Or you can download the qvwm source for solaris from  
-http://www.qvwm.org and compile it using gcc.  
-  
-  
-Troubleshooting compile:  
-You should put unsigned long before arg in usleep()  
-usleep((unsigned long) 10000)  
-----  
-  
-!!7. Vi companions  
-  
-  
-Generally Vim is used in conjunction with other powerful  
-tools like __ctags__ and __gdb__. __ctags__ is for very rapid navigation  
-through millions of lines of "C/C++" code and __gdb__ is for debugging the "C/C++" code.  
-A brief introduction of these two indispensable commands will be given in this chapter.  
-  
-  
-__ctags__ is the most powerful command available for coding C, C++, Java, Perl,  
-Korn/Bourne shell scripts or Fortran. Developers very extensively use __ctags__ to  
-navigate through thousands of functions within C/C++ programs. See 'man ctags' on Unix.  
-It is __very important__ that you learn how to use ctags to  
-develop programs in C or C++, Java, etc.. Navigation is the single most important task while  
-doing development of C or C++ code. Using ctags you can very quickly read the code  
-by jumping from a calling line to the called function, drill down deeper into nested function calls,  
-and unwind back all the way up to the top. You can go back and forth from function to function  
-very quickly.  
-  
-  
-Without NAVIGATION you will be completely lost! __ctags__ is like the magnetic COMPASS  
-needle for the programmers.  
-  
-  
-Usage of __ctags__ :  
-----  
-  
-ctags *.cpp  
-gvim -t foo_function  
-gvim -t main  
-  
-----  
-This will edit the C++ program file which contains the function foo_function() and will  
-automatically place the cursor on the first line of the function foo_function(). The second  
-command takes you to the line with the main() function definition.  
-  
-  
-Inside the Vim editor, you can jump to a function by typing : (colon) tag < function name >as below -  
-----  
-  
-:tag sample_function  
-  
-----  
-This will place the cursor on first line of sample_function()  
-  
-  
-If you want to jump into the function from a line in file which contains the function name, place the  
-cursor just before the function name and press __CTRL+]__ (press control key and  
-left-square-bracket key simultaneously).  
-----  
-  
-// example code  
-switch(id_number) {  
-Case 1:  
-if ( foo_function( 22, "abcef") == 3 )  
-^  
-|  
-|  
-|  
-Place the cursor here (just before foo_function) and press CTRL+]  
-This takes you to the function named "foo_function".  
-To come back to this line press CTRL+t  
-  
-----  
-To go back to the calling line press __CTRL+t__ (Control key and letter 't' together). Keep pressing __CTRL+t__  
-to unwind and go to the first line where you started the navigation. That is you can keep pressing __CTRL+]__  
-and then keep pressing __CTRL+t__ to go back. You can repeat these as many times as you want to have complete  
-navigation through all the functions of C or C++.  
-  
-!!7.1 Ctags for ESQL  
-  
-  
-  
-Since ctags does not directly support the Embedded SQL/C (ESQL) language, the following shell script  
-can be used to create tags for esql. ESQL/C is database SQL commands embedded inside the "C" programs.  
-Oracle's ESQL/C is called Pro*C and Sybase, Informix have ESQL/C and PostgreSQL has product "ecpg".  
-  
-  
-Save this file as "sqltags.sh" and do chmod a+rx tags_gen.sh.  
-----  
-  
-#!/bin/sh  
-# Program to create ctags for ESQL, C++ and C files  
-ESQL_EXTN=pc  
-tag_file1=tags_file.1  
-tag_file2=tags_file.2  
-which_tag=ctags  
-rm -f $tag_file1 $tag_file2 tags  
-aa=`ls *.$ESQL_EXTN`  
-#echo $aa  
-for ii in $aa  
-do  
-#echo $ii  
-jj=`echo $ii | cut -d'.' -f1`  
-#echo $jj  
-if [[ ! -f $jj.cpp ]; then  
-echo " "  
-echo " "  
-echo "***********************************************"  
-echo "ESQL *.cpp files does not exist.. "  
-echo "You must generate the *.cpp from *.pc file"  
-echo "using the Oracle Pro*C pre-compiler or Sybase"  
-echo "or Informix esql/c pre-compiler."  
-echo "And then re-run this command"  
-echo "***********************************************"  
-echo " "  
-exit  
-fi  
-rm -f tags  
-$which_tag $jj.cpp  
-kk=s/$jj\.cpp/$jj\.pc/g  
-#echo $kk > sed.tmp  
-#sed -f sed.tmp tags >> $tag_file1  
-#sed -e's/sample\.cpp/sample\.pc/g' tags >> $tag_file1  
-sed -e $kk tags >> $tag_file1  
-done  
-# Now handle all the C++/C files - exclude the ESQL *.cpp files  
-rm -f tags $tag_file2  
-bb=`ls *.cpp *.c`  
-aa=`ls *.$ESQL_EXTN`  
-for mm in $bb  
-do  
-ee=`echo $mm | cut -d'.' -f1`  
-file_type="NOT_ESQL"  
-# Exclude the ESQL *.cpp and *.c files  
-for nn in $aa  
-do  
-dd=`echo $nn | cut -d'.' -f1`  
-if [[ "$dd" = "$ee" ]; then  
-file_type="ESQL"  
-break  
-fi  
-done  
-if [[ "$file_type" = "ESQL" ]; then  
-continue  
-fi  
-rm -f tags  
-$which_tag $mm  
-cat tags >> $tag_file2  
-done  
-mv -f $tag_file2 tags  
-cat $tag_file1 >> tags  
-rm -f $tag_file1  
-# Must sort tags file for it work properly ....  
-sort tags > $tag_file1  
-mv $tag_file1 tags  
-  
-----  
-  
-!!7.2 Ctags for !JavaScript programs, Korn, Bourne shells  
-  
-  
-  
-The shell script given below can be used to generate tags for a very large variety of programs  
-written in !JavaScript, PHP/FI scripts, Korn shell, C shell, Bourne shell and many others. This is  
-a very generic module.  
-  
-  
-Save this file as tags_gen.sh and do chmod a+rx tags_gen.sh.  
-----  
-  
-#!/bin/sh  
-tmp_tag=tags_file  
-tmp_tag2=tags_file2  
-echo " "  
-echo " "  
-echo " "  
-echo " "  
-echo " "  
-echo "Generate tags for ...."  
-while :  
-do  
-echo " Enter file extension for which you want to generate tags."  
-echo -n " File-extension should be like sh, js, ksh, etc... : "  
-read ans  
-if [[ "$ans" == "" ]; then  
-echo " "  
-echo "Wrong entry. Try again!"  
-else  
-break  
-fi  
-done  
-\rm -f $tmp_tag  
-aa=`ls *.$ans`  
-for ii in $aa  
-do  
-jj=`echo $ii | cut -d'.' -f1`  
-#echo $jj  
-cp $ii $jj.c  
-ctags $jj.c  
-echo "s/$jj.c/$ii/g" > $tmp_tag2  
-sed -f $tmp_tag2 tags >> $tmp_tag  
-\rm -f tags $jj.c  
-done  
-sort $tmp_tag > tags  
-\rm -f $tmp_tag $tmp_tag2  
-  
-----  
-  
-!!7.3 Debugger gdb  
-  
-  
-  
-You would be using gdb extensively along with Vi.  
-Debugging is the most important aspect of programming  
-as the major cost of software projects goes into debugging and testing.  
-  
-  
-To debug C++/C programs use 'gdb' tool. See __'man gdb'__.  
-You must compile your programs with -g3 option like  
-  
-  
-gcc -g3 foo.c foo_another.c sample.c  
-  
-  
-  
-  
-To set up easy aliases do -  
-  
-  
-Setup an alias in your ~/.bash_profile  
-alias gdb='gdb -directory=/home/src -directory=/usr/myname/src '  
-Give -  
-gdb foo.cpp  
-gdb> dir /hom2/another_src  
-This will add to file search path  
-gdb> break 'some_class::func<TAB><TAB>  
-This will complete the function name saving you typing time... and will output like -  
-gdb> break 'some_class::function_foo_some_where(int aa, float bb)'  
-  
-  
-  
-  
-Pressing TAB key twice is the command line completion, which will save  
-you lots of typing time. This is one of the most important technique of using gdb.  
-  
-  
-To get online help do -  
-  
-  
-gdb> help  
-Gives online help  
-gdb> help breakpoints  
-Gives more details about breakpoints.  
-  
-  
-  
-  
-To set breakpoints and do debugging  
-  
-  
-unixprompt> gdb exe_filename  
-gdb> b main  
-This will put breakpoint in main() function  
-gdb> b 123  
-This will put breakpoint in line 123 of the current file  
-gdb> help breakpoints  
-Gives more details about breakpoints.  
-  
-  
-  
-  
-To analyze the core dumps do  
-  
-  
-unixprompt> gdb exe_filename core  
-gdb> bt  
-Gives backtrace of functions and line numbers where the program failed  
-gdb> help backtrace  
-Gives more details about backtrace.  
-  
-  
-  
-  
-You can also use GUI version of gdb called xxgdb.  
-  
-  
-See also gdb interface to Vim at  
-http://www.lxlinux.com/gdbvim.tgz.  
-  
-  
-Memory leak tools -  
-  
-  
-**** Freeware Electric Fence on linux cd,  
-****  
-  
-**** Commercial tools Purify  
-http://www.rational.com  
-****  
-  
-**** Insure++  
-http://www.insure.com  
-****  
-  
-  
-  
-  
-----  
-  
-!!8. Online VIM help  
-  
-  
-See the online man pages. At unix shell prompt  
-type __'man vim'__ and __'man gvim'__.  
-  
-  
-Or inside the gvim session type :help to get the help page. See also  
-Vim Tutorial  
-To see the settings type :set all or :set. To see list of options type :options.  
-To see topics on set type :help set.  
-  
-  
-  
-  
-  
-VIM - main help file  
-Move around: Use the cursor keys, or "h" to go left,  
-"j" to go down, "k" to go up, "l" to go right.  
-":1" takes you to 1st line of page  
-":n" takes you to nth line of page  
-"<SHIFT>g" takes you to bottom of page  
-":/someword/ will search for "someword" in doc  
-Close this window: Use ":q<Enter>".  
-Jump to a subject: Position the cursor on a tag between |bars| and hit CTRL-].  
-With the mouse: ":set mouse=a" to enable the mouse (in xterm or GUI).  
-Double-click the left mouse button on a tag between |bars|.  
-jump back: Type CTRL-T or CTRL-O.  
-Get specific help: It is possible to go directly to whatever you want help  
-on, by giving an argument to the ":help" command |:help|.  
-It is possible to further specify the context:  
-WHAT PREPEND EXAMPLE ~  
-Normal mode commands (nothing) :help x  
-Visual mode commands v_ :help v_u  
-Insert mode commands i_ :help i_<Esc>  
-command-line commands : :help :quit  
-command-line editing c_ :help c_<Del>  
-Vim command arguments - :help -r  
-options ' :help 'textwidth'  
-list of documentation files:  
-|howto.txt| how to do the most common things  
-|intro.txt| introduction to Vim  
-|index.txt| alphabetical index for each mode  
-|autocmd.txt| automatically executing commands on an event  
-|change.txt| delete and replace text  
-  
-  
-----  
-  
-!!9. Vim Home page and Vim links  
-  
-  
-The home page of vim is at  
-http://www.vim.org  
-and mirror site in US is at  
-http://www.us.vim.org  
-  
-  
-Vim FAQ is at  
-http://www.grafnetix.com/~laurent/vim/faq.html  
-and at  
-http://www.vim.org/faq  
-  
-Eli's Vim Page at  
-http://www.netusa.net/~eli/src/vim.html  
-  
-The Vi Lovers Home Page  
-http://www.cs.vu.nl/~tmgil/vi.html  
-  
-Vim Reference Guide at  
-http://scisun.sci.ccny.cuny.edu/~olrcc/vim/  
-  
-Vim mailing list at  
-http://www.findmail.com/listsaver/vimannounce.html  
-and  
-http://www.vim.org/mail.html  
-  
-Mailing list archives are kept at:  
-  
-  
-****  
-http://www.egroups.com/group/vim  
-****  
-  
-****  
-http://www.egroups.com/group/vimdev  
-****  
-  
-****  
-http://www.egroups.com/group/vimannounce  
-****  
-  
-  
-  
-Vim macros  
-----  
-  
-!! 10. Vim Tutorial  
-  
-  
-  
-  
-!! 10.1 Vim Hands-on Tutorial  
-  
-  
-  
-On Linux system see the tutorial at /usr/doc/vim-common-5.*/tutor, on other  
-unix systems go to directory where vim is installed and look for doc directory.  
-----  
-  
-bash$ cd /usr/doc/vim-common*/tutor  
-bash$ less README.txt  
-bash$ cp tutor $HOME  
-bash$ cd $HOME  
-bash$ less tutor  
-  
-----  
-  
-!! 10.2 Vi Tutorials on Internet  
-  
-  
-  
-  
-  
-  
-**** Purdue University  
-http://ecn.www.ecn.purdue.edu/ECN/Documents/VI/  
-  
-  
-  
-  
-  
-  
-  
-****  
-  
-**** Quick Vi tutorial  
-http://linuxwww.db.erau.edu/LUG/node165.html  
-  
-  
-  
-  
-  
-  
-  
-****  
-  
-**** Advanced Vi tutorial  
-http://www.yggdrasil.com/bible/bible-src/user-alpha-4/guide/node171.html  
-  
-  
-  
-  
-  
-  
-  
-****  
-  
-**** Tutorials  
-http://www.cfm.brown.edu/Unixhelp/vi_.html  
-  
-  
-  
-  
-  
-  
-  
-****  
-  
-**** Tutorials  
-http://www.linuxbox.com/~taylor/4ltrwrd/section3_4.html  
-  
-  
-  
-  
-  
-  
-  
-****  
-  
-**** Unix world online vi tutorial  
-http://www.networkcomputing.com/unixworld/unixhome.html  
-  
-  
-  
-  
-  
-  
-  
-****  
-  
-**** Univ of Hawaii tutorial  
-http://www.eng.hawaii.edu/Tutor/vi.html  
-  
-  
-  
-  
-  
-  
-  
-****  
-  
-**** !InfoBound  
-http://www.infobound.com/vi.html  
-  
-  
-  
-  
-  
-  
-  
-****  
-  
-**** Cornell Univ  
-http://www.tc.cornell.edu/Edu/Tutor/Basics/vi/  
-  
-  
-  
-  
-  
-  
-  
-****  
-  
-**** Vi Lovers home page:  
-http://www.cs.vu.nl/~tmgil/vi.html  
-****  
-  
-**** After Sept 2000, will moveto  
-http://www.thomer.com/thomer/vi/vi.html  
-  
-  
-  
-  
-  
-  
-  
-****  
-  
-**** Beginner's Guide to vi  
-http://www.cs.umr.edu/unixinfo/general/packages/viguide.html  
-  
-  
-  
-  
-  
-  
-  
-****  
-  
-**** vi Help file  
-http://www.vmunix.com/~gabor/vi.html  
-  
-  
-  
-  
-  
-  
-  
-****  
-  
-**** vim FAQ  
-http://www.math.fu-berlin.de/~guckes/vim/faq/  
-****  
-  
-There are many Vi Tutorials on internet. In Yahoo (Lycos, excite or Hotbot)  
-enter "Vi Tutorial" in search field and search engine will return many pointers.  
-----  
-  
-!! 11. Vi Tutorial  
-  
-  
-In this tutorial, we describe some "advanced" __vi__ concepts and commands, so you can appreciate the power of __vi__ and so you decide how to build your  
-knowledge of __vi__ commands. Nearly all __vi__ references list the available  
-commands, but many don't bother to discuss how the commands interrelate;  
-this topic is the main purpose of this tutorial.  
-  
-!!11.1 Cursor Movement Commands  
-  
-  
-  
-The __vi__ cursor movement commands allow you to position the cursor in the file  
-and/or on the screen efficiently, with a minimum number of keystrokes. There  
-are oodles of cursor movement commands - don't try memorizing them all at  
-once! Later, we'll see that much of the power of __vi__ comes from mixing cursor  
-movement commands with other commands to delete, change, yank (copy), and  
-filter text.  
-  
-  
-Please edit a large text file (say, __wknight__) so you can experiment with each  
-command as it is described. Keep in mind these commands will only work in  
-Command Mode, not Insert Mode; if you start getting your "commands" in your  
-text, press the ESC key to return to Command Mode.  
-  
-  
-  
-  
-  
-**** __cursor keys__ : As we've seen, cursor keys move by single character amounts  
-left, down, up, and right. Movement above the top of the file,  
-below the bottom, to the right of the end of a line, or left of the  
-beginning is not allowed (no line wrapping).  
-  
-  
-  
-  
-****  
-  
-**** __hjkl__ : When __vi__ was written (around 1978), many terminals on UNIX  
-systems did not have cursor keys! __h, j, k,__ and __l__ were chosen  
-as commands to move left, down, up, and right, respectively.  
-Try them! Most __vi__ diehards prefer these to the cursor keys  
-because  
-  
-  
-*****__(a)__ they are in the same place on all keyborads, and  
-*****  
-  
-*****__(b)__ they fit nicely under the fingers, unlike  
-most cursor keys, which are arranged in a box or "T" or some  
-other nonlinear shape.  
-*****  
-  
-Why h, j, k, and l? Well, in the ASCII character set, CTRL-H is backspace  
-(moves left), CTRL-J is linefeed (moves down), and, of course, k and l are  
-next to h and j, so you see, they're mnemonic.  
-  
-  
-  
-  
-****  
-  
-**** ____ : ("zero", not "oh") Move to the beginning of current line. (To try  
-this and the next few commands, use the cursor keys or __h j k l__ to  
-move to an indented text line that contains few "e"  
-characters. If you can't find an indented line in your file, create  
-one by inserting a few space characters at the beginning of a  
-line.)  
-  
-  
-  
-  
-****  
-  
-**** __ ^ __ : Move to first non-white character of current line. (For  
-indented line, 0 and ^ are different.)  
-  
-  
-  
-  
-****  
-  
-**** __ $ __ : Move to last character of current line.  
-  
-  
-  
-  
-****  
-  
-**** __ tC __ : Move to (but not on) next character c in current line. (Press ,  
-then press te. This will move to the first e in the curent line.)  
-  
-  
-  
-  
-****  
-  
-**** __ fC __ : Find (move on top of) next character c in current line. (Press  
-fe, and the cursor will find - that is, move on top - the next e in  
-the current line.)  
-  
-  
-  
-  
-****  
-  
-**** __ TC __ : Move to (but not on) the previous character c in current line  
-(Press $, then Te.)  
-  
-  
-  
-  
-****  
-  
-**** __ FC __ : Find (move on top of) the previous character c in current line.  
-(Press Fe.)  
-  
-  
-  
-  
-****  
-  
-**** __ n| __ : Move to column n in current line. (Try 20 |. The digits 2 and  
-will not be displayed as you type them, but when you press | the cursor will  
-move to column 20.)  
-Try some experiments with t f T F | . When you do something illegal, __vi__ will  
-beep your terminal.  
-  
-  
-  
-  
-****  
-  
-**** __ w __ : Forward to beginning of next "small" word ( a "small" word  
-consists of unbroken alphanumeric characters or punctuation characters, but  
-not mixed alphanumeric and punctuation). Try  
-tapping w a dozen times or so - note what happens at  
-punctuation.  
-  
-  
-  
-  
-****  
-  
-**** __ W __ : Forward to beginning of next "big" word (alphanumeric and  
-punctuation mixed). Try W a dozen times or so.  
-  
-  
-  
-  
-****  
-  
-**** __ b __ : Backward to beginning of "small" word.  
-  
-  
-  
-  
-****  
-  
-**** __ B __ : Backward to beginning of "big" word.  
-  
-  
-  
-  
-****  
-  
-**** __ e __ : Forward to end of "small" word.  
-  
-  
-  
-  
-****  
-  
-**** __ E __ : Forward to end of "big" word.  
-  
-  
-  
-  
-****  
-  
-**** __ + Return __ : Move to first non-white space character on next line. (+ and  
-the Return key have the same effect.)  
-  
-  
-  
-  
-****  
-  
-**** __ - __ : Move to first non-white space character on previous line.  
-  
-  
-  
-  
-****  
-  
-**** __ ) __ : Move to the end of sentence. (A sentence ends either at a  
-blank line or at a period or examination mark followed by two  
-space characters or at the end of a line. A period or  
-exclamation mark followed by one space character does not  
-end a sentence; this is correct behaviour, according to traditional  
-rules of how sentences should appear in typed documents, but often  
-appears wrong to those who have never suffered through  
-a formal typing class.)  
-  
-  
-  
-  
-****  
-  
-**** __ ( __ : Move to beginning of sentence.  
-  
-  
-  
-  
-****  
-  
-**** __ } __ : Move to end of paragraph. (Paragraphs are seperated with  
-blank lines, by __vi__'s definition.)  
-  
-  
-  
-  
-****  
-  
-**** __ { __ : Move to beginning of paragraph.  
-  
-  
-  
-  
-****  
-  
-**** __ H __ : Move to home position (top line) on the screen  
-  
-  
-  
-  
-****  
-  
-**** __ M __ : Move to middle line on the screen.  
-  
-  
-  
-  
-****  
-  
-**** __ L __ : Move to last line on the screen.  
-  
-  
-  
-  
-****  
-  
-**** __ nG __ : Move to line n. If n is not given, move  
-to the last line in the file.  
-(Try 15G to move to line 15, for example. The CTRL-G command displays  
-the name of the file, some status information, and the  
-current line number. To move to the top of the file: 1G)  
-  
-  
-  
-  
-****  
-  
-**** __ CTRL-d __ : Scroll down half-screen (see note).  
-****  
-  
-**** __ CTRL-u __ : Scroll up half-screen (see note).  
-****  
-  
-**** __ CTRL-f __ : Move forward one-screen (see note).  
-****  
-  
-**** __ CTRL-b __ : Move backward one-screen (see note).  
-****  
-  
-**** __ Note __ : These four scrolling/paging commands cannot be used  
-with the delete, change, yank, or filter commands.  
-  
-  
-  
-  
-****  
-  
-**** __ /reg_exp __ : Move to next occurrence of the regular expression reg_exp  
-When you press /, the cursor drops to the lower left corner of the screen and  
-waits for you to type in the regular expression.  
-Press the Return key to finish; __vi__ then searches forward for the next  
-occurrence of the regular expression. For example, press /the followed by  
-Return. This moves forward to the next occurrence of the, perhaps imbedded  
-in the middle of some longer word (other, weather, etc.). If you just press /  
-and then Return, __vi__ searches for the next occurrence of whatever the last  
-regular expression was that you searched for.  
-  
-  
-  
-  
-****  
-  
-**** __ n __ : Has the same effect as pressing / and then Return; i.e.,  
-searches for the next occurrence of whatever the last regular  
-expression was that you searched for.  
-  
-  
-  
-  
-****  
-  
-**** __ ?reg_exp __ : Searches backward, rather than forward. If no reg_exp is  
-given, it searches for the last regular expression that was entered.  
-Both / and ? wrap around, so searching "below" the bottom or "above" the  
-top of the file is legal.  
-  
-  
-  
-  
-****  
-  
-**** __ N __ : Same as pressing ? and then Return.  
-****  
-  
-  
-!!11.2 Repeat Counts  
-  
-  
-  
-Many of the movement commands discussed above can be preceded with a  
-repeat count; the movement is simply repeated the given number of times:  
-  
-  
-**** __ 3w __ : Move forward three words  
-****  
-  
-**** __ 5k __ : Move up four characters  
-****  
-  
-**** __ 3fa __ : Find the third succeeding a in current line  
-****  
-  
-**** __ 6+ __ : Move down six lines  
-****  
-  
-For some commands, the "repeat counts" has special meaning:  
-  
-  
-**** __ 4H __ : Move to Line 4 on the screen (home plus 3)  
-****  
-  
-**** __ 8L __ : Move to the eigth line from the bottom of the screen  
-****  
-  
-**** __ 3$ __ : Move to the end of the third line down  
-****  
-  
-For some commands (e.g., ^) the repeat count is ignored; for others (e.g.,  
-/ and ? ) it is illegal  
-  
-!!11.3 Deleting Text  
-  
-  
-  
-We've seen that __dd__ deletes the current line. This can be used  
-with a repeat  
-count: 3dd deletes three lines, the current line, and the two following lines.  
-  
-  
-The d command can be used as a "prefix" on most of the movement commands  
-above to delete nearly arbitrary chunks of text. When used with d, the  
-movement commands are called target specifiers. d can be given a repeat  
-count. (As you try these experiments, remember to press u after each command  
-to undo the deletion).  
-  
-  
-  
-  
-  
-**** __ dw __ : Delete "small" word forward  
-****  
-  
-**** __ d3w __ : Delete three "small" words forward  
-****  
-  
-**** __ 3dw __ : Three times, delete "small" word forward  
-****  
-  
-**** __ 3d3w __ : Three times, delete three "small" words forward (that is,  
-delete nine "small" words forward)  
-****  
-  
-**** __ d+ __ : Delete current line and next line down  
-****  
-  
-**** __ d/the __: Delete from current character up to but not including the  
-next occurrence of the pattern the.  
-****  
-  
-**** __ d$ __ : Delete to end of line  
-****  
-  
-**** __ d0 __ : Delete to beginning of line  
-****  
-  
-**** __ d30G __ : Delete from the curent line to and including Line 30  
-****  
-  
-**** __ dG __ : Delete from current line to and including last line  
-****  
-  
-**** __ d1G __ : Delete from current line to and including Line 1  
-****  
-  
-To delete single characters, use x. x can be given a repeat count:  
-  
-  
-**** __ 15x __ : Delete current and 14 following characters  
-****  
-  
-x is actually just an abbreviation of d1; that is, delete one character right.  
-  
-!!11.4 Changing Text  
-  
-  
-  
-The c command is similar to d, except it toggles __vi__ into Insert Mode, allowing  
-the original (unwanted) text to be changed to something else.  
-  
-  
-For example, put the cursor on the beginning of a word (press w to get to the  
-beginning of the next word). Then, press cw to change that word. On the  
-screen, the last character in the word being changed will be replaced  
-with a __$__  
-symbol indicating the boundary of the change; type in a new word (you will  
-overwrite the original word on the screen) and press the ESC key when done.  
-Your input may be longer or shorter than the word being changed.  
-  
-  
-Put the cursor at the beginning of a line containing at least three words, and  
-try c3w to change three words. Try c$ to change to the end of the current line.  
-In all cases where the change affects only the current line, the boundary of the  
-change is indicated with $.  
-  
-  
-When a change affects more than just the current line, __vi__ deletes the original  
-text from the screen and toggles into Insert Mode. For example, try c3+ to  
-change the current and the next three lines; __vi__ deletes the four  
-original lines from the screen and toggles into Insert Mode in a new blank line.  
-As usual, press the ESC key when you have finished entering your new text.  
-  
-  
-Some other change commands:  
-  
-  
-**** __ cc __ : Change current line  
-****  
-  
-**** __ 5cc __ : Change five lines (current and next four)  
-****  
-  
-**** __ c/the __ : Change from current character up to but not including the next  
-occurrence of the pattern the  
-****  
-  
-**** __ c$ __ : Change to end of line  
-****  
-  
-**** __ c30G __ : Change from the current line to and including Line 30  
-****  
-  
-**** __ cG __ : Change from curernt line to and including last line  
-****  
-  
-**** __ c1G __ : Change from curernt line to and including Line 1  
-****  
-  
-  
-!!11.5 Yanking (Copying) Text  
-  
-  
-  
-The y command yanks a copy of text into a buffer; the yanked text can then  
-be put (or pasted) elsewhere in the file using p or P.  
-  
-  
-The simplest form of yank is yy to yank the current line; after yy, try p to  
-put a copy of the yanked line after the cursor. Following yy, you can make  
-as many copies of the yanked line as you want by moving up and down in the file  
-and pressing p.  
-  
-  
-To copy multiple lines, try, for example, 5yy (yank the current and next four  
-lines). p puts a copy of the yanked lines after the cursor; the sequence 5yyp  
-"works" but it probably doesn't do what you would like. The P command is like  
-p, but puts a copy of the yanked text ahead of the cursor; try the sequence  
-5yyP.  
-  
-  
-Other yank commands:  
-  
-  
-**** __ y3w __ : Yank three words  
-****  
-  
-**** __ y$ __ : Yank to end of current line  
-****  
-  
-**** __ y1G __ : Yank from current line to and including Line 1  
-****  
-  
-  
-!!11.6 Filtering text  
-  
-  
-  
-The filter command __!__, prompts for the name of a UNIX command (which should  
-be a filter), then passes selected lines through the filter, replacing those  
-selected line in the __vi__ buffer with the output of the filter command. __vi__'s  
-ability to pass nearly arbitrary chunks of text through any UNIX filter adds  
-incredible flexibility to __vi__, at no "additional cost" in size or performance to  
-__vi__ itself.  
-  
-  
-Some examples will help illustrate. Create a line in your file containing just  
-the word who and absolutely no other text. Put the cursor on this line, and press __!!__  
-This command is analogous to dd, cc, or yy, but instead of deleting, changing,  
-or yanking the current line, it filters the current line. When you press the  
-second !, the cursor drops down to the lower left corner of the screen and a  
-single ! is displayed, prompting you to enter the name of a filter. As the  
-filter name, type sh and press the Return key. __sh__ (the Bourne shell) is a filter!  
-It reads standard input, does some processing of its input (that is, executes  
-commands), and sends its output (the output of those commands) to standard output. Filtering the line containing who through sh causes the line containing who to be replaced with a list of the current users on the system - right in your file!  
-  
-  
-Try repeating this process with __date__. That is, create a line containing nothing  
-but the word __date__, then put the cursor on the line, and press __!!sh__ and the  
-Return key. The line containing __date__ is replaced with the output of the __date__  
-command.  
-  
-  
-Put your cursor on the first line of the output of who. Count the number of lines.  
-Suppose, for example, the number is six. Then select those six lines to be  
-filtered through sort; press __6!!sort__ and the Return key. The six lines will  
-be passed through sort, and sort's output replaces the original six lines.  
-  
-  
-The filter command can only be used on complete lines, not on characters or  
-words.  
-  
-  
-Some other filter commands (here, < CR > means press Return):  
-  
-  
-**** __!/the < CR > sort < CR >__ : Sort from the current line up to and including the  
-next line containing the  
-****  
-  
-****__ !1Ggrep the < CR >__ : Replace from the current line to and including Line 1  
-with just the lines that contain the  
-****  
-  
-****__ !Gawk '{print $1}' < CR > __: From the current line to the end of file, replace every line with just its first word.  
-****  
-  
-  
-!!11.7 Marking Lines and Characters  
-  
-  
-  
-You can mark lines and characters to be used as targest for movement, deletion,  
-change, yanking, and filtering using the command mc, where c is a  
-lowercase letter.  
-  
-  
-For example, put the cursor in the middle of some word and press ma. This  
-marks the character under the cursor as mark a.  
-  
-  
-Now, move the cursor off the marked character and to a different line ( use  
-the cursor keys, CTRL-u, or whatever). To return to the marked line, press 'a  
-(that is, single quote, then a). This moves to the first non-white space  
-character on the line containing mark a.  
-  
-  
-Move off that line again. To return to the marked character, press `a (that is,  
-backquote, then a). This moves on top of the character marked with a.  
-  
-  
-Marking is usually used with deleting, changing, yanking or filtering. For  
-example, move the cursor to a line other than the one containing mark a,  
-and then press d'a (d, single quote, a). This deletes from the current line to and  
-including the line marked with a.  
-  
-  
-Put the cursor in the middle of a different word and press mb to set mark b.  
-Now, move the cursor away from that word (but only a few lines, so you can see  
-what we're about to do more easily), and then press d`b (d, backquote, b).  
-This deletes from the current CHARACTER to and including the CHARACTER marked  
-with b.  
-  
-  
-As another example, to sort the output of who, mark the first line (ma), then  
-move the cursor to the last line and press !'asort and the Return key.  
-  
-  
-If you jump to a mark and decide you want to jump back to whatever you jumped  
-from, you can press '' (jump back to line) or `` (jump back to character).  
-  
-!!11.8 Naming Buffers  
-  
-  
-  
-When you delete, change, or yank text, the original text is stored (until the next delete, change, or yank) in an unnamed buffer from which it can be put using  
-p or P. Using the unnamed buffer, only the most recently deleted, changed or yanked  
-text may be recovered.  
-  
-  
-If you wish to delete, change, or yank multiple sections of text and remember  
-them all (up to a maximum of 26), you can give a buffer name ahead of the  
-delete change or yank command. A buffer name has the form "c (double quote,  
-lowercase c).  
-  
-  
-For example, press "ayy to yank the current line into buffer a, then move to a  
-different line and press "byy to yank that line into buffer b. Now, move  
-elsewhere in the file and press "ap and "bp to put copies of the text  
-stored in buffers a and b.  
-  
-  
-Some other named buffer commands:  
-  
-  
-**** __ "a6yy __ : Yank six lines (current and next five) into buffer a  
-****  
-  
-**** __ "bd1G __ : Delete from the curernt line to and including Line 1,  
-storing the deleted lines in buffer b  
-****  
-  
-**** __ "cy'c __ : Yank from the current line to the line marked c into buffer c  
-(marks and buffers are distinct, and may  
-have the same name without confusing __vi__)  
-****  
-  
-  
-!!11.9 Substitutions  
-  
-  
-  
-To substitute one chunk of text for another in lines throughout your file,  
-use the :s command. Some substitute examples:  
-  
-  
-**** __ :1,$s/the/THE/g __ From Line 1 to the last line (line $), substitute  
-for the text THE; do this globally in each line where the occurrs  
-****  
-  
-**** __ :'a,.s/.*/ha ha/ __ From the line marked a to the current line (line .),  
-substitute for everything on the line the text ha ha  
-****  
-  
-  
-!!11.10 Miscellaneous "Colon Commands"  
-  
-  
-  
-All colon commands begin with a colon; when you press the colon, the cursor  
-drops to the lower left corner of the screen, and a colon prompt is displayed  
-waiting for you to finish your colon command.  
-  
-  
-Some important examples:  
-  
-  
-****__:w __ Write the buffer contents to the file without quitting from __vi__  
-****  
-  
-****__:w abc __Write the buffer contents to the file abc (creating abc  
-if it doesn't exist, or overwriting current contents if it does exist) without  
-quitting from __vi__  
-****  
-  
-****__:1,10w abc __Write lines 1 through 10 to file abc  
-****  
-  
-****__:'a,$w abc __Write from the line marked a to the last line into file abc  
-****  
-  
-****__:e abc __Edit file abc, instead of the current file. __vi__ prints an error  
-message if changes have been made to the curernt file that have not been saved  
-with :w  
-****  
-  
-****__:e! abc __Edit file abc, throwing away any changes that may  
-have been made to the current file  
-****  
-  
-****__:e # __Edit the prior file edited (successive :e# commands toggle  
-back and forth between two files)  
-****  
-  
-****__:f abc __Change the file anme for the current __vi__ buffer to abc  
-****  
-  
-****__:q __Quit, unless unsaved chanegs have been made  
-****  
-  
-****__:q! __Quit, throwing away any changes that may have been made  
-****  
-  
-****__:r abc __Read the file abc into current __vi__ buffer, after the line the  
-cursor is on (try :r croc to read in a copy of the croc file)  
-****  
-  
-****__:!cmd __Execute command cmd (who, sort, ls, etc.)  
-****  
-  
-  
-!!11.11 Setting Options  
-  
-  
-  
-Various options affect the "feel" of __vi__. You can display all the various options  
-that can be set using the colon command :set all. You can also use set to  
-change options.  
-  
-  
-For example, if you want to see line numbers for the lines in the file you're  
-editing, use the command :set number. To turn off line numbering, use  
-the command :set nonumber. Most options can be abbreviated; :set nu turns  
-on line numbering and :set nonu turns off line numbering.  
-  
-  
-If you :set nomagic, the special meanings of regular expression characters  
-(period, asterisk, square bracket, etc.) are switched off. Use :set magic to  
-restore the special meanings.  
-  
-  
-Some options take a value. For example, :set tabstop=4 causes tabs to  
-be displayed as four space characters, rather than the usual eight.  
-  
-  
-If you find you always want certain options set certain ways, you can put the  
-set commands you want ina file .exrc, or you can set up the  
-environment variable EXINIT to specify the options you want.  
-  
-  
-For example, if your login shell is Bourne shell, this line could go in your  
-.profile file:  
-----  
-  
-EXINIT='set nomagic nu tabstop=4'; export EXINIT  
-  
-----  
-If your login shell is a C shell, this line could go in your .login file:  
-----  
-  
-setenv EXINIT 'set nomagic nu tabstop=4'  
-  
-----  
-  
-!!11.12 Key Mappings  
-  
-  
-  
-If you find you're performing a series of simple commands over and over,  
-you can map the command series to an unused command key using the :map  
-command. If your mapping must include control characters such as Return  
-key (CTRL-M in ASCII) or the ESC (CTRL-[[ in ASCII) key, precede such  
-characters with CTRL-v to suppress their usual special meaning.  
-  
-  
-For example, this command maps CTRL-A to move the cursor forward 55 lines,  
-then back up to the most recent blank line, then change that blank line  
-to a formfeed (CTRL-L) and three blank lines. That is, each CTRL-A will  
-paginate the next page, without splitting paragraphs across pages.  
-  
-  
-Note: In this command, each control character is shown as ^C, where C is  
-some uppercase letter. For example, CTRL-M is shown as ^M. Also, when you enter  
-this command you will not see the CTRL-v characters as shown: each CTRL-v  
-merely suppresses the usual special meaning of the following control  
-character, so when you press the sequence ^V^M, all you will see on the screen is  
-^M. In this command, ^M is the Return key and ^[[ is the ESC key.  
-----  
-  
-:map ^A 55+?^$^V^Mcc^V^L^V^M^V^M^V^M^V^[[  
-  
-----  
-  
-!!11.13 Editing Multiple Files  
-  
-  
-  
-You can edit multiple files with __vi__ by giving multiple file names as command  
-line arguments:  
-----  
-  
-vi croc fatherw wknight  
-  
-----  
-Three colon commands are used to move through the multiple files:  
-  
-  
-****__ :n __Move to the next file in the argument list (you must save  
-changes with :w or __vi__ will print an error message)  
-****  
-  
-****__ :N __Move to the previous file in the argument list (you must save  
-changes with :w or __vi__ will print an error message)  
-****  
-  
-****__ :rew __Rewind and start over with the first file in the argument list  
-****  
-  
-The :n, :N, and :rew commands are somewhat clumsy, but there are some  
-important benefits: the contents of named buffers ("a, "b, "c, etc.) are  
-remembered across files, so you can use :n and :rew with p and P to copy  
-text back and forth between files. Also, the most recent search string for the  
-/ and ? commands remembered across files, so you can do repetitive searches  
-in multiple files rather easily.  
-  
-  
-For example, try the following experiment:  
-First get out of __vi__, then execute __vi__ with croc and wknight as arguments:  
-----  
-  
-$ vi croc wknight  
-  
-----  
-In croc, search for the  
-  
-  
-__ /the < CR > __  
-  
-  
-Yank this line into buffer a:  
-  
-  
-__ "ayy __  
-  
-  
-Now go to the next file (you've made no change to croc, so this will work):  
-  
-  
-__ :n < CR > __  
-  
-  
-Search for the "next" line containing the, without retyping the search string:  
-  
-  
-__ n __  
-  
-  
-Put a copy of buffer a after the current line in wknight:  
-  
-  
-__ "ap __  
-  
-  
-Move down two lines, and yank the current line into buffer b:  
-  
-  
-__ jj"byy __  
-  
-  
-Save the changes to wknight  
-  
-  
-__ :w < CR > __  
-  
-  
-Now, rewind to croc  
-  
-  
-__ :rew < CR > __  
-  
-  
-Search again, and put a copy of buffer b after the found line:  
-  
-  
-__ n"bp __  
-  
-  
-Save the changes, and exit __vi__  
-  
-  
-__ ZZ __  
-  
-!!11.14 Final Remarks  
-  
-  
-  
-This tutorial was intended to introduce some of the __vi__ capabilities that you  
-might overlook in your system's __vi__ manual or that might not be mentioned in  
-the manual (different systems have manuals of widely varying quality).  
-  
-  
-You will not be a __vi__ expert after reading this tutorial, but you will have a  
-good appreciation of __vi__'s capabilities. Only time and effort can make a __vi__  
-expert. But the efficiency and universality of __vi__ make this effort pay off in  
-the long run.  
-  
-  
-You may have decided you hate __vi__. So be it! But be aware that __vi__ remains  
-the standard UNIX text editor - the one editor you can count on being  
-available on every UNIX system you'll use - so even if you prefer to use  
-something else day-to-day, you'd be well advised to know the bare minimum __vi__  
-material covered in this tutorial.  
-----  
-  
-!! 12. Vim Reference Card  
-  
-  
-  
-  
-!!12.1 Vi states  
-  
-  
-  
-Vi has 3 modes:  
-  
-  
-***# __''command mode''__ - Normal and initial state; others return here (use __ESC__ to abort a partially typed command)  
-***#  
-  
-***# __''input mode''__ - entered by specific commands __a i A I o O c C s S R __ and ended by __ESC__ or abnormally with interrupt  
-***#  
-  
-***# __''line mode''__ - i.e. waiting for input after a __: __, __/ __, __? __ or a __! __  
-command (end with __CR__, abort with __CTRL-c__). __CTRL__ is the control key: __CTRL-c__ means "control c"  
-***#  
-  
-  
-!!12.2 Shell Commands  
-  
-  
-  
-  
-  
-  
-***# __TERM=__ ''code'' Puts a code name for your terminal into the variable __TERM__  
-***#  
-  
-***# __export TERM__ Conveys the value of __TERM__ (the terminal code) to any UNIX system program that is terminal dependant.  
-***#  
-  
-***# __tput init__ Initializes the terminal so that it will function properly with various UNIX system programs.  
-***#  
-  
-***# __vi __ ''filename'' Accesses the __vi__ screen editor so that you can edit a specified file.  
-***#  
-  
-***# __vi __ ''file1 file2 file3'' Enters three files into the __vi__ buffer to be edited. Those files are ''file1, file2,'' and ''file3''.  
-***#  
-  
-***# __view __ ''file'' Invoke vi editor on ''file'' in read-only mode  
-***#  
-  
-***# __vi -R __ ''file'' Invoke vi editor on ''file'' in read-only mode  
-***#  
-  
-***# __vi -r __ ''file'' Recover ''file'' and recent edits after system crash  
-***#  
-  
-  
-!!12.3 Setting Options  
-  
-  
-  
-  
-  
-  
-***# __:set__ ''option'' Activate ''option''  
-***#  
-  
-***# __:set__ ''option=value'' Assign ''value'' to ''option''  
-***#  
-  
-***# __:set no__ ''option'' Deactivate ''option''  
-***#  
-  
-***# __:set __ Display options set by user  
-***#  
-  
-***# __:set all__ Display list of all current options, both default and those set by the user  
-***#  
-  
-***# __:set __ ''option''? Display values of ''option''  
-***#  
-  
-  
-!!12.4 Notations used  
-  
-  
-  
-Notations:  
-  
-  
-***# __CTRL-c__ __CTRL__ is the control key: __CTRL-c__ means "control c"  
-***#  
-  
-***# __CR__ is Carriage return (ENTER key)  
-***#  
-  
-  
-!!12.5 Interrupting, cancelling  
-  
-  
-  
-  
-  
-  
-***# __ESC__ end insert or incomplete command  
-***#  
-  
-***# __CTRL-?__ __CTRL__ is the control key: __CTRL-?__ means "control ?" delete or rubout interrupts  
-***#  
-  
-***# __CTRL-l__ reprint/refresh screen if CTRL-? scrambles it  
-***#  
-  
-  
-!!12.6 File Manipulation  
-  
-  
-  
-  
-  
-  
-***# __ZZ__ Save the file and exit vi  
-***#  
-  
-***# __:wq__ Save the file and exit vi  
-***#  
-  
-***# __:w__ Write the current file  
-***#  
-  
-***# __:w!__ Force write the current file, if file is read-only  
-***#  
-  
-***# __:w''name''__ Write to file ''name''  
-***#  
-  
-***# __:q__ Exit from vi  
-***#  
-  
-***# __:q!__ Force exit from vi (discarding changes)  
-***#  
-  
-***# __:e name__ Edit file ''name''  
-***#  
-  
-***# __:e!__ reedit, discard changes  
-***#  
-  
-***# __:e + name__ edit file ''name'', starting at end  
-***#  
-  
-***# __:e + n__ edit starting at line ''n''  
-***#  
-  
-***# __:e #__ edit alternate file  
-***#  
-  
-***# __:n__ edit next file in ''arglist''  
-***#  
-  
-***# __:args__ list files in current filelist  
-***#  
-  
-***# __:rew__ rewind current filelist and edit first file  
-***#  
-  
-***# __:n args__ specify new arglist  
-***#  
-  
-***# __:f __ show current file and line  
-***#  
-  
-***# __CTRL-G__ synonym for :f , show current file and line  
-***#  
-  
-***# __:ta tag __ to tag file entry ''tag''  
-***#  
-  
-***# __CTRL-] __ :ta, following word is tag  
-***#  
-  
-  
-!!12.7 Movement  
-  
-  
-  
-  
-  
-  
-***# __Arrows__ Move the cursor  
-***#  
-  
-***# __CTRL-d__ Scroll half page down  
-***#  
-  
-***# __CTRL-u__ Scroll half page up  
-***#  
-  
-***# __CTRL-f__ Scroll a full page down  
-***#  
-  
-***# __CTRL-b__ Scroll a full page up  
-***#  
-  
-***# __:__ Move to start of file  
-***#  
-  
-***# __:n__ Move to line number n  
-***#  
-  
-***# __:$__ Move to end of file  
-***#  
-  
-***# ____ Move to start of line  
-***#  
-  
-***# __^__ Move to first non-blank character  
-***#  
-  
-***# __$__ Move to end of line  
-***#  
-  
-***# __CR__ Move to the start of next line  
-***#  
-  
-***# __-__ Move to the start of previous line  
-***#  
-  
-***# __%__ Find matching bracket  
-***#  
-  
-***# __G __ goto line (last line default)  
-***#  
-  
-***# __]] __ next section/function  
-***#  
-  
-***# __[[[[ __ previous section/function  
-***#  
-  
-  
-!!12.8 Line Positioning  
-  
-  
-  
-  
-  
-  
-***# __H __ Home window line  
-***#  
-  
-***# __L __ Last window line  
-***#  
-  
-***# __M __ Middle window line  
-***#  
-  
-***# __+ __ Next line, at first non-white  
-***#  
-  
-***# __- __ Previous line, at first non-white  
-***#  
-  
-***# __CR __ return, same as +  
-***#  
-  
-***# __j __ next line, same column  
-***#  
-  
-***# __k __ previous line, same column  
-***#  
-  
-  
-!!12.9 Character positioning  
-  
-  
-  
-  
-  
-  
-***# __0 __ beginning of line  
-***#  
-  
-***# __$ __ end of line  
-***#  
-  
-***# __h __ forward  
-***#  
-  
-***# __l __ backwards  
-***#  
-  
-***# __SPACE __ same as l  
-***#  
-  
-***# __fx __ find x forward  
-***#  
-  
-***# __Fx __ find x backward  
-***#  
-  
-***# __; __ repeat last f F  
-***#  
-  
-***# __, __ inverse of ;  
-***#  
-  
-***# __| __ to specified column  
-***#  
-  
-***# __% __ find matching { or }  
-***#  
-  
-  
-!!12.10 Words, sentences, paragraphs  
-  
-  
-  
-  
-  
-  
-***# __w __ Word forward  
-***#  
-  
-***# __b __ Word backward  
-***#  
-  
-***# __e __ End of word  
-***#  
-  
-***# __) __ To next sentence  
-***#  
-  
-***# __( __ Back sentence  
-***#  
-  
-***# __} __ To next paragraph  
-***#  
-  
-***# __{ __ Back paragraph  
-***#  
-  
-***# __W __ Blank delimited word  
-***#  
-  
-***# __B __ Back W  
-***#  
-  
-***# __E __ To end of W  
-***#  
-  
-  
-!!12.11 Marking and returning  
-  
-  
-  
-  
-  
-  
-***# __``__ (press twice the back-quote ` key) Previous context  
-***#  
-  
-***# __''__ (press twice the single-quote ` key) Previous context at first non-white in line  
-***#  
-  
-***# __mx__ mark position with letter x  
-***#  
-  
-***# __`x__ (back quote key and letter x) goto mark x  
-***#  
-  
-***# __'x__ goto mark x at first non-white in line  
-***#  
-  
-  
-!!12.12 Corrections during insert  
-  
-  
-  
-  
-  
-  
-***# __CTRL-h__ Erase last character  
-***#  
-  
-***# __CTRL-w__ Erase last word  
-***#  
-  
-***# __erase __ Press DELETE key, same as CTRL-h  
-***#  
-  
-***# __kill __ Your kill key, erase input this line  
-***#  
-  
-***# __\ __ Escapes CTRL-h, DELETE and kill  
-***#  
-  
-***# __ESC __ Ends insertion, back to command  
-***#  
-  
-***# __CTRL-? __ Interrupt, terminates insert  
-***#  
-  
-***# __CTRL-d __ Backtab over ''autoindent''  
-***#  
-  
-***# __CTRL-v __ Quote non-printing character  
-***#  
-  
-  
-!!12.13 Adjusting the screen  
-  
-  
-  
-  
-  
-  
-***# __CTRL-l__ Clear and redraw  
-***#  
-  
-***# __CTRL-r__ retype, eliminate @lines  
-***#  
-  
-***# __z-CR__ redraw, current line at window top  
-***#  
-  
-***# __z-__ redraw, current line at window bottom  
-***#  
-  
-***# __z.__ redraw, current line at window center  
-***#  
-  
-***# __/pat/z-__ ''pat'' line bottom  
-***#  
-  
-***# __tn__ Use n line window  
-***#  
-  
-***# __CTRL-e__ Scroll window down 1 line  
-***#  
-  
-***# __CTRL-y__ Scroll window up 1 line  
-***#  
-  
-  
-!!12.14 Delete  
-  
-  
-  
-  
-  
-  
-***# __x__ Delete the character under the cursor  
-***#  
-  
-***# __X__ Delete the charater before the cursor  
-***#  
-  
-***# __D__ Delete to the end of line  
-***#  
-  
-***# __d^__ Delete back to start of line  
-***#  
-  
-***# __dd__ Delete the current line  
-***#  
-  
-***# __ndd__ Delete ''n'' lines starting with the current one  
-***#  
-  
-***# __dnw__ Delete ''n'' words starting from cursor  
-***#  
-  
-  
-!!12.15 Insert, change  
-  
-  
-  
-  
-  
-  
-***# __i__ Enter input mode inserting before the cursor  
-***#  
-  
-***# __I__ Enter input mode inserting before the first non-blank character  
-***#  
-  
-***# __a__ Enter input mode inserting after the cursor  
-***#  
-  
-***# __A__ Enter input mode inserting after the end of the line  
-***#  
-  
-***# __o__ Open a new line below current line and enter input mode  
-***#  
-  
-***# __O__ Open a new line above current line and enter input mode  
-***#  
-  
-***# __r__ Replace the character under the cursor (does NOT enter input mode)  
-***#  
-  
-***# __R__ Enter input mode replacing characters  
-***#  
-  
-***# __C__ shift-c. Change rest of line  
-***#  
-  
-***# __D__ shift-d. Delete rest of line  
-***#  
-  
-***# __s__ Substitute chars  
-***#  
-  
-***# __S__ Substitute lines  
-***#  
-  
-***# __J__ Join lines  
-***#  
-  
-***# __J__ Join lines  
-***#  
-  
-  
-!!12.16 Copy and Paste  
-  
-  
-  
-The "yank buffer" is filled by ''EVERY'' delete command, or explicitely by  
-__Y__ and __yy__.  
-  
-  
-***# __Y__ Copy the current line to the yank buffer  
-***#  
-  
-***# __''n''yy__ Copy ''n'' lines starting from the current to the yank buffer  
-***#  
-  
-***# __p__ Paste the yank buffer after the cursor (or below the current line)  
-***#  
-  
-***# __P__ Paste the yank buffer before the cursor (or above the current line)  
-***#  
-  
-***# __"''x''p __ Put from buffer x  
-***#  
-  
-***# __"''x''y __ Yank to buffer x  
-***#  
-  
-***# __"''x''d __ Delete into buffer x  
-***#  
-  
-  
-!!12.17 Operators (use double to affect lines)  
-  
-  
-  
-  
-  
-  
-***# __d __ delete  
-***#  
-  
-***# __c __ change  
-***#  
-  
-***# __< __ left shift  
-***#  
-  
-***# __> __ right shift  
-***#  
-  
-***# __! __ filter through command  
-***#  
-  
-***# __= __ indent for LISP  
-***#  
-  
-***# __y __ yank text to buffer  
-***#  
-  
-  
-!!12.18 Search and replace  
-  
-  
-  
-  
-  
-  
-***# __/''text''__ Search forward for ''text''  
-***#  
-  
-***# __?''text''__ Search backward for ''text''  
-***#  
-  
-***# __n__ Repeat the last search in the same direction  
-***#  
-  
-***# __N__ Repeat the last search in the reverse direction  
-***#  
-  
-***# __/__ Repeat the last search forward  
-***#  
-  
-***# __?__ Repeat the last search backward  
-***#  
-  
-***# __[[ addr ] s/from/to/ [[ g ] __ Search for the occurence of ''from''  
-and replace it with __''to''__ in the current line, or in the range  
-__''addr''__ (two line numbers seperated by command; 1,$ is the whole file).  
-Replaces one occurrence per line, or all occurrences  
-if __''g''__ is specified.  
-For example, :3,20s/someword/anotherword/g Will replace "someword" with "anotherword" starting from line 3 to line 20. 'g' is global means replace all occurrences of "someword".  
-***#  
-  
-  
-!!12.19 General  
-  
-  
-  
-  
-  
-  
-***# __:sh__ Forks a shell (to be exited with CTRL-d)  
-***#  
-  
-***# __:!''command''__ Forks a shell to execute ''command''  
-***#  
-  
-***# __:set number__ Switch on line numbering  
-***#  
-  
-***# __:set nonumber__ Switch off line numbering  
-***#  
-  
-  
-!!12.20 Line Editor Commands  
-  
-  
-  
-  
-  
-  
-***# __:__ Tells __vi__ that the next commands you issue will be line editor commands.  
-***#  
-  
-***# __:sh__ Temporarily returns to the shell to perform some shell commands without leaving __vi__.  
-***#  
-  
-***# __CTRL-d__ Escapes the temporary return to the shell and returns to __vi__ so you can edit the current window.  
-***#  
-  
-***# __:__''n'' Goes to the ''n''th line of the buffer.  
-***#  
-  
-***# __:__''x,z''__w__ ''filename'' Writes lines from the numbers ''x'' through the number ''z'' into a new file called ''filename''.  
-***#  
-  
-***# __:$__ Moves the cursor to the beginning of the last line in the buffer.  
-***#  
-  
-***# __:.,$d__ Deletes all the lines from the current line to the last line  
-***#  
-  
-***# __:r__ ''filename'' Inserts the contents of the file ''filename'' under the current line of the buffer.  
-***#  
-  
-***# __:s__''/text/new_text/'' Replaces the first instance of ''text'' on the current line with ''new_text''  
-***#  
-  
-***# __:s__''/text/new_text/g'' Replaces the every occurrence of ''text'' on the current line with ''new_text''  
-***#  
-  
-***# __:g__''/text/s//new_text/g'' Changes every occurrence of ''text'' on the buffer to ''new_text''.  
-***#  
-  
-  
-!!12.21 Other commands  
-  
-  
-  
-  
-  
-  
-***# __u__ Undo the last change  
-***#  
-  
-***# __U__ Restore the current line  
-***#  
-  
-***# __~__ Change case  
-***#  
-  
-***# __J__ Join the currentline with the next line  
-***#  
-  
-***# __.__ Repeat last text changing command  
-***#  
-  
-***# __CTRL-g__ Show file name and line number  
-***#  
-  
-----  
-  
-!!13. Related URLs  
-  
-  
-Related VIM URLs are at -  
-  
-  
-**** C and C++ Beautifer  
-http://www.metalab.unc.edu/LDP/HOWTO/C-C++Beautifier-HOWTO.html  
-****  
-  
-**** Linux goodies main site is at  
-http://www.milkywaygalaxy.freeservers.com  
-Mirror sites are at -  
-http://aldev0.webjump.com,  
-angelfire,  
-geocities,  
-virtualave,  
-50megs,  
-theglobe,  
-NBCi,  
-Terrashare,  
-Fortunecity,  
-Freewebsites,  
-Tripod,  
-Spree,  
-Escalix,  
-Httpcity,  
-Freeservers.  
-  
-****  
-  
-----  
-  
-!!14. Other Formats of this Document  
-  
-  
-This document is published in 14 different formats namely - DVI, Postscript,  
-Latex, Adobe Acrobat PDF,  
-LyX, GNU-info, HTML, RTF(Rich Text Format), Plain-text, Unix man pages, single  
-HTML file, SGML (Linuxdoc format), SGML (Docbook format), MS !WinHelp format.  
-  
-  
-This howto document is located at -  
-  
-  
-****  
-http://www.linuxdoc.org and click on HOWTOs and search  
-for howto document name using CTRL+f or ALT+f within the web-browser.  
-****  
-  
-  
-  
-You can also find this document at the following mirrors sites -  
-  
-  
-****  
-http://www.caldera.com/LDP/HOWTO  
-****  
-  
-****  
-http://www.linux.ucla.edu/LDP  
-****  
-  
-****  
-http://www.cc.gatech.edu/linux/LDP  
-****  
-  
-****  
-http://www.redhat.com/mirrors/LDP  
-  
-****  
-  
-**** Other mirror sites near you (network-address-wise) can be found at  
-http://www.linuxdoc.org/mirrors.html  
-select a site and go to directory /LDP/HOWTO/xxxxx-HOWTO.html  
-****  
-  
-  
-  
-  
-  
-  
-  
-  
-  
-****You can get this HOWTO document as a single file tar ball in HTML, DVI,  
-Postscript or SGML formats from -  
-ftp://www.linuxdoc.org/pub/Linux/docs/HOWTO/other-formats/  
-and  
-http://www.linuxdoc.org/docs.html#howto  
-  
-  
-  
-  
-****  
-  
-****Plain text format is in:  
-ftp://www.linuxdoc.org/pub/Linux/docs/HOWTO  
-and  
-http://www.linuxdoc.org/docs.html#howto  
-  
-  
-  
-  
-****  
-  
-****Single HTML file format is in:  
-http://www.linuxdoc.org/docs.html#howto  
-  
-  
- Single HTML file can be created with command (see man sgml2html) -  
-sgml2html -split 0 xxxxhowto.sgml  
-  
-  
-  
-  
-****  
-  
-****Translations to other languages like French, German, Spanish,  
-Chinese, Japanese are in  
-ftp://www.linuxdoc.org/pub/Linux/docs/HOWTO  
-and  
-http://www.linuxdoc.org/docs.html#howto  
-Any help from you to translate to other languages is welcome.  
-****  
-  
-The document is written using a tool called "SGML-Tools" which can be got from -  
-http://www.sgmltools.org  
-Compiling the source you will get the following commands like  
-  
-  
-****sgml2html xxxxhowto.sgml (to generate html file)  
-****  
-  
-****sgml2html -split 0 xxxxhowto.sgml (to generate a single page html file)  
-****  
-  
-****sgml2rtf xxxxhowto.sgml (to generate RTF file)  
-****  
-  
-****sgml2latex xxxxhowto.sgml (to generate latex file)  
-****  
-  
-  
-!! 14.1 Acrobat PDF format  
-  
-  
-  
-PDF file can be generated from postscript file using  
-either acrobat __distill__ or __Ghostscript__.  
-And postscript file is generated  
-from DVI which in turn is generated from !LaTex file.  
-You can download distill software from  
-http://www.adobe.com. Given below  
-is a sample session:  
-----  
-  
-bash$ man sgml2latex  
-bash$ sgml2latex filename.sgml  
-bash$ man dvips  
-bash$ dvips -o filename.ps filename.dvi  
-bash$ distill filename.ps  
-bash$ man ghostscript  
-bash$ man ps2pdf  
-bash$ ps2pdf input.ps output.pdf  
-bash$ acroread output.pdf &  
-  
-----  
-Or you can use Ghostscript command __ps2pdf__.  
-ps2pdf is a work-alike for nearly all the functionality of  
-Adobe's Acrobat Distiller product: it  
-converts !PostScript files to Portable Document Format (PDF) files.  
-__ps2pdf__ is implemented as a very small command script  
-(batch file) that invokes Ghostscript, selecting a special "output device"  
-called __pdfwrite__. In order to use ps2pdf, the pdfwrite  
-device must be included in the makefile when Ghostscript was compiled;  
-see the documentation on building Ghostscript for details.  
-  
-!! 14.2 Convert Linuxdoc to Docbook format  
-  
-  
-  
-This document is written in linuxdoc SGML format. The Docbook SGML format  
-supercedes the linuxdoc format and has lot more features than linuxdoc.  
-The linuxdoc is very simple and is easy to use. To convert linuxdoc SGML  
-file to Docbook SGML use the program __ld2db.sh__ and some perl scripts.  
-The ld2db output is not 100% clean and you need to use the __clean_ld2db.pl__  
-perl script. You may need to manually correct few lines in the document.  
-  
-  
-**** Download ld2db program from  
-http://www.dcs.gla.ac.uk/~rrt/docbook.html  
-or from  
-Al Dev site  
-****  
-  
-**** Download the cleanup_ld2db.pl perl script from  
-from  
-Al Dev site  
-****  
-  
-The ld2db.sh is not 100% clean, you will get lots of errors when you run  
-----  
-  
-bash$ ld2db.sh file-linuxdoc.sgml db.sgml  
-bash$ cleanup.pl db.sgml > db_clean.sgml  
-bash$ gvim db_clean.sgml  
-bash$ docbook2html db.sgml  
-  
-----  
-And you may have to manually edit some of the minor errors after  
-running the perl script. For e.g. you may need to put closing tag <  
-/Para> for each <  
-Listitem>  
-  
-!! 14.3 Convert to MS !WinHelp format  
-  
-  
-  
-You can convert the SGML howto document to Microsoft Windows Help file,  
-first convert the sgml to html using:  
-----  
-  
-bash$ sgml2html xxxxhowto.sgml (to generate html file)  
-bash$ sgml2html -split 0 xxxxhowto.sgml (to generate a single page html file)  
-  
-----  
-Then use the tool  
-!HtmlToHlp.  
-You can also use sgml2rtf and then use the RTF files for generating winhelp files.  
-  
-!! 14.4 Reading various formats  
-  
-  
-  
-In order to view the document in dvi format, use the xdvi program. The xdvi  
-program is located in tetex-xdvi*.rpm package in Redhat Linux which can be  
-located through !ControlPanel | Applications | Publishing | TeX menu buttons.  
-To read dvi document give the command -  
-  
-  
-xdvi -geometry 80x90 howto.dvi  
-man xdvi  
-  
-  
-And resize the window with mouse.  
-To navigate use Arrow keys, Page Up, Page Down keys, also  
-you can use 'f', 'd', 'u', 'c', 'l', 'r', 'p', 'n' letter  
-keys to move up, down, center, next page, previous page etc.  
-To turn off expert menu press 'x'.  
-  
-  
-You can read postscript file using the program 'gv' (ghostview) or  
-'ghostscript'.  
-The ghostscript program is in ghostscript*.rpm package and gv  
-program is in gv*.rpm package in Redhat Linux  
-which can be located through !ControlPanel | Applications | Graphics menu  
-buttons. The gv program is much more user friendly than ghostscript.  
-Also ghostscript and gv are available on other platforms like OS/2,  
-Windows 95 and NT, you view this document even on those platforms.  
-  
-  
-  
-  
-  
-****Get ghostscript for Windows 95, OS/2, and for  
-all OSes from  
-http://www.cs.wisc.edu/~ghost  
-****  
-  
-  
-  
-To read postscript document give the command -  
-  
-  
-gv howto.ps  
-ghostscript howto.ps  
-  
-  
-  
-  
-You can read HTML format document using Netscape Navigator, Microsoft Internet  
-explorer, Redhat Baron Web browser or any of the 10 other web browsers.  
-  
-  
-You can read the latex, LyX output using LyX a X-Windows front end to latex.  
-----  
-  
-!!15. Copyright Notice  
-  
-  
-Copyright policy is GNU/GPL as per LDP (Linux Documentation project).  
-LDP is a GNU/GPL project.  
-Additional restrictions are - you must retain the author's name, email address  
-and this copyright notice on all the copies. If you make any changes  
-or additions to this document then you should  
-notify all the authors of this document .  
-----  
+Describe [HowToVimHOWTO ] here.