version 5.3 " ================================================================== " File: $HOME/.vimrc " Availability: This file is available as " ~20K " ~56K " (mirror) " Size: This file is about 57K in size and has 1,500+ lines. " Purpose: Setup file for the editor Vim (Vi IMproved) " Author: Sven Guckes guckes@vim.org (guckes@math.fu-berlin.de) " " Related files: " http://www.math.fu-berlin.de/~guckes/vim/src/latex.vim " http://www.math.fu-berlin.de/~guckes/vim/src/html.vim " http://www.math.fu-berlin.de/~guckes/vim/syntax/ " Note: Please send comments to me - email preferred! :-) " Last update: Thu Dec 10 02:02:02 CET 1998 " =================================================================== " The latest versions of Vim are usually in my signature file: " http://www.math.fu-berlin.de/~guckes/sig/SIGS Have a look! " =================================================================== " Note to Windows users: Get these files from any Vim mirror: " vim52rt.zip (840K) vim runtime files (docs + syntax files) " gvimw32.zip (440K) gvim - precompiled binary for Windows 32bit " These should fit onto one floppy. Just a recommendation. " =================================================================== " Installation of this setup file: " " To use this setup file, copy it to " this filename on these systems: " ~/.vimrc Unix and OS/2 " s:.vimrc Amiga " $VIM\_vimrc MS-DOS and Win32 " " NOTE: This setup file uses a lot of features of Vim-5. " If you are still using Vim-4 (or an even older version) " then you should upgrade - it is really worth the effort! " To find out why get Vim-5 and read ":help version5". " " The first line of this setup file contains the information " "version xxx" which allows VIM to check whether the setup file " fits the syntax that it understands. " Versions of VIM other than of version 5 then will give a warning " as they do not understand this setup file command - a feature: " Give a warning so the user knows that there is something odd " about the setup file. " =================================================================== " Whitespace meta sequence: " vim-5.0s introduced the meta sequence "\s" which stands for "whitespace" " ie either a space or a tab. This makes mappings a lot easier. " I have therefore updated my mappings to use this sequence. " But this is incompatible with previous versions and, of course, Vi. " =================================================================== " Info on the latest versions is on the Vim HomePage: " http://www.vim.org/ - which is a daily mirror of the pages at " http://www.math.fu-berlin.de/~guckes/vim/ " and in Sven's signature file: " http://www.math.fu-berlin.de/~guckes/sig/SIGS " =================================================================== " =================================================================== " Structure of this file: " Lines starting with an inverted comma (") are comments. " Some mappings are commented out. Remove the comment to enable them. " " There are three kinds of things which are defined in this file: " Mapping ("map"), settings ("set"), and abbreviations ("ab"). " Settings affect the behaviour of commands. " Mappings maps a key sequence to a command. " Abbreviations define words which are replaced " right *after* they are typed in. " " =================================================================== " Note on mappings - "angle notation" (see ":help <>"): " VIM allows you to define mappings with special characters " with a notation that uses non-special characters: " The notation encloses decriptive words in angle brackets (<>). " The characters you will most often are: " for control-m " for control-v which quotes the following character " for the escape character. " All control characters have been replaced to use the angle notation " so you should be able to read this file without problems. " (Well, sometimes I leave some tabs [control-i] in the file. ;-) " =================================================================== " External programs: " Some mappings make use of external programs. " The following you should find on every UNIX system: " awk, egrep, grep, ispell, perl, sed. " If you are using DOS then you should get these for you system!! " Programs that are supplied with the mailer ELM: elmalias, readmsg. " To get these look at page " http://www.math.fu-berlin.de/~guckes/elm/dist.html " One major advantage of vim-5 (actually, 5.0g) is that there is now " the internal function "strftime". This allows to insert the current " date and time in various format. Example: mapping ",L" (see below) " =================================================================== " SETtings " =================================================================== " " autoindent: "off" as I usually do not write code. set noautoindent " " autowrite: "on" saves a lot of trouble set autowrite " " backup: backups are for wimps ;-) set nobackup " " backspace: '2' is much smarter. set backspace=2 " " background: Are we using a "light" or "dark" background? set background=dark " " compatible .... set nocompatible " " comments default: sr:/*,mb:*,el:*/,://,b:#,:%,:XCOMM,n:>,fb:- set comments=b:#,:%,fb:-,n:>,n:) " " cpoptions you should get to know - source of many FAQs! ;-) " cpoptions: "compatible options" to match Vi behaviour " set cpoptions="aABceFs" "default! " FAQ: Do NOT include the flag '<' if you WANT angle notation! " " dictionary: english words first set dictionary=/usr/dict/words,/local/lib/german.words " " digraph: required for those umlauts set digraph " " errorbells: damn this beep! ;-) set noerrorbells " esckeys: allow usage of cursor keys within insert mode set esckeys " " formatoptions: Options for the "text format" command ("gq") " I need all those options (but 'o')! set formatoptions=cqrt " " helpheight: zero disables this. set helpheight=0 " " helpfile: filename of the helpfile " set helpfile=c:\\vim-4.6\\docs\\help.txt " this is where I usually put it on DOS; sometimes is required " to set as the default installation does not find it :-( " " hidden: set hidden " " highlight=8b,db,es,hs,mb,Mn,nu,rs,sr,tb,vr,ws set highlight=8r,db,es,hs,mb,Mr,nu,rs,sr,tb,vr,ws " " hlsearch : highlight search - show the current search pattern " This is a nice feature sometimes - but it sure can get in the " way sometimes when you edit. set nohlsearch " " icon: ... set noicon " " set iconstring file of icon (Sven doesn't use an icon) " set iconstring " " ignorecase: ignore the case in search patterns? NO! set noignorecase " " insertmode: start in insert mode? Naah. set noinsertmode " " " iskeyword: Add the dash ('-'), the dot ('.'), and the '@' " as "letters" to "words". " iskeyword=@,48-57,_,192-255 (default) set iskeyword=@,48-57,_,192-255,-,.,@-@ " " joinspaces: insert two spaces after a period with every " joining of lines. This is very nice! set joinspaces " " keywordprg: Program to use for the "K" command. " set keywordprg=man\ -s " " laststatus: show status line? Yes, always! " laststatus: Even for only one buffer. set laststatus=2 " " [VIM5]lazyredraw: do not update screen while executing macros set lazyredraw " " magic: use some magic in search patterns? Certainly! set magic " " modeline: ... " Allow the last line to be a modeline - useful when " the last line in sig gives the preferred textwidth for replies. set modeline set modelines=1 " " number: ... set nonumber " " path: The list of directories to search when you specify " a file with an edit command. " Note: "~/.P" is a symlink to my dir with www pages " "$VIM/syntax" is where the syntax files are. set path=.,,~/.P/vim,~/.P/vim/syntax,~/.P/vim/source,$VIM/syntax/ " set path=.,,~/.P/vim,~/.P/mutt/,~/.P/elm,~/.P/slrn/,~/.P/nn " " report: show a report when N lines were changed. " report=0 thus means "show all changes"! set report=0 " " ruler: show cursor position? Yep! set ruler " " Setting the "shell" is always tricky - especially when you are " trying to use the same vimrc on different operatin systems. " shell for DOS " set shell=command.com " shell for UNIX - math.fu-berlin.de BSD " set shell=zsh " shell for UNIX - inf.fu-berlin.de BSD&Solaris " set shell=zsh " shell for UNIX - zedat.fu-berlin.de BSD&Solaris " set shell=/bin/tcsh " zsh now available at zedat! :-) " set shell=zsh " Now that vim-5 has ":if" I am trying to automate the setting: " if has("dos16") || has("dos32") let shell='command.com' endif if has("unix") let shell='zsh' endif " " shiftwidth: Number of spaces to use for each " insertion of (auto)indent. set shiftwidth=8 " " shortmess: Kind of messages to show. Abbreviate them all! " New since vim-5.0v: flag 'I' to suppress "intro message". set shortmess=at " " showcmd: Show current uncompleted command? Absolutely! set showcmd " " showmatch: Show the matching bracket for the last ')'? set showmatch " " showmode: Show the current mode? YEEEEEEEEESSSSSSSSSSS! set showmode " " suffixes: Ignore filename with any of these suffixes " when using the ":edit" command. " Most of these are files created by LaTeX. set suffixes=.aux,.bak,.dvi,.gz,.idx,.log,.ps,.swp,.tar " " startofline: no: do not jump to first character with page " commands, ie keep the cursor in the current column. set nostartofline " " tabstop set tabstop=8 " " " Set the colors for vim on "xterm" if &term=="xterm" set t_Co=8 " "terminal has eight colors" set t_Sb=[4%dm " escape sequence for background set t_Sf=[3%dm " escape sequence for foreground " source ~/.P/vim/syntax/colors.vim " http://www.math.fu-berlin.de/~guckes/vim/syntax/colors.vim " [todo] Add this to the Vim FAQ endif " " textmode: no - I am using Vim on UNIX! set notextmode " " textwidth set textwidth=79 " " title: set notitle " " ttyfast: are we using a fast terminal? " seting depends on where I use Vim... set nottyfast " " ttybuiltin: set nottybuiltin " " ttyscroll: turn off scrolling -> faster! set ttyscroll=0 " " ttytype: " set ttytype=rxvt " " viminfo: What info to store from an editing session " in the viminfo file; can be used at next session. set viminfo=%,'50,\"100,:100,n~/.viminfo " " visualbell: set visualbell " " t_vb: terminal's visual bell - turned off to make Vim quiet! " Please use this as to not annoy cow-orkers in the same room. " Thankyou! :-) set t_vb= " " whichwrap: set whichwrap=<,> " " wildchar the char used for "expansion" on the command line " default value is "" but I prefer the tab key: set wildchar= " " wrapmargin: set wrapmargin=1 " " writebackup: set nowritebackup " " =================================================================== " ABbreviations " =================================================================== " 980701: Moved the abbreviations *before* the mappings as " some of the abbreviations get used with some mappings. " " Abbreviations for some important numbers: iab Npi 3.1415926535897932384626433832795028841972 iab Ne 2.7182818284590452353602874713526624977573 " " Abbreviations for some classic long words: " " Donau... is the German word for the (read in reverse) " "additional paragraph of the law regulating the pension of " widows to captains of the ship company on (the river) Danube" " (I am not making this up! ;-) iab YDD Donaudampfschiffahrtgesellschaftskapitaenwitwenrentengesetzzusatzparagraph " " YLL : The name of a town in Wales. I am not making this up! iab YLL LLanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch " http://www.llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch.co.uk " http://194.159.85.168/ - I am not making this up! :-) " " YTauma: The name of a hill in New Zealand. iab YTauma Taumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwenuakitanatahu " " Yalpha : The lower letter alphabet. iab Yalpha abcdefghijklmnopqrstuvwxyz " " YALPHA : The upper letter alphabet. iab YALPHA ABCDEFGHIJKLMNOPQRSTUVWXYZ " " Ydigit : The ten digits. iab Ydigit 1234567890 " " Yruler : A ruler. iab Yruler 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 " " Yupsidedown : This describes people from "down under" " (Hi, Dean!). iab Yupsidedown umop-ap!sdn " " Ysuper: A nice long word from the musical "Mary Poppins". iab Ysuper supercalifragilisticexpialidocious " Yanti: The longest proper word in the English language?! iab Yanti antidisestablishmentarianism " " Ypass : Standard answer to Usenet posts " with the "Subject: HELP" (hehe) iab Ypass "You are in a maze of twisty little passages, all alike." " " Ysesqui : "Sesquipedalophobia" means "fear of big words." ;-) iab Ysesqui sesquipedalophobia " " classic pangrams (which include every letter of the alphabet): " German: " sylvia wagt quick den jux bei pforzheim " bayerische jagdwitze von maxl querkopf " zwei boxkaempfer jagen eva quer durch sylt " kaufen sie jede woche vier gute bequeme pelze " falsches üben von xylophonmusik quält jeden größeren zwerg. " Bei jedem klugen Wort von Sokrates rief Xanthippe zynisch: Quatsch! " English: " the quick brown fox jumps over the lazy dog " French: " voyez le brick geant que j'examine pres du wharf. " " And a sentence to break some quoing levels: " "This man's house (which 's yellow) burned down." " " And now for something completely different: " I couldn't bear to bear bears over the border. " " Inserting an ellipsis to indicate deleted text iab Yell [...] vmap ,ell c[...] " " Correcting those typos. [I almost never get these right. :-(] " See also: http://www.igd.fhg.de/~zach/programs/acl/ iab alos also iab aslo also iab charcter character iab charcters characters iab exmaple example iab shoudl should iab seperate separate iab teh the " Some frequent typos in German: iab nciht nicht iab doer oder iab Dreckfuhler Druckfehler " Sorry, Laurent! iab Laurant Laurent " " See http://www.math.fu-berlin.de/~guckes/sig/: iab YDDS dash-dash-space " " For reports and texts on my studies: iab YKT Komplexitaetstheorie iab YRA Rechnerarchitektur iab YPM Pattern Matching " see http://elib.zib.de/ICM98 : iab YICM International Congress of Mathematicians " " Some sentences that I really use often in emails about Vim: iab YAW You are welcome! :-) iab YEV Enjoy Vim! " " Often used filenames - only needed these on the command line: " see also: http://www.math.fu-berlin.de/~guckes/setup/ " cab ELMALIAS ~/.elm/aliases.text cab Erc ~/.elm/elmrc cab Mrc ~/.muttrc cab Src ~/.slrnrc cab Zrc ~/.zsh/.zshrc cab SIGs ~/.P/sig/SIGS " " A list of filenames that are needed to shorten some autocommands: " cab MAILNEWSFILES .article,.followup,.letter,mutt*[0-9],/postpone/* " cab MAILNEWSFILES *.article,*.followup,*.letter,*mutt* let MAILNEWSFILES = "*.article,*.followup,*.letter,mutt*" " " see also: http://www.math.fu-berlin.de/~guckes/sig/SIGS " " Email Adresses: " I usually use these when adding addresses to the header " of emails (mutt) and posts (slrn). " " Author of the Good NetKeeping Seal of Approval: ab Agnksa js@xs4all.nl (Jeroen Scheerder) " " Author of Mutt: ab Amutt me@cs.hmc.edu (Michael Elkins) " " Author of Slrn: ab Aslrn davis@space.mit.edu (John E. Davis) " " Author of Vim: " ab Avim mool@oce.nl (Bram Moolenaar) ab Avim bram@vim.org (Bram Moolenaar) " " Former Maintainer of the Vim FAQ: ab Avimfaq laurent@Grafnetix.COM (Laurent Duperval) " " Mailing Lists (MLs) " " The Vim mailing lists: See http://www.vim.org/mail.html for more info! ab MLvim vim@vim.org (VIM Help List) ab MLvimdev vim-dev@vim.org (VIM Development List) ab MLvimmac guckes-vimmac@math.fu-berlin.de (VIM on MacOS Development List) " " More mailing lists: ab MLgnksa gnksa-workers@babayaga.math.fu-berlin.de (GNKSA Workers List) ab MLmuttdev mutt-dev@mutt.org (Mutt Developer List) ab MLmuttuser mutt-users@mutt.org (Mutt Users List) ab MLzsh zsh-users@math.gatech.edu (ZShell Users List) " " " News: newsgroup names " " Newsgroup about "warloding" of signatures - see " also http://www.math.fu-berlin.de/~guckes/afw/ iab Nafw alt.fan.warlord iab Nahbou alt.humor.best-of-usenet iab Nzedat bln.announce.fub.zedat.d iab Ncsd bln.announce.fub.cs.d iab Nce comp.editors " Newsgroup about "lynx": iab Nhtml comp.infosystems.www.authoring.html " Newsgroup about "elm": Elm is dead - long live Mutt! iab Nelm comp.mail.elm " Newsgroup about "pine": When will they release pine-4? " iab Ncmp comp.mail.pine iab Npine comp.mail.pine " iab Ncsmd comp.sys.mac.digest " Newsgroup about "mobil phone systems": iab Ndcm de.comm.mobil iab Nmobil de.comm.mobil " Newsgroup about "web browsers": iab Nlynx comp.infosystems.www.browsers.misc iab Nnetscape comp.infosystems.www.browsers.misc " Newsgroup about "mutt" [since 980401]: The coolest mail user agent iab Nmutt comp.mail.mutt " Newsgroup about "nn": Once was the best newsreader. Still good. iab Nnn news.software.nn " Newsgroup for "newbies". " All you ever wanted to know - but were afraid to ask. ;-) iab Newbie news.newusers.questions " Newsgroup about "newsreader *agents*" (netscape and slrn): iab Nnsr news.software.readers " " Usenet header lines (used when composing a post): " iab UFT Followup-To: iab UMCT Mail-Copies-To: MYADDR iab UNG Newsgroups: iab URT Reply-To: MYADDR iab UFUB Organization: Freie Universitaet Berlin " " Current version numbers of my favourite programs: " http://www.math.fu-berlin.de/~guckes/sig/SIGS " And some abbreviations to type them in mail&news: " iab Velm ELM2.4PL25 [951204] iab VElm ELM2.5b2 [980213] iab Vlynx lynx-2.8.0 [980310 iab Vmutt mutt-0.92.8 [980514] iab Vslrn slrn-0.9.5.2 [980503] iab Vvim vim-5.1 [980407] iab Vvimdev vim-5.2c [980518] " " For current version numbers take a look at my signature file: " http://www.math.fu-berlin.de/~guckes/sig/SIGS " " My snail mail address, phone numbers, and email->pager gateway: " Postcards and FAXes are welcome (especially with cartoons :-). " If you want, you can send a message to my pager by email, too. iab Ypager To: ums@teco.eduSubject: PAGE:01777777796 iab Yphone TEL/FAX (+49 30) 8838884Cellphone (+49 177) 7777796 iab Ysnail Sven GuckesPariser Str. 52D-10719 Berlin " " My addresses (Email and WWW) " makes it easy to type them without typos ;-) ab Amaili guckes@inf.fu-berlin.de ab Amailm guckes@math.fu-berlin.de ab Amailv guckes@vim.org ab Amailz guckes@zedat.fu-berlin.de ab MYADDR guckes@math.fu-berlin.de ab MYNAME Sven Guckes " " Setting the reply address when replying as the guy from SKB: ab ASKB Sprachboerse " See also: http://www.math.fu-berlin.de/~guckes/skb/ " " My Home Pages at the departments at the FUB " ab WWWm http://www.math.fu-berlin.de/~guckes/ ab WWWi http://www.inf.fu-berlin.de/~guckes/ ab WWWz http://userpage.zedat.fu-berlin.de/~guckes/ " " WWW Pages base URLs " ab HPA http://www.math.fu-berlin.de/~guckes/afw/ ab HPa http://www.math.fu-berlin.de/~guckes/ascii/ ab HPc http://www.math.fu-berlin.de/~guckes/calvin/ ab HPD http://www.math.fu-berlin.de/~guckes/dos/ ab HPe http://www.math.fu-berlin.de/~guckes/eplus/ab.faq.html ab HPE http://www.math.fu-berlin.de/~guckes/elm/ ab HPI http://www.math.fu-berlin.de/~guckes/irc/ ab HPi http://www.math.fu-berlin.de/~guckes/ispell/ ab HPL http://www.math.fu-berlin.de/~guckes/lynx/ ab HPl http://www.math.fu-berlin.de/~guckes/less/ ab HPm http://www.math.fu-berlin.de/~guckes/mail/ ab HPM http://www.math.fu-berlin.de/~guckes/mutt/ ab HPN http://www.math.fu-berlin.de/~guckes/nn/ ab HPP http://www.math.fu-berlin.de/~guckes/pine/ ab HPp http://www.math.fu-berlin.de/~guckes/procmail/ ab HPr http://babayaga.math.fu-berlin.de/~rxvt/ ab HPR http://www.math.fu-berlin.de/~guckes/rfc/ ab HPs http://www.math.fu-berlin.de/~guckes/screen/ ab HPS http://www.math.fu-berlin.de/~guckes/slrn/ ab HPv http://www.math.fu-berlin.de/~guckes/vi/ " HPOV - the "original" URL of the Vim Home Page! ab HPOV http://www.math.fu-berlin.de/~guckes/vim/ ab HPV http://www.vim.org/ ab HPX http://www.math.fu-berlin.de/~guckes/xmas/ ab HPZ http://www.math.fu-berlin.de/~guckes/zsh/ " " Other important WWW addresses " ab URLutefuchs http://www.math.fu-berlin.de/~utefuchs/ ab URLaltavista http://altavista.digital.com/ ab URLftpsearch http://ftpsearch.ntnu.no/ftpsearch/ ab URLvimfaq http://www.grafnetix.com/~laurent/vim/faq.html ab URLbambi http://www.math.fu-berlin.de/~leitner/CnH/bambi.html ab URLsecret http://www.math.fu-berlin.de/~leitner/CnH/secret.html ab URLwhome http://www.math.fu-berlin.de/~leitner/CnH/who.me.html ab URLstopspam http://www.math.fu-berlin.de/~guckes/pics/stop.this.spam.jpg ab FTPFUB ftp://ftp.fu-berlin.de/ ab FTPVIM ftp://ftp.fu-berlin.de/pub/misc/editors/vim/ " " =================================================================== " Abbreviations - Header Lines for Email and News " =================================================================== " Define regexpr for headers to use with mappings " as it makes reading the mappings much easier: " cab HADDR From\\|Cc\\|To cab HEMAIL ^\(From\\|Cc\\|To\\|Date\\|Subject\\|Message-ID\\|Message-Id\\|X-\) cab HNEWS ^\(From\\|Cc\\|To\\|Date\\|Subject\\|Message-ID\\|X-\\|Newsgroups\) " " =================================================================== " Abbreviations - General Editing - Inserting Dates and Times " =================================================================== " " First, some command to add date stamps (with and without time). " I use these manually after a substantial change to a webpage. " [These abbreviations are used with the mapping for ",L".] " iab Ydate =strftime("%y%m%d") " Example: 971027 " iab Ytime =strftime("%H:%M") " Example: 14:28 " iab YDT =strftime("%y%m%d %T") " Example: 971027 12:00:00 " iab YDATE =strftime("%a %b %d %T %Z %Y") " Example: Tue Dec 16 12:07:00 CET 1997 " " On Windows the functions "strftime" seems to have a different " format. Therefore the following may be necessary: [980730] " if !has("unix") " iab YDATE =strftime("%c %a") " else " iab YDATE =strftime("%D %T %a") " endif " " =================================================================== " MAPpings " =================================================================== " Caveat: Mapping must be "prefix free", ie no mapping must be the " prefix of any other mapping. Example: "map ,abc foo" and " "map ,abcd bar" will give you the error message "Ambigous mapping". " " The backslash ('\') is the only(?) unmapped key, so this is the best " key to start mappings with as this does not take away a command key. " However, the backslash is never in the same position with keyboards. " Eg on German keyboards it is AltGr-sz - don't ask. " Anyway, I have decided to start mappings with the comma as this " character is always on the same position on almost all keyboards " and I hardly have a need for that command. " " The following maps get rid of some basic problems: " " With Vim-4 the format command was just 'Q' and " I am too used to it. So I need this back! nnoremap Q gq vnoremap Q gq " " 980527 I often reformat a paragraph to fit some textwidth - " and I use the following mapping to adjust it to the " current position of the cursor: map #tw :set textwidth==col(".") " " 981210 Whenever I paste some text into VIM I have to " toggle from "nopaste" to "paste" and back again: " map :set paste!:set paste? map [14~ :set paste!:set paste? " " "tal" is the "trailer alignment" filter program " Hopefully it will ship with Vim one day. " vmap #t !tal " vmap #t !tal -p 0 " " Disable the command 'K' (keyword lookup) by mapping it " to an "empty command". (thanks, Lawrence! :-): " map K : map K : " " Disable the suspend for ^Z. " I use Vim under "screen" where a suspend would lose the " connection to the " terminal - which is what I want to avoid. map :shell " " Make CTRL-^ rebound to the *column* in the previous file noremap `" " " Make "gf" rebound to last cursor position (line *and* column) noremap gf gf`" " " When I let Vim write the current buffer I frequently mistype the " command ":w" as ":W" - so I have to remap it to correct this typo: nmap :W :w " " Are you used to the Unix commands "alias" and "which"? " I sometimes use these to look up my abbreviations and mappings. " So I need them available on the command line: map :alias map map :which map " " The command {number}CTRL-G show the current nuffer number, too. " This is yet another feature that vi does not have. " As I always want to see the buffer number I map it to CTRL-G. " Pleae note that here we need to prevent a loop in the mapping by " using the comamnd "noremap"! noremap 2 " " 980311 Sourcing syntax files " My personal syntax files are in ~/.P/vim/syntax/ " and I need a quick way to edit and source them. map ,SO :so ~/.P/vim/syntax/ " " 980706 Sourcing syntax files from the distribution " A nice and fast way to both source syntax files " and to take a look at "what's there": map ,V :so $VIM/syntax/ " " =================================================================== " Customizing the command line " =================================================================== " Valid names for keys are: " " " Many shells allow editing in "Emacs Style". " Although I love Vi, I am quite used to this kind of editing now. " So here it is - command line editing commands in emacs style: cnoremap cnoremap cnoremap " cnoremap cnoremap b cnoremap f cnoremap " " Additional codes for that "English" keyboard at the Xterminal cnoremap [D cnoremap [C " " Some editing is helpful in insert mode, too: inoremap inoremap " " Make the up and down movements move by "display/screen lines": " map j gj " map gj " map k gk " map gk " " =================================================================== " VIM - Editing and updating the vimrc: " As I often make changes to this file I use these commands " to start editing it and also update it: if has("unix") let vimrc='~/.vimrc' else " ie: if has("dos16") || has("dos32") || has("win32") let vimrc='$VIM\_vimrc' endif nn ,u :source =vimrc nn ,v :edit =vimrc " ,v = vimrc editing (edit this file) " map ,v :e ~/.vimrc " ,u = "update" by reading this file " map ,u :source ~/.vimrc " =================================================================== " " General Editing " " Define "del" char to be the same backspace (saves a LOT of trouble!) " As the angle notation cannot be use with the LeftHandSide " with mappings you must type this in *literally*! map 127 cmap 127 " the same for Linux Debian which uses imap [3~ imap  " " ;rcm = remove "control-m"s - for those mails sent from DOS: cmap ;rcm %s///g " " Make whitespace visible: " Sws = show whitespace nmap ,Sws :%s/ /_/g vmap ,Sws :%s/ /_/g " " Sometimes you just want to *see* that trailing whitespace: " Stws = show trailing whitespace nmap ,Stws :%s/ *$/_/g vmap ,Stws :%s/ *$/_/g " " General Editing - Turning umlauts into ascii (for German keyboards) " " imap ä ae " imap ö oe " imap ü ue " imap ß ss " " Ä -> Ä :%s/\Ä/Ä/gc -> D " Ö -> Ö :%s/\Ö/Ö/gc -> V " Ü -> Ü :%s/\Ü/Ü/gc -> \ " ä -> ä :%s/\ä/ä/gc -> d " ö -> ö :%s/\ö/ö/gc -> v " ü -> ü :%s/\ü/ü/gc -> | " " =================================================================== " Inserting Dates and Times / Updating Date+Time Stamps " =================================================================== " ,L = "Last updated" - replace old time stamp with a new one " preserving whitespace and using internal "strftime" command: " requires the abbreviation "YDATE" map ,L 1G/Last update:\s*/e+1CYDATE map ,,L 1G/Last change:\s*/e+1CYDATE " Example: " before: "Last update: Thu Apr 6 12:07:00 CET 1967" " after: "Last update: Tue Dec 16 12:07:00 CET 1997" " " ,L = "Last updated" - replace old time stamp with a new one " using external "date" command (not good for all systems): " map ,L 1G/Last update: */e+1D:r!datekJ " " =================================================================== " General Editing - link to program "screen" " =================================================================== " " ,Et = edit temporary file of "screen" program map ,Et :e /tmp/screen-exchange " as a user of Unix systems you *must* have this program! " see also: http://www.math.fu-berlin.de/~guckes/screen/ " " Email/News - Editing replies/followups " " Part 1 - prepare for editing " " Part 2 - getting rid of empty (quoted) lines and space runs. " " ,cel = "clear empty lines" " - delete the *contents* of all lines which contain only whitespace. " note: this does not delete lines! " map ,cel :g/^[ ]*$/d map ,cel :%s/^\s\+$// " ,del = "delete 'empty' lines" " - delete all lines which contain only whitespace " note: this does *not* delete empty lines! map ,del :g/^\s\+$/d " " ,cqel = "clear quoted empty lines" " Clears (makes empty) all lines which start with '>' " and any amount of following spaces. " nmap ,cqel :%s/^[> ]*$// " vmap ,cqel :s/^[> ]*$// " nmap ,cqel :%s/^[> ]\+$// " vmap ,cqel :s/^[> ]\+$// nmap ,cqel :%s/^[>]\+$// vmap ,cqel :s/^[> ]\+$// " NOTE: If the meta sequence "\s" " The following do not work as "\s" is not a character " and thus cannot be part of a "character set". " map ,cqel :g/^[>\s]\+$/d " " Some people have strange habits within their writing. " But if you cannot educate them - rewrite their text! ;-) " " Jason "triple-dots" King elephant@onaustralia.com.au " does uses ".." or "..." rather than the usual punctuation " (comma, semicolon, colon, full stop). So... " " Turning dot runs with following spaces into an end-of-sentence, " ie dot-space-space: vmap ,dot :s/\.\+ \+/. /g " " Gary Kline (kline@tera.tera.com) indents his " own text in replies with TAB or spaces. " Here's how to get rid of these indentation: vmap ,gary :s/^>[ ]\+\([^>]\)/> \1/ " " ,ksr = "kill space runs" " substitutes runs of two or more space to a single space: " nmap ,ksr :%s/ */ /g " vmap ,ksr :s/ */ /g nmap ,ksr :%s/ \+/ /g vmap ,ksr :s/ \+/ /g " Why can't the removal of space runs be " an option of "text formatting"? *hrmpf* " " ,Sel = "squeeze empty lines" " Convert blocks of empty lines (not even whitespace included) " into *one* empty line (within current visual): map ,Sel :g/^$/,/./-j " " ,Sbl = "squeeze blank lines" " Convert all blocks of blank lines (containing whitespace only) " into *one* empty line (within current visual): " map ,Sbl :g/^\s*$/,/[^ ]/-j " map ,Sbl :g/^\s*$/,/[^ \t]/-j map ,Sbl :g/^\s*$/,/\S/-j " " =================================================================== " Editing of email replies and Usenet followups - using autocommands " =================================================================== " " Remove ALL auto-commands. This avoids having the " autocommands twice when the vimrc file is sourced again. " autocmd! " " Let Vim identify itself when editing emails with Mutt: " au! BufNewFile mutt* let @"="X-Editor: Vim-".version." http://www.vim.org\n"|exe 'norm 1G}""P' " " set the textwidth to 70 characters for replies (email&usenet) " au BufNewFile,BufRead .letter,mutt*,nn.*,snd.* set tw=78 " " Try to use the mapping ",D" when doing a followup. " autocmd BufNewFile ~/.followup ,D| " " Part 3 - Change Quoting Level " " ,dp = de-quote current inner paragraph " map ,dp {jma}kmb:'a,'bs/^> // map ,dp vip:s/^> // vmap ,dp :s/^> // " " ,qp = quote current paragraph " jump to first inner line, mark with 'a'; " jump to last inner line, mark with 'b'; " then do the quoting as a substitution " on the line range "'a,'b": " map ,qp {jma}kmb:'a,'bs/^/> / " vim-5 now has selection of "inner" and "all" " of current text object - mapping commented! " " ,qp = quote current paragraph (old version) " jump to first inner line, Visual, " jump to last inner line, " then do the quoting as a substitution: " map ,qp {jV}k:s/^/> / " " ,qp = quote current inner paragraph (works since vim-5.0q) " select inner paragraph " then do the quoting as a substitution: map ,qp vip:s/^/> / " " ,qp = quote current paragraph " just do the quoting as a substitution: vmap ,qp :s/^/> / " " Changing quote style to *the* true quote prefix string "> ": " " Fix Supercite aka PowerQuote (Hi, Andi! :-): " before ,kpq: > Sven> text " after ,kpq: > > text " ,kpq kill power quote vmap ,kpq :s/^> *[a-zA-Z]*>/> >/ " " Fix various other quote characters: " ,fq "fix quoting" vmap ,fq :s/^> \([-":}\|][ ]\)/> > / " " Part 4 - Weed Headers of quoted mail/post " " These mappings make use of the abbreviation that define a list of " Email headers (HEMAIL) and News headers (HNEWS): nmap ,we vip:v/HEMAIL/d vmap ,we :v/HEMAIL/d nmap ,wp vip:v/HNEWS/d vmap ,wp :v/HNEWS/d " " Old versions for vim-4.6: " ,we = "weed email header" " nmap ,we !ipegrep "^(Date:\|From \|From:\|Subject:\|To:\|$)" " vmap ,we !egrep "^(Date:\|From \|From:\|Subject:\|To:\|$)" " ,wp = "weed post header" " nmap ,wp !ipegrep "^(Date:\|From:\|Subject:\|Newsgroups:\|Followup-To:\|Keywords:\|References:\|Message-ID\|$)" " vmap ,wp !egrep "^(Date:\|From:\|Subject:\|Newsgroups:\|Followup-To:\|Keywords:\|References:\|Message-ID\|$)" " " ,ri = "Read in" basic lines from the email header " Useful when replying to an email: " nmap ,ri :r!readmsg\|egrep "^From:\|^Subject:\|^Date:\|^To: \|^Cc:" " NOTE: "readmsg" ships with the mailer ELM. " " " Part 5 - Reformatting Text " " NOTE: The following mapping require formatoptions to include 'r' " and "comments" to include "n:>" (ie "nested" comments with '>'). " " Formatting the current paragraph according to " the current 'textwidth' with ^J (control-j): imap gqap map gqap " " ,b = break line in commented text (to be used on a space) " nmap ,b dwi> nmap ,b r " ,j = join line in commented text " (can be used anywhere on the line) " nmap ,j Jxx nmap ,j Vjgq " " ,B = break line at current position *and* join the next line " nmap ,B i>Jxx nmap ,B rVjgq " " ,,, break current line at current column, " inserting ellipsis and "filling space": " nmap ,,, ,,1,,2 " nmap ,,1 a...X...FXrlmaky$o" " nmap ,,2 :s/./ /g3X0"yy$dd`a"yP " " " =================================================================== " Edit your reply! (Or else!) " =================================================================== " " Part 6 - Inserting Special or Standard Text " Part 6a - The header " Add adresses for To: and Cc: lines " " ,ca = check alias (reads in expansion of alias name) " map ,ca :r!elmalias -f "\%v (\%n)" " ,Ca = check alias (reads in expansion of alias name) " map ,Ca :r!elmalias -f "\%n <\%v>" " " ,cc = "copy notice" " Insert a Cc line so that person will receive a "courtesy copy"; " this tells the addressee that text is a copy of a public article. " This assumes that there is exactly one empty line after the first " paragraph and the first line of the second paragraph contains the " return address with a trailing colon (which is later removed). map ,cc 1G}jyykPICc: $x " map ,cc ma1G}jy/ writes'aoCc: $p " " ,mlu = make letter urgent (by giving the "Priority: urgent") map ,mlu 1G}OPriority: urgent " " Fixing the From: line " " ,cS = change Sven's address. map ,cS 1G/^From: Sven Guckes/e+2C " Used when replying as the "guy from vim". " " Fixing the Subject line " " Pet peeve: Unmeaningful Subject lines. Change them! " ,cs = change Subject: line map ,cs 1G/^Subject: yypIX-Old--W " This command keeps the old Subject line in "X-Old-Subject:" - " so the recipient can still search for it and " you keep a copy for editing. " " " ,re : Condense multiple "Re:_" to just one "Re:": map ,re 1G/^Sub:s/\(Re: \)\+/Re: / " " ,Re : Change "Re: Re[n]" to "Re[n+1]" in Subject lines: map ,Re 1G/^Subject: :s/Re: Re\[\([0-9]\+\)\]/Re[\1]/ " " Put parentheses around "visual text" " Used when commenting out an old subject. " Example: " Subject: help " Subject: vim - using autoindent (Re: help) " " ,) and ,( : vmap ,( v``>a) vmap ,) v``>a) " " Part 6 - Inserting Special or Standard Text " Part 6a - Start of text - saying "hello". " " ,hi = "Hi!" (indicates first reply) map ,hi 1G}oHi! " " ,ha = "helloagain" (indicates reply to reply) map ,ha 1G}oHello, again! " " ,H = "Hallo, Du!" (German equivalent of "hi!" for replies) map ,H G/Quoting /e+1ye1G}oHallo, !Po " " " Part 6 - Inserting Special or Standard Text " Part 6b - End of text - dealing with "signatures". " " remove signatures " " ,kqs = kill quoted sig (to remove those damn sigs for replies) " goto end-of-buffer, search-backwards for a quoted sigdashes " line, ie "^> -- $", and delete unto end-of-paragraph: map ,kqs G?^> -- $d} " map ,kqs G?^> *-- $dG " ,kqs = kill quoted sig unto start of own signature: " map ,kqs G?^> *-- $d/^-- $/ " " ,aq = "add quote" " Reads in a quote from my favourite quotations: nmap ,aq :r!agrep -d "^-- $" ~/.P/quotes/collectionb " see http://www.math.fu-berlin.de/~guckes/quotes/collection " " ,s = "sign" - " Read in signature file (requires manual completion): nmap ,s :r!agrep -d "^-- $" ~/.P/sig/SIGS " " available as http://www.math.fu-berlin.de/~guckes/sig/SIGS " " ,S = signature addition of frequently used signatures nmap ,SE :r!agrep -d "^-- $" comp.mail.elm ~/.P/sig/SIGS nmap ,SM :r!agrep -d "^-- $" WOOF ~/.P/sig/SIGS nmap ,SV :r!agrep -d "^-- $" IMproved ~/.P/sig/SIGS " " ,at = "add text" - " read in text file (requires manual completion): nmap ,at :r ~/.P/txt/ " " MUTT: Auto-kill signatures for replies " map ,kqs G?^> *-- $dG " autocmd BufNewFile,BufRead .followup,.letter,mutt*,nn.*,snd.* :normal ,kqs " " At the end of editing your reply you should check your spelling " with the spelling checker "ispell". " These mappings are from Lawrence Clapp lclapp@iname.com: " spellcheck the document -- skip quoted text " nmap :w ! grep -v '^>' \| spell " vmap :w ! grep -v '^>' \| spell " At home under Linux it looks something more like this: " nmap :w ! grep -v '^>' \| ispell -??? " " Tell the recipient that I was replying to an old email of his: ab SvenR Sven [finally takeing the time to reply to old emails] " " Toggles: [todo] " " toggle autoindent " toggle hlsearch " cycle textwidth between values 60, 70, 75, 80 " " =================================================================== " HTML - HTML - HTML - HTML - HTML - HTML - HTML - HTML " =================================================================== " This has become quite big - so I moved it out to another file: " http://www.math.fu-berlin.de/~guckes/vim/source/html.vim [980227] " source ~guckes/.P/vim/source/html.vim " " =================================================================== " LaTeX - LaTeX - LaTeX - LaTeX - LaTeX - LaTeX - LaTeX " =================================================================== " This has become quite big - so I moved it out to another file: " http://www.math.fu-berlin.de/~guckes/vim/source/latex.vim " source ~guckes/.P/vim/source/latex.vim " " =================================================================== " PGP - encryption and decryption " =================================================================== " " encrypt map ;e :%!/bin/sh -c 'pgp -feast 2>/dev/tty' " decrypt map ;d :/^-----BEG/,/^-----END/!/bin/sh -c 'pgp -f 2>/dev/tty' " sign map ;s :,$! /bin/sh -c 'pgp -fast +clear 2>/dev/tty' map ;v :,/^-----END/w !pgp -m " " PGP - original mappings " " encrypt and sign (useful for mailing to someone else) "csh: map #1 :,$! /bin/sh -c 'pgp -feast 2>/dev/tty^V|^V|sleep 4' " sh: map #1 :,$! pgp -feast 2>/dev/tty^V|^V|sleep 4 " " sign (useful for mailing to someone else) "csh: map #2 :,$! /bin/sh -c 'pgp -fast +clear 2>/dev/tty' " sh: map #2 :,$! pgp -fast +clear 2>/dev/tty " " decrypt "csh: map #3 :/^-----BEG/,/^-----END/!\ " /bin/sh -c 'pgp -f 2>/dev/tty^V|^V|sleep 4' " sh: map #3 :/^-----BEG/,/^-----END/!\ " pgp -f 2>/dev/tty^V|^V|sleep 4 " " view (pages output, like more) "csh: map #4 :,/^-----END/w !pgp -m " sh: map #4 :,/^-----END/w !pgp -m " " encrypt alone (useful for encrypting for oneself) "csh: map #5 :,$! /bin/sh -c 'pgp -feat 2>/dev/tty^V|^V|sleep 4' " sh: map #5 :,$! pgp -feat 2>/dev/tty^V|^V|sleep 4 " " Elijah http://www.mathlab.sunysb.edu/~elijah/pgppub.html says : " The significant feature is that stderr is redirected independently " of stdout, and it is redirected to /dev/tty which is a synonym for " the current terminal on Unix. I don't know why the ||sleep 4 " stuff is there, but it is harmless so I left it. Since csh is such " junk, special rules are used if you are using it (tcsh, too). " ksh and bash should use the sh form. zsh, et al: consult your " manual. The # format is used to map function keys. If your " terminal does not support the requested function key, use a " literal #. Not all of the clones correctly support this. " " =================================================================== " Useful stuff. At least these are nice examples. :-) " =================================================================== " " ,t = transpose two characters: from aXb -> bXa " map ,t XplxhhPl " This macros shortened by one character by " Preben Guldberg c928400@student.dtu.dk " map ,t XpxphXp " map ,t xphXpxp " " make space move the cursor to the right - much better than a *beep* " nmap \ l " " ,E = execute line " map ,E 0/\$w"yy$:yr! " This command excutes a shell command from the current line and " reads in its output into the buffer. It assumes that the command " starts with the fist word after the first '$' (the shell prompt " of /bin/sh). Try ",E" on that line, ie place the cursor on it " and then press ",E": " $ ls -la " Note: The command line commands have been remapped to tcsh style!! " " " ,dr = decode/encode rot13 text vmap ,dr :!tr A-Za-z N-ZA-Mn-za-m " Use this with an external "rot13" script: " " ,13 - rot13 the visual text " vmap ,13 :!rot13 " " Give the URL under the cursor to Netscape " map ,net yA:!netscape -remote "openurl "" " " " =================================================================== " Mapping of special keys - arrow keys and function keys. " =================================================================== " Buffer commands (split,move,delete) - " this makes a little more easy to deal with buffers. " (works for Linux PCs in room 030) map :split map :bp map :bn map :bd " " Buffer commands (split,move,delete) - " for Mac keyboard (Performa 5200, US keyboard) " map [19~ :split map [20~ :bp map [23~ :bn map [31~ :bd " " Obvious mappings " " map " map " " Emacs style editing in insert mode " This is something I tried for a minute " and forgot about the minute after. ;-) " " imap 0i " imap hi " imap xi " imap A " imap lli " imap jli " imap kli " imap b bi " imap f lWi " " Normal mode - tcsh style movements [960425] " " nmap 0 " nmap h " nmap x " nmap $ " nmap l " nmap b b " nmap f w " " DOS keyboard mapping for cursor keys " " map [A " map [B " map [C " map [D " imap [A " imap [B " imap [C " imap [D " " DOS keyboard " "insert" " map [1~ i " map [1~ " "home" " map [2~ ^ " map [2~ 0 " map [2~ " "pgup" " map [3~ " map [3~ " "delete" " map [4~ x " map [4~ " "end" " map [5~ $ " map [5~ " "pgdn" " map [6~ " map [6~ " " Keyboard mapping for cursor keys " [works for SUNs in Solarium (room 030) - 970815] " map OA map OB map OC map OD imap OA imap OB imap OC imap OD " " Keyboard mapping for cursor keys " [works for XTerminals - 970818] map [A map [B map [C map [D imap [A imap [B imap [C imap [D " " =================================================================== " AutoCommands " =================================================================== " " Autocommands are the key to "syntax coloring". " There's one command in your vimrc that should " load/source the file $VIM/syntax/syntax.vim " which contains the definition for colors and " the autocommands that load other syntax files " when necessary, ie when the filename matches " a given pattern, eg "*.c" or *".html". " " just load the main syntax file when Vim was compiled with "+syntax" if has("syntax") " define my own syntax file (to be sourced t the end of syntax.vim): " let mysyntaxfile="~guckes/.P/vim/syntax/syntax.vim" " URL: http://www.math.fu-berlin.de/~guckes/vim/syntax/syntax.vim " The main/standard syntax file: so $VIMRUNTIME/syntax/syntax.vim " " Use my own syntax file on "mail/news messages": let aucommand = "au BufNewFile,BufRead ".MAILNEWSFILES " exe aucommand." source ~guckes/.P/vim/syntax/sven.vim" " hi! Comment term=bold ctermfg=cyan guifg=Blue endif " " " EXAMPLE: Restricting mappings to some files only: " An autocommand does the macthign on the filenames - " but abbreviations are not expanded within autocommands. " Workaround: Use "exe" for expansion: " let aucommand = "au BufNewFile,BufRead ".MAILNEWSFILES " exe aucommand." :map ,hi 1G}oHi!" " exe aucommand." :map ,ha 1G}oHello, again!" " exe aucommand." :map ,H G/Quoting /e+1ye1G}oHallo, !Po" " exe aucommand." :map ,re 1G}oRe!" " " Automatically place the cursor onto the first line of the mail body: " autocmd BufNewFile,BufRead MAILNEWSFILES :normal 1G}j " " Toggle syntax coloring on/off with "__": " nn __ mg:if has("syntax_items")syn clearelsesyn onen`g " Note: It works - but the screen flashes are quite annoying. :-/ " " " =================================================================== " EXAMPLES " =================================================================== " " Visualizing trailing whitespace: " :set hls " /\s\+$ " " Toggling a numerical variable between two values. " Example: Switch the textwidth (tw) between values "70" and "80": " map \1 :let &tw = 150 - &tw " " Capitalizing the previously typed word, " returning to the previous position: " imap CAP mzB~`za " " Uppercasing the previously typed word, " returning to the previous position: " imap CAP mzvBU`za " imap CAP mzBvaWU`za " " =================================================================== " TEMPORARY STUFF - TESTING THINGS " =================================================================== " " View a html document (or part of it) with lynx. You need " a system that supports the /def/fd/* file descriptors :-( "nmap ,ly :w !lynx -force_html /dev/fd/0 "vmap ,ly :w !lynx -force_html /dev/fd/0 " " Fri Jun 19 19:19:19 CEST 1998 " Hi, Vikas! vikasa@att.com " The key produces the code "OD" and Vikas wants to make " Vim jump back one word in normal mode, ie using the command 'b': " nmap OD b " Works for me! :-) " " Some simple example of the "expand modifiers": " insert the current filename *with* path: iab YPATHFILE =expand("%:p") " insert the current filename *without* path: iab YFILE =expand("%:t:r") " insert the path of current file: iab YPATH =expand("%:h") " " #b = "browse" - send selected URL to Netscape vmap #b y:!netscape -remote "openurl "" " " Toggle highlight search and report the current value: " map #1 :set hls! " map #2 :echo "HLSearch: " . strpart("OffOn",3*&hlsearch,3) " map ## #1#2 " " Sorting current line containing a list of numbers " map ## :s/ //gvip!sort -n " " Replying to the mutt mailing list: " Remove header lines Cc: and Bcc: and insert [mutt] at the beginning " map ,MM 1G/^Cc:2dd}o[mutt] " " map ,U %s###gc " map ,F {jma}kmb:'a,'b!sed -e "s/^>//"|\ " sed -f ~/.P/elm/scripts/weedout.sed " map ,mb ebiEadw " " stripping netscape bookmarks and making them list items " vmap ,ns :.,$s/^ *
<\(A.*"\) ADD.*">\(.*\)$/
  • <\1>\2/ " " Jump to the last space before the 80th column. " map ,\| 80\|F " " extracting variable names from mutt's init.c " :%s/^.*"\([a-z0-9_]*\)".*$/\1/ " " \<> = change to <> notation by substituting ^M and ^[ " cab \<> s///gc:s///gc " " Changing the From_ line in pseudo mail folders to an appropriate " value - so you can read them with a mailer. " %s/^From /From guckes Thu Apr 6 12:07:00 1967/ " " =================================================================== " ASCII tables - you may need them some day. Save them to a file! " =================================================================== " " ASCII Table - | octal value - name/char | " " |000 nul|001 soh|002 stx|003 etx|004 eot|005 enq|006 ack|007 bel| " |010 bs |011 ht |012 nl |013 vt |014 np |015 cr |016 so |017 si | " |020 dle|021 dc1|022 dc2|023 dc3|024 dc4|025 nak|026 syn|027 etb| " |030 can|031 em |032 sub|033 esc|034 fs |035 gs |036 rs |037 us | " |040 sp |041 ! |042 " |043 # |044 $ |045 % |046 & |047 ' | " |050 ( |051 ) |052 * |053 + |054 , |055 - |056 . |057 / | " |060 0 |061 1 |062 2 |063 3 |064 4 |065 5 |066 6 |067 7 | " |070 8 |071 9 |072 : |073 ; |074 < |075 = |076 > |077 ? | " |100 @ |101 A |102 B |103 C |104 D |105 E |106 F |107 G | " |110 H |111 I |112 J |113 K |114 L |115 M |116 N |117 O | " |120 P |121 Q |122 R |123 S |124 T |125 U |126 V |127 W | " |130 X |131 Y |132 Z |133 [ |134 \ |135 ] |136 ^ |137 _ | " |140 ` |141 a |142 b |143 c |144 d |145 e |146 f |147 g | " |150 h |151 i |152 j |153 k |154 l |155 m |156 n |157 o | " |160 p |161 q |162 r |163 s |164 t |165 u |166 v |167 w | " |170 x |171 y |172 z |173 { |174 | |175 } |176 ~ |177 del| " " =================================================================== " ASCII Table - | decimal value - name/char | " " |000 nul|001 soh|002 stx|003 etx|004 eot|005 enq|006 ack|007 bel| " |008 bs |009 ht |010 nl |011 vt |012 np |013 cr |014 so |015 si | " |016 dle|017 dc1|018 dc2|019 dc3|020 dc4|021 nak|022 syn|023 etb| " |024 can|025 em |026 sub|027 esc|028 fs |029 gs |030 rs |031 us | " |032 sp |033 ! |034 " |035 # |036 $ |037 % |038 & |039 ' | " |040 ( |041 ) |042 * |043 + |044 , |045 - |046 . |047 / | " |048 0 |049 1 |050 2 |051 3 |052 4 |053 5 |054 6 |055 7 | " |056 8 |057 9 |058 : |059 ; |060 < |061 = |062 > |063 ? | " |064 @ |065 A |066 B |067 C |068 D |069 E |070 F |071 G | " |072 H |073 I |074 J |075 K |076 L |077 M |078 N |079 O | " |080 P |081 Q |082 R |083 S |084 T |085 U |086 V |087 W | " |088 X |089 Y |090 Z |091 [ |092 \ |093 ] |094 ^ |095 _ | " |096 ` |097 a |098 b |099 c |100 d |101 e |102 f |103 g | " |104 h |105 i |106 j |107 k |108 l |109 m |110 n |111 o | " |112 p |113 q |114 r |115 s |116 t |117 u |118 v |119 w | " |120 x |121 y |122 z |123 { |124 | |125 } |126 ~ |127 del| " " =================================================================== " ASCII Table - | hex value - name/char | " " | 00 nul| 01 soh| 02 stx| 03 etx| 04 eot| 05 enq| 06 ack| 07 bel| " | 08 bs | 09 ht | 0a nl | 0b vt | 0c np | 0d cr | 0e so | 0f si | " | 10 dle| 11 dc1| 12 dc2| 13 dc3| 14 dc4| 15 nak| 16 syn| 17 etb| " | 18 can| 19 em | 1a sub| 1b esc| 1c fs | 1d gs | 1e rs | 1f us | " | 20 sp | 21 ! | 22 " | 23 # | 24 $ | 25 % | 26 & | 27 ' | " | 28 ( | 29 ) | 2a * | 2b + | 2c , | 2d - | 2e . | 2f / | " | 30 0 | 31 1 | 32 2 | 33 3 | 34 4 | 35 5 | 36 6 | 37 7 | " | 38 8 | 39 9 | 3a : | 3b ; | 3c < | 3d = | 3e > | 3f ? | " | 40 @ | 41 A | 42 B | 43 C | 44 D | 45 E | 46 F | 47 G | " | 48 H | 49 I | 4a J | 4b K | 4c L | 4d M | 4e N | 4f O | " | 50 P | 51 Q | 52 R | 53 S | 54 T | 55 U | 56 V | 57 W | " | 58 X | 59 Y | 5a Z | 5b [ | 5c \ | 5d ] | 5e ^ | 5f _ | " | 60 ` | 61 a | 62 b | 63 c | 64 d | 65 e | 66 f | 67 g | " | 68 h | 69 i | 6a j | 6b k | 6c l | 6d m | 6e n | 6f o | " | 70 p | 71 q | 72 r | 73 s | 74 t | 75 u | 76 v | 77 w | " | 78 x | 79 y | 7a z | 7b { | 7c | | 7d } | 7e ~ | 7f del| " =================================================================== " " =================================================================== " If your read this... " =================================================================== " ... then please send me an email! Thanks! --Sven guckes@vim.org " I have received some emails so far - thanks, folks! " Enjoy Vim! :-) " =================================================================== " Yet another example for an autocommand: [980616] " au VimLeave * echo "Thanks for using Vim"version". --Sven Guckes@vim.org!" " =================================================================== " Last but not least... " ===================================================== " The last line is allowed to be a "modeline" with my setup. " It gives vim commands for setting variable values that are " specific for editing this file. Used mostly for setting " the textwidth (tw) and the "shiftwidth" (sw). " Note that the colon within the value of "comments" needs to " be escaped with a backslash! (Thanks, Thomas!) " vim:tw=70 et sw=4 comments=\:\" hi Normal guibg=#000000 guifg=#FFFFFF set sw=2 ts=2 tw=0 wm=0 nowrap cindent set shellpipe=2> set comments=sr:/**,m:*\ ,e:*/,://,b:#,:%,:XCOMM,n:>,n:\:,fb:- augroup Perl autocmd! autocmd BufEnter *.pl set sw=2 ts=2 tw=0 wm=0 nowrap si augroup END augroup Email autocmd! autocmd BufEnter /var/tmp/pico.* set tw=70 augroup END set expandtab set tabstop=4 set shiftwidth=4