diff --git a/runtime/doc/quotes.txt b/runtime/doc/quotes.txt
index 451fa51..529a0f7 100644
--- a/runtime/doc/quotes.txt
+++ b/runtime/doc/quotes.txt
@@ -63,53 +63,53 @@
 first UNIX I came across in 1983).  In my opinion, it's about time 'VIM'
 replace 'emacs' as the standard for top editors.  (Bo Thide', Sweden)
 
-I love and use VIM heavily too.  (Larry Wall)
+I love and use Vim heavily too.  (Larry Wall)
 
 Vi is like a Ferrari, if you're a beginner, it handles like a bitch, but once
 you get the hang of it, it's small, powerful and FAST! (Unknown)
-VIM is like a new model Ferrari, and sounds like one too - "VIIIIIIMMM!"
+Vim is like a new model Ferrari, and sounds like one too - "VIIIIIIMMM!"
 (Stephen Riehm, Germany)
 
-Schon bei Nutzung eines Bruchteils der VIM-Funktionen wird der Benutzer recht
+Schon bei Nutzung eines Bruchteils der Vim-Funktionen wird der Benutzer recht
 schnell die Vorzuege dieses Editors kennen- und schaetzenlernen.
-Translated: Even when only using a fraction of VIM-functions, the user will
+Translated: Even when only using a fraction of Vim-functions, the user will
 quickly get used to and appreciate the advantages of this editor.  (Garry
-Glendown, conclusion of an article on VIM in iX magazine 9/1998)
+Glendown, conclusion of an article on Vim in iX magazine 9/1998)
 
-I've recently acquired the O'Reilly book on VI (it also discusses VIM
+I've recently acquired the O'Reilly book on Vi (it also discusses Vim
 in-depth), and I'm amazed at just how powerful this application is.  (Jeffrey
 Rankin)
 
-This guide was written using the Windows 9.x distribution of GVIM, which is
+This guide was written using the Windows 9.x distribution of gvim, which is
 quite possibly the greatest thing to come along since God created the naked
 girl.  (Michael DiBernardo)
 
-Boy, I thought I knew almost everything about VIM, but every time I browse the
-online documentation, I hit upon a minor but cool aspect of a VIM feature that
+Boy, I thought I knew almost everything about Vim, but every time I browse the
+online documentation, I hit upon a minor but cool aspect of a Vim feature that
 I didn't know before!  I must say the documentation is one the finest I've
 ever seen in a product -- even better than most commercial products.
 (Gautam Mudunuri)
 
-VIM 4.5 is really a fantastic editor.  It has sooooo many features and more
+Vim 4.5 is really a fantastic editor.  It has sooooo many features and more
 importantly, the defaults are so well thought out that you really don't have
 to change anything!!  Words cannot express my amazement and gratitude to the
-creators of VIM.  Keep it up.  (Vikas, USA)
+creators of Vim.  Keep it up.  (Vikas, USA)
 
 I wonder how long it will be before people will refer to other Vi editors as
-VIM clones?  (Darren Hiebert)
+Vim clones?  (Darren Hiebert)
 
 I read about [auto-positioning-in-file-based-on-the-errors-from-make] in one
 of those "Perfect Programmer's Editor" threads and was delighted to discover
-that VIM already supports it.  (Brendan Macmillan, Australia)
+that Vim already supports it.  (Brendan Macmillan, Australia)
 
-I just discovered VIM (5.0) and I'm telling everyone I know about it!
-I tell them VIM stands for VI for the new (M)illenium.  Thanks so much!
+I just discovered Vim (5.0) and I'm telling everyone I know about it!
+I tell them Vim stands for Vi for the new (M)illenium.  Thanks so much!
 (Matt F. Valentine)
 
 I think from now on "vi" should be called "Vim Imitation", not the other way
 around.  (Rungun Ramanathan)
 
-The Law of VIM:
+The Law of Vim:
 For each member b of the possible behaviour space B of program P, there exists
 a finite time t before which at least one user u in the total user space U of
 program P will request b becomes a member of the allowed behaviour space B'
@@ -118,42 +118,42 @@
 (Negri)
 
 Whenever I move to a new computing platform, the first thing I do is to port
-VIM.  Lately, I am simply stunned by its ease of compilation using the
+Vim.  Lately, I am simply stunned by its ease of compilation using the
 configure facility.  (A.M. Sabuncu, Turkey)
 
 The options are really excellent and very powerful.  (Anish Maharaj)
 
 The Spring user-interface designs are in, and word from the boutiques is that
-80x24 text-only mode is back with a *vengeance! Vi editor clone VIM burst onto
+80x24 text-only mode is back with a *vengeance! Vi editor clone Vim burst onto
 March desk-tops with a dazzling show of pastel syntax highlights for its 5.0
-look.  Strident and customizable, VIM raises eyebrows with its interpretation
+look.  Strident and customizable, Vim raises eyebrows with its interpretation
 of the classic Vi single-key macro collection.
 http://www.ntk.net/index.cgi?back=archive98/now0327.txt&line=179#l
 
-I just wanted to take this opportunity to let you know that VIM 5 ROCKS!
+I just wanted to take this opportunity to let you know that Vim 5 ROCKS!
 Syntax highlighting: how did I survive without it?!  Thank you for creating
 mankind's best editor!  (Mun Johl, USA)
 
-Thanks again for VIM.  I use it every day on Linux.  (Eric Foster-Johnson,
+Thanks again for Vim.  I use it every day on Linux.  (Eric Foster-Johnson,
 author of the book "UNIX Programming Tools")
 
 The BEST EDITOR EVER (Stuart Woolford)
 
-I have used most of VIM's fancy features at least once, many frequently, and I
+I have used most of Vim's fancy features at least once, many frequently, and I
 can honestly say that I couldn't live with anything less anymore.  My
 productivity has easily doubled compared to what it was when I used vi.
 (Sitaram Chamarty)
 
-I luv VIM.  It is incredible.  I'm naming my first-born Vimberly.  (Jose
+I luv Vim.  It is incredible.  I'm naming my first-born Vimberly.  (Jose
 Unpingco, USA)
 
-Hint:  "VIM" is "vi improved" - much better! (Sven Guckes, Germany)
+Hint:  "Vim" is "vi improved" - much better! (Sven Guckes, Germany)
 
-I use VIM every day.  I spend more time in VIM than in any other program...
+I use Vim every day.  I spend more time in Vim than in any other program...
 It's the best vi clone there is.  I think it's great.  (Craig Sanders,
 Australia)
 
-I strongly advise using VIM--its infinite undo/redo saved me much grief.
+I strongly advise using Vim--its infinite undo/redo saved me much grief.
 (Terry Brown)
 
 Thanks very much for writing what in my opinion is the finest text editor on
@@ -163,98 +163,98 @@
 I typed :set all and the screen FILLED up with options.  A whole screen of
 things to be set and unset.  I saw some of my old friends like wrapmargin,
 modelines and showmode, but the screen was FILLED with new friends!   I love
-them all!   I love VIM!   I'm so happy that I've found this editor!  I feel
+them all!   I love Vim!   I'm so happy that I've found this editor!  I feel
 like how I once felt when I started using vi after a couple of years of using
 ed.  I never thought I'd forsake my beloved ed, but vi ... oh god, vi was
-great.  And now, VIM.  (Peter Jay Salzman, USA)
+great.  And now, Vim.  (Peter Jay Salzman, USA)
 
 I am really happy with such a wonderful software package.  Much better than
 almost any expensive, off the shelf program.  (Jeff Walker)
 
-Whenever I reread the VIM documentation I'm overcome with excitement at the
+Whenever I reread the Vim documentation I'm overcome with excitement at the
 power of the editor.  (William Edward Webber, Australia)
 
-Hurrah for VIM!! It is "at your fingertips" like vi, and has the extensions
+Hurrah for Vim!! It is "at your fingertips" like vi, and has the extensions
 that vi sorely needs: highlighting for executing commands on blocks, an easily
 navigable and digestible help screen, and more.  (Paul Pax)
 
 The reason WHY I don't have this amazingly useful macro anymore, is that I
-now use VIM - and this is built in!! (Stephen Riehm, Germany)
+now use Vim - and this is built in!! (Stephen Riehm, Germany)
 
-I am a user of VIM and I love it.  I use it to do all my programming, C,
+I am a user of Vim and I love it.  I use it to do all my programming, C,
 C++, HTML what ever.  (Tim Allwine)
 
-I discovered VIM after years of struggling with the original vi, and I just
+I discovered Vim after years of struggling with the original vi, and I just
 can't live without it anymore.  (Emmanuel Mogenet, USA)
 
-Emacs has not a bit of chance to survive so long as VIM is around.  Besides,
+Emacs has not a bit of chance to survive so long as Vim is around.  Besides,
 it also has the most detailed software documentation I have ever seen---much
 better than most commercial software!  (Leiming Qian)
 
-This version of VIM will just blow people apart when they discover just how
+This version of Vim will just blow people apart when they discover just how
 fantastic it is! (Tony Nugent, Australia)
 
-I took your advice & finally got VIM & I'm really impressed.  Instant convert.
+I took your advice & finally got Vim & I'm really impressed.  Instant convert.
 (Patrick Killelea, USA)
 
-VIM is by far my favorite piece of shareware and I have been particularly
+Vim is by far my favorite piece of shareware and I have been particularly
 pleased with version 3.0.  This is really a solid piece of work.  (Robert
 Colon, USA)
 
-VIM is a joy to use, it is so well thought and practical that I wonder why
-anybody would use visual development tools.  VIM is powerful and elegant, it
+Vim is a joy to use, it is so well thought and practical that I wonder why
+anybody would use visual development tools.  Vim is powerful and elegant, it
 looks deceptively simple but is almost as complex as a 747 (especially when I
-look at my growing .vimrc), keep up that wonderful job, VIM is a centerpiece
+look at my growing .vimrc), keep up that wonderful job, Vim is a centerpiece
 of the free software world.  (Louis-David Mitterand, USA)
 
-I cannot believe how great it is to use VIM.  I think the guys at work are
+I cannot believe how great it is to use Vim.  I think the guys at work are
 getting tired of hearing me bragging about it.  Others eyes are lighting up.
 (Rick Croote)
 
 Emacs takes way too much time to start up and run, it is too big and bulky for
-effective use and the interface is more confusing than it is of any help.  VIM
+effective use and the interface is more confusing than it is of any help.  Vim
 however is short, it is fast, it is powerful, it has a good interface and it
 is all purpose.  (Paal Ditlefsen Ekran)
 
-From the first time I got VIM3.0, I was very enthusiastic.  It has almost no
+From the first time I got Vim3.0, I was very enthusiastic.  It has almost no
 problems.  The swapfile handling and the backup possibilities are robust, also
 the protection against editing one file twice.  It is very compatible to the
 real VI (and that is a MUST, because my brain is trained over years in using
 it).  (Gert van Antwerpen, Holland)
 
-Visual mode in VIM is a very powerful thing! (Tony Nugent, Australia)
+Visual mode in Vim is a very powerful thing! (Tony Nugent, Australia)
 
-I have to say that VIM is =THE= single greatest piece of source code to ever
+I have to say that Vim is =THE= single greatest piece of source code to ever
 come across the net (Jim Battle, USA).
 
-In fact, if you do want to get a new vi I'd suggest VIM-3.0.  This is, by
+In fact, if you do want to get a new vi I'd suggest Vim-3.0.  This is, by
 far, the best version of vi I've ever seen (Albert W. Schueller).
 
-I should mention that VIM is a very good editor and can compete with anything
+I should mention that Vim is a very good editor and can compete with anything
 (Ilya Beloozerov).
 
 To tell the truth sometimes I used elvis, vile, xvi, calvin, etc.  And this is
-the reason that I can state that VIM is the best! (Ferenc Deak, Hungary)
+the reason that I can state that Vim is the best! (Ferenc Deak, Hungary)
 
-VIM is by far the best editor that I have used in a long time, and I have
+Vim is by far the best editor that I have used in a long time, and I have
 looked at just about every thing that is available for every platform that I
-use.  VIM is the best on all of them.  (Guy L. Oliver)
+use.  Vim is the best on all of them.  (Guy L. Oliver)
 
-VIM is the greatest editor since the stone chisel.  (Jose Unpingco, USA)
+Vim is the greatest editor since the stone chisel.  (Jose Unpingco, USA)
 
-I would like to say that with VIM I am finally making the 'emacs to vi'
+I would like to say that with Vim I am finally making the 'emacs to vi'
 transition - as an Editor it is so much better in many ways: keyboard layout,
 memory usage, text alteration to name 3.  (Mark Adam)
 
 In fact, now if I want to know what a particular setting does in vi, I fire up
-VIM and check out its help!  (Nikhil Patel, USA)
+Vim and check out its help!  (Nikhil Patel, USA)
 
-As a vi user, VIM has made working with text a far more pleasant task than
+As a vi user, Vim has made working with text a far more pleasant task than
 before I encountered this program.  (Steinar Knutsen, Norway)
 
-I use VIM since version 3.0.  Since that time, it is the ONLY editor I use,
-with Solaris, Linux and OS/2 Warp.  I suggest all my friends to use VIM, they
-try, and they continue using it.  VIM is really the best software I have ever
+I use Vim since version 3.0.  Since that time, it is the ONLY editor I use,
+with Solaris, Linux and OS/2 Warp.  I suggest all my friends to use Vim, they
+try, and they continue using it.  Vim is really the best software I have ever
 downloaded from the Internet, and the best editor I know of.  (Marco
 Eccettuato, Italy)
 
