summaryrefslogtreecommitdiffstats
path: root/debian/FAQ
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 08:50:33 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 08:50:33 +0000
commit1333020b904a8714d01f4ae4789c5070e8ff90f2 (patch)
tree338ef4570c790f46661f010deeebaaecc58c9bbc /debian/FAQ
parentAdding upstream version 2:9.0.1378. (diff)
downloadvim-1333020b904a8714d01f4ae4789c5070e8ff90f2.tar.xz
vim-1333020b904a8714d01f4ae4789c5070e8ff90f2.zip
Adding debian version 2:9.0.1378-2.debian/2%9.0.1378-2debian
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'debian/FAQ')
-rw-r--r--debian/FAQ7700
1 files changed, 7700 insertions, 0 deletions
diff --git a/debian/FAQ b/debian/FAQ
new file mode 100644
index 0000000..bf70b7e
--- /dev/null
+++ b/debian/FAQ
@@ -0,0 +1,7700 @@
+vim:tw=75:wrap:fo=tcqn2:sw=4:sts=4:et
+
+This Vim FAQ is created from the questions and answers posted to the
+vim@vim.org user mailing list and the comp.editors newsgroup. There are
+several ways to solve a problem in Vim. This FAQ gives one of those several
+possibilities. You can explore the other ways using the information and
+links given in this FAQ. The credit for the answers in this FAQ goes to
+Peppe, Benji, Charles Campbell and numerous others.
+
+INDEX
+
+SECTION 1 - GENERAL INFORMATION
+ 1.1. What is Vim?
+ 1.2. Who wrote Vim?
+ 1.3. Is Vim compatible with Vi?
+ 1.4. What are some of the improvements of Vim over Vi?
+ 1.5. Is Vim free?
+
+SECTION 2 - RESOURCES
+ 2.1. Where can I learn more about Vim?
+ 2.2. Is there a mailing list available?
+ 2.3. Is there an archive available for the Vim mailing lists?
+ 2.4. Where can I get the Vim user manual in HTML/PDF/PS format?
+ 2.5. I have a "xyz" (some) problem with Vim. How do I determine it is a
+ problem with my setup or with Vim?
+ 2.6. Where can I report bugs?
+ 2.7. Where can the FAQ be found?
+ 2.8. What if I don't find an answer in this FAQ?
+ 2.9. I have a patch for implementing a Vim feature. Where do I send the
+ patch?
+ 2.10. I have a Vim tip or developed a new Vim
+ syntax/indent/filetype/compiler plugin or developed a new script
+ or a colorscheme. Is there a public website where I can upload
+ this?
+
+SECTION 3 - AVAILABILITY
+ 3.1. What is the latest version of Vim?
+ 3.2. Where can I find the latest version of Vim?
+ 3.3. What platforms does it run on?
+ 3.4. Where can I download the latest version of the Vim runtime files?
+
+SECTION 4 - HELP
+ 4.1. How do I use the help files?
+ 4.2. How do I search for a keyword in the Vim help files?
+ 4.3. I am getting an error message E123, what did I do wrong?
+ 4.4. Where can I read about the various modes in Vim?
+ 4.5. How do I generate the Vim help tags file after adding a new Vim
+ help file?
+ 4.6. Can I use compressed versions of the help files?
+
+SECTION 5 - EDITING A FILE
+ 5.1. How do I load a file in Vim for editing?
+ 5.2. How do I save the current file in another name (save as) and edit
+ a new file?
+ 5.3. How do I change the current directory to the directory of the
+ current file?
+ 5.4. How do I write a file without the line feed (EOL) at the end of
+ the file?
+ 5.5. How do I configure Vim to open a file at the last edited location?
+ 5.6. When editing a file in Vim, which is being changed by an external
+ application, Vim opens a warning window (like the confirm dialog)
+ each time a change is detected. How do I disable this warning?
+ 5.7. How do I edit a file whose name is under the cursor?
+ 5.8. How do I reload/re-edit the current file?
+ 5.9. How do I autosave a file periodically?
+ 5.10. How do I open a file in read-only mode?
+ 5.11. How do I open a file for editing without saving the modifications
+ to the current file?
+
+SECTION 6 - EDITING MULTIPLE FILES
+ 6.1. How do I open multiple files at once from within Vim?
+ 6.2. How do I switch between multiple files/buffers in Vim?
+ 6.3. How do I open several files in Vim, with each file in a separate
+ window?
+ 6.4. How do I configure Vim to autoload several files at once similar
+ to "work-sets" or "projects"?
+ 6.5. Is it possible to open multiple top level windows in a single
+ instance of Vim similar to Nedit or emacs?
+ 6.6. How do I browse/explore directories from within Vim?
+ 6.7. How do I edit files over a network using ftp/scp/rcp/http?
+
+SECTION 7 - BACKUP
+ 7.1. When I edit and save files, Vim creates a file with the same name
+ as the original file and a "~" character at the end. How do I stop
+ Vim from creating this file (or) How do I disable the Vim backup
+ file feature?
+ 7.2. How do I configure Vim to store all the backup files in a
+ particular directory?
+ 7.3. When I save a file with Vim, the file permissions are changed.
+ How do I configure Vim to save a file without changing the file
+ permissions?
+
+SECTION 8 - BUFFERS
+ 8.1. I have made some modifications to a buffer. How do I edit another
+ buffer without saving the modified buffer and also without losing
+ the modifications?
+ 8.2. How do I configure Vim to auto-save a modified buffer when
+ switching to another buffer?
+ 8.3. How do I replace the buffer in the current window with a blank
+ buffer?
+ 8.4. Is there a keyboard shortcut to load a buffer by the buffer
+ number?
+ 8.5. How do I open all the current buffers in separate windows?
+ 8.6. How do I close (delete) a buffer without exiting Vim?
+ 8.7. I have several buffers opened with ":e filename". How do I close
+ one of the buffers without exiting Vim?
+ 8.8. When I use the command ":%bd" to delete all the buffers, not all
+ the buffers are deleted. Why?
+ 8.9. How do I display the buffer number of the current buffer/file?
+ 8.10. How do I delete a buffer without closing the window in which the
+ buffer is displayed?
+ 8.11. How do I map the tab key to cycle through and open all the
+ buffers?
+
+SECTION 9 - WINDOWS
+ 9.1. What is the difference between a Vim window and a buffer?
+ 9.2. How do I increase the width of a Vim window?
+ 9.3. How do I zoom into or out of a window?
+ 9.4. How do I execute an ex command on all the open buffers or open
+ windows or all the files in the argument list?
+
+SECTION 10 - MOTION
+ 10.1. How do I jump to the beginning (first line) or end (last line) of
+ a file?
+ 10.2. In insert mode, when I press the <Esc> key to go to command mode,
+ the cursor moves one character to the left (except when the cursor
+ is on the first character of the line). Is it possible to change
+ this behavior to keep the cursor at the same column?
+ 10.3. How do I configure Vim to maintain the horizontal cursor position
+ when scrolling with the <Page Up>, <Page Down>, etc keys?
+ 10.4. Some lines in a file are more than the screen width and they are
+ all wrapped. When I use the j, k keys to move from one line to the
+ next, the cursor is moved to the next line in the file instead of
+ the next line on the screen. How do I move from one screen line to
+ the next?
+ 10.5. What is the definition of a sentence, paragraph and section in
+ Vim?
+ 10.6. How do I jump to beginning or end of a sentence, paragraph or a
+ section?
+ 10.7. I have lines in a file that extends beyond the right extent of the
+ screen. How do I move the Vim view to the right to see the text
+ off the screen?
+ 10.8. How do I scroll two or more buffers simultaneously?
+ 10.9. When I use my arrow keys, Vim changes modes, inserts weird
+ characters in my document but doesn't move the cursor properly.
+ What's going on?
+ 10.10. How do I configure Vim to move the cursor to the end of the
+ previous line, when the left arrow key is pressed and the cursor
+ is currently at the beginning of a line?
+ 10.11. How do I configure Vim to stay only in insert mode (modeless
+ editing)?
+ 10.12. How do I display some context lines when scrolling text?
+ 10.13. How do I go back to previous cursor locations?
+
+SECTION 11 - SEARCHING TEXT
+ 11.1. After I searched for a text with a pattern, all the matched text
+ stays highlighted. How do I turn off the highlighting
+ temporarily/permanently?
+ 11.2. How do I enter a carriage return character in a search pattern?
+ 11.3. How do I search for the character ^M?
+ 11.4. How can I search/replace characters that display as '~R', '~S',
+ etc.?
+ 11.5. How do I highlight all the non-printable characters in a file?
+ 11.6. How do I search for whole words in a file?
+ 11.7. How do I search for the current word under the cursor?
+ 11.8. How do I search for a word without regard to the case (uppercase
+ or lowercase)?
+ 11.9. How do I search for words that occur twice consecutively?
+ 11.10. How do I count the number of times a particular word occurs in a
+ buffer?
+ 11.11. How do I place the cursor at the end of the matched word when
+ searching for a pattern?
+ 11.12. How do I search for an empty line?
+ 11.13. How do I search for a line containing only a single character?
+ 11.14. How do I search and replace a string in multiple files?
+ 11.15. I am using the ":s" substitute command in a mapping. When a
+ search for a pattern fails, the map terminates. I would like the
+ map to continue processing the next command, even if the
+ substitute command fails. How do I do this?
+ 11.16. How do I search for the n-th occurrence of a character in a
+ line?
+ 11.17. How do I replace a tab (or any other character) with a hard
+ return (newline) character?
+ 11.18. How do I search for a character by its ASCII value?
+ 11.19. How do I search for long lines?
+ 11.20. How do I display all the lines in the current buffer that
+ contain a specified pattern?
+ 11.21. How do I search for a text string that spans multiple lines?
+ 11.22. How do I search for a pattern only within a range of lines
+ in a buffer?
+
+SECTION 12 - CHANGING TEXT
+ 12.1. How do I delete all the trailing white space characters (SPACE
+ and TAB) at the end of all the lines in a file?
+ 12.2. How do I replace all the occurrences of multiple consecutive
+ space characters to a single space?
+ 12.3. How do I reduce a range of empty lines into one line only?
+ 12.4. How do I delete all blank lines in a file? How do I remove all
+ the lines containing only space characters?
+ 12.5. How do I copy/yank the current word?
+ 12.6. How do I yank text from one position to another position within a
+ line, without yanking the entire line?
+ 12.7. When I yank some text into a register, how do I append the text
+ to the current contents of the register?
+ 12.8. How do I yank a complete sentence that spans over more than one
+ line?
+ 12.9. How do I yank all the lines containing a pattern into a buffer?
+ 12.10. How do I delete all the lines in a file that does not contain a
+ pattern?
+ 12.11. How do I add a line before each line with "pattern" in it?
+ 12.12. Is there a way to operate on a line if the previous line
+ contains a particular pattern?
+ 12.13. How do I execute a command on all the lines containing a
+ pattern?
+ 12.14. Can I copy the character above the cursor to the current cursor
+ position?
+ 12.15. How do I insert a blank line above/below the current line
+ without entering insert mode?
+ 12.16. How do I insert the name of current file into the current
+ buffer?
+ 12.17. How do I insert the contents of a Vim register into the current
+ buffer?
+ 12.18. How do I move the cursor past the end of line and insert some
+ characters at some columns after the end of the line?
+ 12.19. How to replace the word under the cursor (say: junk) with
+ "foojunkbar" in Vim?
+ 12.20. How do I replace a particular text in all the files in a
+ directory?
+ 12.21. I have some numbers in a file. How do I increment or decrement
+ the numbers in the file?
+ 12.22. How do I reuse the last used search pattern in a ":substitute"
+ command?
+ 12.23. How do I change the case of a string using the ":substitute"
+ command?
+ 12.24. How do I enter characters that are not present in the keyboard?
+ 12.25. Is there a command to remove any or all digraphs?
+ 12.26. In insert mode, when I press the backspace key, it erases only
+ the characters entered in this instance of insert mode. How do I
+ erase previously entered characters in insert mode using the
+ backspace key?
+ 12.27. I have a file which has lines longer than 72 characters
+ terminated with "+" and wrapped to the next line. How can I
+ quickly join the lines?
+ 12.28. How do I paste characterwise yanked text into separate lines?
+ 12.29. How do I change the case (uppercase, lowercase) of a word or
+ a character or a block of text?
+ 12.30. How do I enter ASCII characters that are not present in the
+ keyboard?
+ 12.31. How do I replace non-printable characters in a file?
+ 12.32. How do I remove duplicate lines from a buffer?
+ 12.33. How do I prefix all the lines in a file with the corresponding
+ line numbers?
+ 12.34. How do I exchange (swap) two characters or words or lines?
+ 12.35. How do I change the characters used as word delimiters?
+
+SECTION 13 - COMPLETION IN INSERT MODE
+ 13.1. How do I complete words or lines in insert mode?
+ 13.2. How do I complete file names in insert mode?
+ 13.3. I am using CTRL-P/CTRL-N to complete words in insert mode. How do
+ I complete words that occur after the just completed word?
+
+SECTION 14 - TEXT FORMATTING
+ 14.1. How do I format a text paragraph so that a new line is inserted
+ at the end of each wrapped line?
+ 14.2. How do I format long lines in a file so that each line contains
+ less than 'n' characters?
+ 14.3. How do I join short lines to the form a paragraph?
+ 14.4. How do I format bulleted and numbered lists?
+ 14.5. How do I indent lines in insert mode?
+ 14.6. How do I format/indent an entire file?
+ 14.7. How do I increase or decrease the indentation of the current
+ line?
+ 14.8. How do I indent a block/group of lines?
+ 14.9. When I indent lines using the > or < key, the standard 8-tabstops
+ are used instead of the current 'tabstop' setting. Why?
+ 14.10. How do I turn off the automatic indentation of text?
+ 14.11. How do I configure Vim to automatically set the 'textwidth'
+ option to a particular value when I edit mails?
+ 14.12. Is there a way to make Vim auto-magically break lines?
+ 14.13. I am seeing a lot of ^M symbols in my file. I tried setting the
+ 'fileformat' option to 'dos' and then 'unix' and then 'mac'.
+ None of these helped. How can I hide these symbols?
+ 14.14. When I paste some text into a Vim buffer from another
+ application, the alignment (indentation) of the new text is
+ messed up. How do I fix this?
+ 14.15. When there is a very long wrapped line (wrap is "on") and a line
+ doesn't fit entirely on the screen it is not displayed at all.
+ There are blank lines beginning with '@' symbol instead of
+ wrapped line. If I scroll the screen to fit the line the '@'
+ symbols disappear and the line is displayed again. What Vim
+ setting control this behavior?
+ 14.16. How do I convert all the tab characters in a file to space
+ characters?
+ 14.17. What Vim options can I use to edit text that will later go to a
+ word processor?
+ 14.18. How do I join lines without adding or removing any space
+ characters?
+
+SECTION 15 - VISUAL MODE
+ 15.1. How do I do rectangular block copying?
+ 15.2. How do I delete or change a column of text in a file?
+ 15.3. How do I apply an ex-command on a set of visually selected lines?
+ 15.4. How do I execute an ex command on a column of text selected in
+ Visual block mode?
+ 15.5. How do I select the entire file in visual mode?
+ 15.6. When I visually select a set of lines and press the > key to
+ indent the selected lines, the visual mode ends. How can I
+ reselect the region for further operation? (or) How do I
+ re-select the last selected visual area again?
+ 15.7. How do I jump to the beginning/end of a visually selected region?
+ 15.8. When I select text with mouse and then press : to enter an ex
+ command, the selected text is replaced with the : character. How
+ do I execute an ex command on a text selected using the mouse
+ similar to the text selected using the visual mode?
+ 15.9. When I select a block of text using the mouse, Vim goes into
+ selection mode instead of Visual mode. Why?
+
+SECTION 16 - COMMAND-LINE MODE
+ 16.1. How do I use the name of the current file in the command mode or
+ an ex command line?
+ 16.2. How do I edit the text in the Vim command-line effectively?
+ 16.3. How do I switch from Vi mode to Ex mode?
+ 16.4. How do I copy the output from an ex-command into a buffer?
+ 16.5. When I press the tab key to complete the name of a file in the
+ command mode, if there are more than one matching file names,
+ then Vim completes the first matching file name and displays a
+ list of all matching filenames. How do I configure Vim to only
+ display the list of all the matching filenames and not complete
+ the first one?
+ 16.6. How do I copy text from a buffer to the command line and from the
+ command line to a buffer?
+ 16.7. How do I put a command onto the command history without executing
+ it?
+ 16.8. How do I increase the height of the command-line?
+
+SECTION 17 - VIMINFO
+ 17.1. When I invoke Vim, I get error messages about illegal characters
+ in the viminfo file. What should I do to get rid of these
+ messages?
+ 17.2. How do I disable the viminfo feature?
+ 17.3. How do I save and use Vim marks across Vim sessions?
+
+SECTION 18 - REMOTE EDITING
+ 18.1. How do I open a file with existing instance of gvim? What
+ happened to the Vim 5.x OpenWithVim.exe and SendToVim.exe files?
+ 18.2. How do I send a command to a Vim server to write all buffers to
+ disk?
+ 18.3. Where can I get the documentation about the Vim remote server
+ functionality?
+
+SECTION 19 - OPTIONS
+ 19.1. How do I configure Vim in a simple way?
+ 19.2. How do I toggle the value of an option?
+ 19.3. How do I set an option that affects only the current
+ buffer/window?
+ 19.4. How do I use space characters for a Vim option value?
+ 19.5. Can I add (embed) Vim option settings to the contents of a file?
+ 19.6. How do I display the line numbers of all the lines in a file?
+ 19.7. How do I change the width of the line numbers displayed using the
+ "number" option?
+ 19.8. How do I display (view) all the invisible characters like space,
+ tabs and newlines in a file?
+ 19.9. How do I configure Vim to always display the current line and
+ column number?
+ 19.10. How do I display the current Vim mode?
+ 19.11. How do I configure Vim to show pending/partial commands on the
+ status line?
+ 19.12. How do I configure the Vim status line to display different
+ settings/values?
+ 19.13. How do I configure Vim to display status line always?
+ 19.14. How do I make a Vim setting persistent across different Vim
+ invocations/instances/sessions?
+ 19.15. Why do I hear a beep (why does my window flash) about 1 second
+ after I hit the Escape key?
+ 19.16. How do I make the 'c' and 's' commands display a '$' instead of
+ deleting the characters I'm changing?
+ 19.17. How do I remove more than one flag using a single ":set" command
+ from a Vim option?
+
+SECTION 20 - MAPPING KEYS
+ 20.1. How do I know what a key is mapped to?
+ 20.2. How do list all the user-defined key mappings?
+ 20.3. How do I unmap a key?
+ 20.4. I am not able to create a mapping for the <xxx> key. What is
+ wrong?
+ 20.5. How do I map the numeric keypad keys?
+ 20.6. How do I create a mapping that works only in visual mode?
+ 20.7. In a Vim script, how do I know which keys to use for my mappings,
+ so that the mapped key will not collide with an already used key?
+ 20.8. How do I map the escape key?
+ 20.9. How do I map a key to perform nothing?
+ 20.10. I want to use the Tab key to indent a block of text and
+ Shift-Tab key to unindent a block of text. How do I map the keys
+ to do this? This behavior is similar to textpad, visual studio,
+ etc.
+ 20.11. In my mappings the special characters like <CR> are not
+ recognized. How can I configure Vim to recognize special
+ characters?
+ 20.12. How do I use the '|' to separate multiple commands in a map?
+ 20.13. If I have a mapping/abbreviation whose ending is the beginning of
+ another mapping/abbreviation, how do I keep the first from
+ expanding into the second one?
+ 20.14. Why does it take a second or more for Vim to process a key,
+ sometimes when I press a key?
+ 20.15. How do I map a key to run an external command using a visually
+ selected text?
+ 20.16. How do I map the Ctrl-I key while still retaining the
+ functionality of the <Tab> key?
+
+SECTION 21 - ABBREVIATIONS
+ 21.1. How do I auto correct misspelled words?
+ 21.2. How do I create multi-line abbreviations?
+ 21.3. When my abbreviations are expanded, an additional space character
+ is added at the end of the expanded text. How do I avoid this
+ character?
+ 21.4. How do I insert the current date/time stamp into the file?
+ 21.5. How do I prevent an abbreviation from expanding in insert mode?
+
+SECTION 22 - RECORD AND PLAYBACK
+ 22.1. How do I repeat an editing operation (insertion, deletion, paste,
+ etc)?
+ 22.2. How I record and repeat a set of key sequences?
+ 22.3. How do I edit/modify a recorded set of key sequences?
+ 22.4. How do I write recorded key sequences to a file?
+ 22.5. I am using register 0 to record my key sequences (i.e. q0 ....
+ q). In the recorded key sequences, I am yanking some text. After
+ the first replay of the recorded key sequence, I am no longer
+ able to play it back.
+
+SECTION 23 - AUTOCOMMANDS
+ 23.1. How do I execute a command when I try to modify a read-only file?
+ 23.2. How do I execute a command every time when entering a buffer?
+ 23.3. How do I execute a command every time when entering a window?
+ 23.4. From an autocmd, how can I determine the name of the file or the
+ buffer number for which the autocommand is executed?
+ 23.5. How do I automatically save all the changed buffers whenever Vim
+ loses focus?
+ 23.6. How do I execute/run a function when Vim exits to do some
+ cleanup?
+
+SECTION 24 - SYNTAX HIGHLIGHT
+ 24.1. How do I turn off/on syntax highlighting?
+ 24.2. How do I change the background and foreground colors used by Vim?
+ 24.3. How do I change the highlight colors to suit a dark/light
+ background?
+ 24.4. How do I change the color of the line numbers displayed when the
+ ":set number" command is used?
+ 24.5. How do I change the background color used for a Visually selected
+ block?
+ 24.6. How do I highlight the special characters (tabs, trailing spaces,
+ end of line, etc) displayed by the 'list' option?
+ 24.7. How do I specify a colorscheme in my .vimrc/.gvimrc file, so that
+ Vim uses the specified colorscheme everytime?
+ 24.8. Vim syntax highlighting is broken. When I am editing a file, some
+ parts of the file is not syntax highlighted or syntax highlighted
+ incorrectly.
+ 24.9. Is there a built-in function to syntax-highlight the
+ corresponding matching bracket?
+ 24.10. How do I turn off the C comment syntax highlighting?
+ 24.11. How do I add my own syntax extensions to the standard syntax
+ files supplied with Vim?
+ 24.12. How do I replace a standard syntax file that comes with the Vim
+ distribution with my own syntax file?
+ 24.13. How do I highlight all the characters after a particular column?
+ 24.14. How do I convert a source file (.c, .h, etc) with the Vim syntax
+ highlighting into a HTML file?
+ 24.15. How do I list the definition of all the current highlight
+ groups?
+
+SECTION 25 - VIM SCRIPT WRITING
+ 25.1. How do I list the names of all the scripts sourced by Vim?
+ 25.2. How do I debug Vim scripts?
+ 25.3. How do I locate the script/plugin which sets a Vim option?
+ 25.4. I am getting some error/informational messages from Vim (possibly
+ when running a script), the messages are cleared immediately. How
+ do I display the messages again?
+ 25.5. How do I save and restore a plugin specific information across
+ Vim invocations?
+ 25.6. How do I start insert mode from a Vim function?
+ 25.7. How do I change the cursor position from within a Vim function?
+ 25.8. How do I check the value of an environment variable in the .vimrc
+ file?
+ 25.9. How do I check whether an environment variable is set or not from
+ a Vim function?
+ 25.10. How do I call/use the Vim built-in functions?
+ 25.11. I am using some normal mode commands in my Vim script. How do I
+ avoid using the user-defined mappings for these normal mode
+ commands and use the standard Vim functionality for these normal
+ mode commands?
+ 25.12. How do I get a visually selected text into a Vim variable or
+ register?
+ 25.13. I have some text in a Vim variable 'myvar'. I would like to use
+ this variable in a ":s" substitute command to replace a text
+ 'mytext'. How do I do this?
+ 25.14. A Vim variable (bno) contains a buffer number. How do I use this
+ variable to open the corresponding buffer?
+ 25.15. How do I store the value of a Vim option into a Vim variable?
+ 25.16. I have copied and inserted some text into a buffer from a Vim
+ function. How do I indent the inserted text from the Vim
+ function?
+ 25.17. How do I get the character under the cursor from a Vim script?
+ 25.18. How do I get the name of the current file without the extension?
+ 25.19. How do I get the basename of the current file?
+ 25.20. How do I get the output from a Vim function into the current
+ buffer?
+ 25.21. How do I call external programs from a Vim function?
+ 25.22. How do I get the return status of a program executed using the
+ ":!" command?
+ 25.23. How do I determine whether the current buffer is modified or
+ not?
+ 25.24. I would like to use the carriage return character in a normal
+ command from a Vim script. How do I specify the carriage return
+ character?
+ 25.25. How do I split long lines in a Vim script?
+ 25.26. When I try to "execute" my function using the "execute 'echo
+ Myfunc()'" command, the cursor is moved to the top of the
+ current buffer. Why?
+ 25.27. How do I source/execute the contents of a register?
+ 25.28. After calling a Vim function or a mapping, when I press the 'u'
+ key to undo the last change, Vim undoes all the changes made by
+ the mapping/function. Why?
+ 25.29. How can I call a function defined with s: (script local
+ function) from another script/plugin?
+ 25.30. Is it possible to un-source a sourced script? In otherwords,
+ reverse all the commands executed by sourcing a script.
+
+SECTION 26 - PLUGINS
+ 26.1. How do I set different options for different types of files?
+ 26.2. I have downloaded a Vim plugin or a syntax file or a indent file,
+ or a color scheme or a filetype plugin from the web. Where should
+ I copy these files so that Vim will find them?
+ 26.3. How do I extend an existing filetype plugin?
+ 26.4. How do I turn off loading the Vim plugins?
+ 26.5. How do I turn on/off loading the filetype plugins?
+ 26.6. How do I override settings made in a file type plugin in the
+ global ftplugin directory for all the file types?
+ 26.7. How do I disable the Vim directory browser plugin?
+ 26.8. How do I set the filetype option for files with names matching a
+ particular pattern or depending on the file extension?
+
+SECTION 27 - EDITING PROGRAM FILES
+ 27.1. How do I enable automatic indentation for C/C++ files?
+ 27.2. How do I configure the indentation used for C/C++ files?
+ 27.3. How do I turn off the automatic indentation feature?
+ 27.4. How do I change the number of space characters used for the
+ automatic indentation?
+ 27.5. I am editing a C program using Vim. How do I display the
+ definition of a macro or a variable?
+ 27.6. I am editing a C program using Vim. How do I jump to the
+ beginning or end of a code block from within the block?
+ 27.7. Is there a way to turn off the "//" comment auto-insertion
+ behavior for C++ files? If I'm sitting on a line beginning with
+ "//", then I open a new line above or below it, Vim automatically
+ inserts new "//" chars.
+ 27.8. How do I add the comment character '#' to a set of lines at the
+ beginning of each line?
+ 27.9. How do I edit a header file with the same name as the
+ corresponding C source file?
+ 27.10. How do I automatically insert comment leaders while typing
+ comments?
+
+SECTION 28 - QUICKFIX
+ 28.1. How do I build programs from Vim?
+ 28.2. When I run the make command in Vim I get the errors listed as the
+ compiler compiles the program. When it finishes this list
+ disappears and I have to use the :clist command to see the error
+ message again. Is there any other way to see these error
+ messages?
+
+SECTION 29 - FOLDING
+ 29.1. How do I extend the Vim folding support?
+ 29.2. When I enable folding by setting the 'foldmethod' option, all the
+ folds are closed. How do I prevent this?
+ 29.3. How do I control how many folds will be opened when I start
+ editing a file?
+ 29.4. How do I open and close folds using the mouse?
+ 29.5. How do I change the text displayed for a closed fold?
+ 29.6. How do I store and restore manually created folds across
+ different Vim invocations?
+
+SECTION 30 - VIM WITH EXTERNAL APPLICATIONS
+ 30.1. Can I run a shell inside a Vim window?
+ 30.2. How do I pass the word under the cursor to an external command?
+ 30.3. How do I get the output of a shell command into a Vim buffer?
+ 30.4. How do I pipe the contents of the current buffer to an external
+ command and replace the contents of the buffer with the output
+ from the command?
+ 30.5. How do I sort a section of my file?
+ 30.6. Is there a step-by-step guide for using Vim with slrn?
+ 30.7. How do I use Vim as a pager?
+ 30.8. How do I view Unix man pages from inside Vim?
+ 30.9. How do I change the diff command used by the Vim diff support?
+ 30.10. How do I use the Vim diff mode without folding?
+
+SECTION 31 - GUI VIM
+ 31.1. How do I create buffer specific menus?
+ 31.2. How do I change the font used by GUI Vim?
+ 31.3. When starting GUI Vim, how do I specify the location of the GVIM
+ window?
+ 31.4. How do I add a horizontal scrollbar in GVim?
+ 31.5. How do I make the scrollbar appear in the left side by default?
+ 31.6. How do I remove the Vim menubar?
+ 31.7. I am using GUI Vim. When I press the ALT key and a letter, the
+ menu starting with that letter is selected. I don't want this
+ behavior as I want to map the ALT-<key> combination. How do I do
+ this?
+ 31.8. Is it possible to scroll the text by dragging the scrollbar so
+ that the cursor stays in the original location?
+ 31.9. How do I get gvim to start browsing files in a particular
+ directory when using the ":browse" command?
+ 31.10. For some questions, like when a file is changed outside of Vim,
+ Vim displays a GUI dialog box. How do I replace this GUI dialog
+ box with a console dialog box?
+ 31.11. I am trying to use GUI Vim as the editor for my xxx application.
+ When the xxx application launches GUI Vim to edit a file, the
+ control immediately returns to the xxx application. How do I
+ start GUI Vim, so that the control returns to the xxx
+ application only after I quit Vim?
+ 31.12. Why does the "Select Font" dialog doesn't show all the fonts
+ installed in my system?
+ 31.13. How do I use the mouse in Vim command-line mode?
+ 31.14. When I use the middle mouse button to scroll text, it pastes the
+ last copied text. How do I disable this behavior?
+ 31.15. How do I change the location and size of a GUI Vim window?
+
+SECTION 32 - VIM ON UNIX
+ 32.1. I am running Vim in a xterm. When I press the CTRL-S key, Vim
+ freezes. What should I do now?
+ 32.2. I am seeing weird screen update problems in Vim. What can I do to
+ solve this screen/display update problems?
+ 32.3. I am using the terminal/console version of Vim. In insertmode,
+ When I press the backspace key, the character before the cursor
+ is not erased. How do I configure Vim to do this?
+ 32.4. I am using Vim in a xterm. When I quit Vim, the screen contents
+ are restored back to the original contents. How do I disable
+ this?
+ 32.5. When I start Vim, it takes quite a few seconds to start. How do I
+ minimize the startup time?
+ 32.6. How can I make the cursor in gvim in unix stop blinking?
+ 32.7. How do I change the menu font on GTK Vim?
+ 32.8. How do I prevent <Ctrl-Z> from suspending Vim?
+ 32.9. When I kill the xterm running Vim, the Vim process continues to
+ run and takes up a lot of CPU (99%) time. Why is this happening?
+ 32.10. How do I get the Vim syntax highlighting to work in a Unix
+ terminal?
+
+SECTION 33 - VIM ON MS-WINDOWS
+ 33.1. In MS-Windows, CTRL-V doesn't start the blockwise visual mode.
+ What happened?
+ 33.2. When I press the CTRL-Y key, it acts like the CTRL-R key. How do
+ I configure Vim to treat CTRL-Y as CTRL-Y?
+ 33.3. How do I start GUI Vim in a maximized window always?
+ 33.4. After doing some editing operations, Vim freezes. The cursor
+ becomes an empty rectangle. I am not able enter any characters.
+ What is happening?
+ 33.5. I am using Windows XP, the display speed of maximized GVim is
+ very slow. What can I do to speed the display updates?
+ 33.6. What are the recommended settings for using Vim with cygwin?
+ 33.7. I am trying to use GNU diff with Vim diff mode. When I run the
+ diff from command line, it works. When I try to use the diff with
+ Vim it doesn't work. What should I do now?
+ 33.8. Is it possible to use Vim as an external editor for MS-Windows
+ Outlook email client?
+ 33.9. I am using Vim to edit HTML files. How do I start internet
+ explorer with the current file to preview the HTML file?
+ 33.10. I would like to use Vim with Microsoft Visual Studio. How do I
+ do this?
+ 33.11. Where do I place the _vimrc and _gvimrc files?
+ 33.12. Everytime I save a file, Vim warns about the file being changed
+ outside of Vim. Why?
+
+SECTION 34 - PRINTING
+ 34.1. How do I print a file along with line numbers for all the lines?
+ 34.2. How do I print a file with the Vim syntax highlighting colors?
+
+SECTION 35 - BUILDING VIM FROM SOURCE
+ 35.1. How do I build Vim from the sources on a Unix system?
+ 35.2. How do I install Vim in my home directory or a directory other
+ than the default installation directory in Unix?
+ 35.3. How do I build Vim from the sources on a MS-Windows system?
+ 35.4. The Vim help, syntax, indent files are missing from my Vim
+ installation. How do I install these files?
+ 35.5. I have built Vim from the source and installed the Vim package
+ using "make install". Do I need to keep the Vim source directory?
+ 35.6. How do I determine the Vim features which are enabled at compile
+ time?
+ 35.7. Can I build Vim without the GUI support?
+ 35.8. When building Vim on a Unix system, I am getting "undefined
+ reference to term_set_winsize' error. How do I resolve this
+ error?
+ 35.9. Vim configure keeps complaining about the lack of gtk-config
+ while trying to use GTK 2.03. This is correct, since in GTK 2
+ they moved to using the generic pkg-config. I can get pkg-config
+ to list the various includes and libs for gtk, but for some
+ reason the configure script still isn't picking this up.
+
+SECTION 36 - VARIOUS
+ 36.1. How do I edit binary files with Vim?
+ 36.2. How do I disable the visual error flash and the error beep?
+ 36.3. How do I display the ascii value of a character displayed in a
+ buffer?
+ 36.4. Can I use zero as a count for a Vim command?
+ 36.5. How do I disable the Vim welcome screen?
+ 36.6. How do I avoid the "hit enter to continue" prompt?
+ 36.7. How do I invoke Vim from command line to run a group of commands
+ on a group of files?
+ 36.8. How do I use a normal mode command from insert mode without
+ leaving the insert mode?
+ 36.9. How do I start Vim in insert mode?
+
+SECTION 37 - UNICODE
+ 37.1. Is it possible to create Unicode files using Vim?
+ 37.2. Which Vim settings are particularly important for editing Unicode
+ files?
+ 37.3. What is the 'encoding' option?
+ 37.4. How does Vim name the various Unicode encodings?
+ 37.5. How does Vim specify the presence or absence of a byte-order
+ mark?
+ 37.6. What is the 'fileencoding' option?
+ 37.7. What is the 'fileencodings' option?
+ 37.8. What is the 'termencoding' option?
+ 37.9. What is the 'bomb' option?
+ 37.10. Where can I find an example of a typical use of all these
+ options?
+ 37.11. How can I insert Unicode characters into a file using Vim?
+ 37.12. How can I know which digraphs are defined and for which
+ characters?
+
+
+=============================================================================
+
+SECTION 1 - GENERAL INFORMATION
+
+
+1.1. What is Vim?
+
+Vim stands for Vi IMproved. It used to be Vi IMitation, but there are so
+many improvements that a name change was appropriate. Vim is a text editor
+which includes almost all the commands from the Unix program "Vi" and a lot
+of new ones. All commands can be given with the keyboard. This has the
+advantage that you can keep your fingers on the keyboard and your eyes on
+the screen. For those who want it, there is mouse support and a GUI version
+with scrollbars and menus.
+
+Vim is an editor, not a word processor. A word processor is used mainly to
+do layout of text. This means positioning it, changing the way it appears
+on output. More often than not, the final document is meant to be printed
+or typeset or what have you, in order to present it in a pleasing manner to
+others. Examples of word processors are Microsoft Word, WordPerfect,
+FrameMaker, and AmiPro.
+
+An editor is simply for entering text. Any typesetting or laying out of the
+document is secondary. With an editor, one's main concern is entering text,
+not making the text look good. Examples of editors other than Vim and Vi
+are Emacs, Crisp, Brief, and xedit. And Notepad.
+
+For more information, read
+
+ :help intro
+
+
+1.2. Who wrote Vim?
+
+Most of Vim was written by Bram Moolenar, with contributions from too many
+people to mention here. See ":h credits" for a complete list.
+
+Vim is based on Stevie, worked on by Tim Thompson, Tony Andrews and G.R.
+(Fred) Walter.
+
+For more information, read
+
+ :help author
+
+
+1.3. Is Vim compatible with Vi?
+
+Yes. Vim is very much compatible with Vi. You can use the "-C"
+command-line flag to start Vim in Vi compatible mode:
+
+ $ vim -C
+
+You can also use:
+
+ $ vim -u NONE
+
+You can also set the 'compatible' option to enable Vi compatibility:
+
+ :set compatible
+
+For more information, read
+
+ :help -C
+ :help 'compatible'
+ :help compatible-default
+
+
+1.4. What are some of the improvements of Vim over Vi?
+
+A short summary of the improvements of Vim over vi is listed below. The
+list shows that Vim is a thoroughly modern and feature-packed editor.
+Standard features of modern editors are implemented, and there is an equal
+emphasis on general power-user features and features for programmers.
+
+Features to modernise Vi:
+
+ Multi-level undo
+ Allows you to set the number of times you can undo your changes in a
+ file buffer. You can also redo an undone change.
+ Multiple windows and buffers
+ Each file can be displayed in its own window. You can move easily from
+ one window to another. Each file opened during a Vim session also has
+ an associated buffer and you can easily jump from one to the other.
+ Flexible insert mode
+ Vim allows you to use the arrow keys while in insert mode to move
+ around in the file. No more hitting <Esc>, moving around, then hitting
+ `i' or `a'.
+ Macros
+ Vim has a facility which allows you to record a sequence of typed
+ characters and repeat them any number of times.
+ Visual mode
+ You can highlight sections of text and execute operations on this
+ section of text only.
+ Block operators
+ Allow selection and highlighting of rectangular blocks of text in
+ order do execute specific operations on them.
+ Online help system
+ You can easily find help on any aspect of using Vim. Help is displayed
+ in its own window.
+ Command-line editing and history
+ History allows you to use the arrow keys to repeat or search for a
+ command that has already been typed. Allows you to match the beginning
+ of a command with the beginning of another similar command in the
+ history buffer. You can also edit a command to correct typos or change
+ a few values.
+ Command line completion.
+ Using the <Tab> key, you can complete commands, options, filenames,
+ etc. as needed.
+ Horizontal scrolling.
+ Long lines can be scrolled horizontally (with or without the GUI).
+
+Advanced user features:
+
+ Text formatting.
+ With two keystrokes, you can format large sections of text, without
+ the use of external programs.
+ Word completion in Insert mode
+ Vim can complete words while you are typing, by matching the current
+ word with other similar words in the file.
+ Jump tags
+ Just like in an internet browser, you can jump back to previous parts
+ of the text you were editing, and then forward again. Your brain is
+ thus free to edit instead of navigate.
+ Automatic commands
+ Commands automatically executed when reading or writing a file,
+ jumping to another buffer, etc.
+ Viminfo
+ Allows storing of the command line history, marks and registers in a
+ file to be read on startup. Therefore, you can recall old search
+ patterns, macros, etc., in a new Vim session.
+ Mouse support
+ The mouse is supported in an xterm and for MS-DOS. It can be used to
+ position the cursor, select the visual area, paste a register, etc.
+ Graphical User Interface (GUI)
+ Just like any modern editor. Also, it's very easy to add your own
+ menus. Of course, console vim is still supported, and very widely
+ used.
+ Scripting language
+ Vim has a powerful scripting language so new commands can be created.
+ You can also use Perl, Python, TCL and Ruby to achieve the same thing!
+ Plugins
+ Extra functionality implemented via vim commands (regular commands or
+ the scripting language) that is automatically loaded on startup.
+ Examples: file explorer, network editing. More are being developed
+ and shared on VimOnline all the time.
+ Syntax highlighting for many programming languages
+ Syntax highlighting for hundreds of programming languages is
+ supported. Support for others can be added.
+ Extended regular expressions
+ Vim supports extended regular expressions which are similar in
+ functionality to that of perl regular expressions.
+
+Programming performance features:
+
+ Edit-compile-edit speedup
+ You can compile within Vim and automatically jump to the location of
+ errors in the source code.
+ Indenting for many programming languages
+ C, C++, Java, Perl, XML and many other languages can be automatically
+ indented by vim while you type. Support for others can be added.
+ Searching for words in include files
+ Vim allows you to search for a match of the word under the cursor in
+ the current and included files.
+ Advance text objects
+ Instantly select, or delete, or copy, or indent, or format, or change
+ case, or ... to all the text between ( and ), or { and }, or < and >,
+ or [ and ]. Or a word, sentence, or paragraph. Very powerful.
+ Folding
+ Certain parts of the text can be "folded" away. The best example is
+ the body of a function. You can get an overview of the code, and then
+ open the fold of the function whose detail you need to see.
+ ctags and cscope integration
+ Using these two powerful programs, you can jump to a definition of a
+ function from a calling instance of it, and use other tricks to
+ navigate source code.
+
+For more information, read
+
+ :help vi-differences
+
+
+1.5. Is Vim free?
+
+Vim is Charityware. There are no restrictions on using or copying Vim, but
+the author encourages you to make a donation to charity. A document
+explaining how to do so is included in the distribution.
+
+For more information, read
+
+ :help copyright
+
+
+=============================================================================
+
+SECTION 2 - RESOURCES
+
+
+2.1. Where can I learn more about Vim?
+
+You can post your Vim questions to the vim@vim.org mailing list. You can
+post your Vim development related questions to the vim-dev@vim.org mailing
+list. Vim does not have a newsgroup of its own. But the appropriate
+newsgroup to post to is comp.editors.
+
+"VimOnline" is a web page that serves as a de facto homepage for vim,
+although the main purpose of it is to gather tips and scripts from
+everywhere. Get involved! The URL is vim.sourceforge.net or vim.sf.net.
+
+Finally, read the Vi FAQ:
+
+ http://www.faqs.org/faqs/editor-faq/vi/part1/index.html
+
+For more information, read
+
+ :help mail-list
+ :help internet
+
+
+2.2. Is there a mailing list available?
+
+There are several:
+
+ NAME DESCRIPTION
+
+ vim-announce Announcements of new releases
+ vim General discussion
+ vim-dev Patches, bug reports, development discussions
+ vim-mac Macintosh discussion
+ vim-fr General discussion in French
+ vim-multibyte Multibyte development issues
+ vim-vms Development on VMS
+
+Of these, only vim and vim-dev are of general interest. vim-announce is
+read-only to most people, and its messages are sent to the other lists as
+well. The remaining four are very low volume.
+
+To subscribe: send an email to <NAME>-subscribe@vim.org
+To unsubscribe: send an email to <NAME>-unsubscribe@vim.org
+To get help: send an email to <NAME>-help@vim.org
+
+
+2.3. Is there an archive available for the Vim mailing lists?
+
+Yes. Visit http://www.yahoogroups.com/list/<name>, where name is one of:
+vimannounce, vim, vimdev, vim-fr, vim-mac, vim-multibyte, vim-vms.
+
+Alternatively, visit www.gmane.org to find out about GMANE, which allows
+you to access the mailing lists as though they were newsgroups. This
+offers some convenience to those who wish to browse the history or casually
+observe the current threads.
+
+
+2.4. Where can I get the Vim user manual in HTML/PDF/PS format?
+
+You can download the HTML/PDF/PS format of the Vim user manual from:
+
+ http://vimdoc.sourceforge.net/
+
+
+2.5. I have a "xyz" (some) problem with Vim. How do I determine it is a
+ problem with my setup or with Vim?
+
+First, you have to determine that the problem is not with your .vimrc or
+.gvimrc or system vimrc or your personal plugin files or in any of your
+setup files. To do this, use
+
+ $ vim -N -u NONE -U NONE
+
+This will start Vim in 'nocompatible" mode and will not source your
+personal .vimrc and .gvimrc files. It will also not load your personal
+plugins. In this invocation of Vim, try to reproduce your problem. If you
+are not able to reproduce the problem, then the problem is related to some
+setting in one of your local setup files or plugins. To locate the problem
+in your setup files, you have to use trial and error and try commenting out
+the lines in your setup files one by one. You can also use the -V command
+line argument to Vim to get more debug information and analyze the problem:
+
+ $ vim -V2
+
+You can increase the value passed to the -V argument to get more debug
+information.
+
+For more information, read
+
+ :help -u
+ :help -U
+ :help -N
+ :help -V
+ :help 'verbose'
+ :help :verbose
+ :help set-verbose
+
+
+2.6. Where can I report bugs?
+
+First collect the required information using the following command:
+
+ :source $VIMRUNTIME/bugreport.vim
+
+Now send the resulting text from the above command to the bugs@vim.org
+e-mail address.
+
+The Vim Development mailing list (see above) is a good place to discuss
+general bugs. If the bug you find is with syntax highlighting or some
+other "added feature" (i.e. not directly programmed into vim), attempt to
+inform the maintainer of that feature.
+
+For more information, read
+
+ :help bug-reports
+
+
+2.7. Where can the FAQ be found?
+
+The FAQ can be found at VimOnline (vim.sf.net). Other places will be
+decided in the future.
+
+
+2.8. What if I don't find an answer in this FAQ?
+
+This FAQ covers mainly Vim-specific questions. You may find more
+information suitable for most Vi clones by reading the Vi FAQ. It is posted
+regularly on comp.editors. You can also find a copy at
+
+ http://www.faqs.org/faqs/editor-faq/vi/part1/index.html
+
+Also, since Vim has gathered so many features in the last few years,
+successfully documenting the frequently asked questions here is a
+near-impossible task. To make it possible, please email the maintainer if
+you have a good question. A good question is one that you've tried to
+answer yourself (remember, Vim has great documentation) but struggled.
+
+
+2.9. I have a patch for implementing a Vim feature. Where can I send this
+ patch?
+
+You can send your patches to the Vim developer mailing list
+vim-dev@vim.org.
+
+For more information, read
+
+ :help vim-dev
+
+
+2.10. I have a Vim tip or developed a new Vim
+ syntax/indent/filetype/compiler plugin or developed a new script or a
+ colorscheme. Is there a public website where I can upload this?
+
+Yes. You can use the Vim Online website to upload your plugins/scripts,
+colorschemes, tips, etc. The site is at http://vim.sourceforge.net
+
+
+=============================================================================
+
+SECTION 3 - AVAILABILITY
+
+
+3.1. What is the latest version of Vim?
+
+The latest version of Vim is 6.3 released on 8th June 2004.
+
+The release-history of different versions of Vim is below:
+
+Version 6.3 8th June 2004
+Version 6.2 1st June 2003
+Version 6.1 24th March 2002
+Version 6.0 27th September, 2001
+Version 5.8 31st May, 2001
+Version 5.7 24th June, 2000
+Version 5.6 16th January, 2000
+Version 5.5 21st September, 1999
+Version 5.4 26th July, 1999
+Version 5.3 31st August, 1998
+Version 5.2 24th August, 1998
+Version 5.1 7th April, 1998
+Version 5.0 19th February, 1998
+Version 4.6 13th March,1997
+Version 4.5 17th October, 1996
+Version 4.2 5th July,1996
+Version 4.0 21st May, 1996
+Version 3.0 16th August, 1994
+Version 2.0 21st December, 1993
+Version 1.27 23rd April, 1993
+Version 1.17 21st April, 1992
+
+
+3.2. Where can I find the latest version of Vim?
+
+You can download the sources for the latest version of Vim from the
+VimOnline website. The URL for this site is
+http://vim.sourceforge.net/download.php.
+
+
+3.3. What platforms does it run on?
+
+All Unix platforms.
+All Windows platforms.
+Amiga, Atari, BeOS, DOS, Macintosh, MachTen, OS/2, RiscOS, VMS.
+
+
+3.4. Where can I download the latest version of the Vim runtime files?
+
+You can download the latest version of the Vim runtime files (syntax files,
+filetype plugins, compiler files, color schemes, documentation, indentation
+files and keymaps) from the Vim ftp site from the
+ftp://ftp.vim.org/pub/vim/runtime directory.
+
+
+=============================================================================
+
+SECTION 4 - HELP
+
+
+4.1. How do I use the help files?
+
+Help can be found for all functions of Vim. In order to use it, use the
+":help" command. This will bring you to the main help page. On that first
+page, you will find explanations on how to move around. Basically, you move
+around in the help pages the same way you would in a read-only document.
+You can jump to specific subjects by using tags. This can be done in two
+ways:
+
+ * Use the "<Ctrl-]>" command while standing on the name of a command or
+ option. This only works when the tag is a keyword. "<Ctrl-LeftMouse>"
+ and "g<LeftMouse>" work just like "<Ctrl-]>".
+ * use the ":tag <subject>" command. This works with all characters.
+
+Use "<Ctrl-T>" to jump back to previous positions in the help files. Use
+":q" to close the help window.
+
+If you want to jump to a specific subject on the help pages, use ":help
+{subject}". If you don't know what to look for, try ":help index" to get a
+list of all available subjects. Use the standard search keys to locate the
+information you want. You can abbreviate the ":help" command as ":h".
+
+For more information, read
+
+ :help online-help
+
+
+4.2. How do I search for a keyword in the Vim help files?
+
+You can press the CTRL-D key after typing the help keyword to get a list of
+all the help keywords containing the supplied pattern. You can also use the
+meta characters like *, \+, etc to specify the help search pattern:
+
+ :help init<C-D>
+ :help str*()<C-D>
+ :help '*indent<C-D>
+
+You can press the Tab key after typing a partial help keyword to expand to
+the matching keyword. You can continue to press the Tab key to see other
+keyword matches.
+
+From the help window, you can use the ":tag" command to search for
+keywords. For example,
+
+ :tselect /window
+
+This command will list all the help keywords containing the text "window".
+You can select one from the list and jump to it.
+
+You can use the ":helpgrep" command to search for the given text in all the
+help files. The quickfix window will be opened with all the matching lines.
+
+For more information, read
+
+ :help c_CTRL-D
+ :help c_<Tab>
+ :help :tselect
+ :help :help
+ :help :helpgrep
+
+
+4.3. I am getting an error message E123, what did I do wrong?
+
+You can get more information about the error and the error message using:
+
+ :help E123
+
+For more information, read
+
+ :help error-messages
+
+
+4.4. Where can I read about the various modes in Vim?
+
+You can get information about the different modes in Vim by reading
+
+ :help vim-modes
+
+
+4.5. How do I generate the Vim help tags file after adding a new Vim help
+ file?
+
+You can use the ":helptags" command to regenerate the Vim help tag file.
+For example:
+
+ :cd $VIMRUNTIME/doc
+ :helptags .
+
+For more information, read
+
+ :help :helptags
+ :help add-local-help
+
+
+4.6. Can I use compressed versions of the help files?
+
+Yes. You can compress the help files and still be able to view them with
+Vim. This makes accessing the help files a bit slower and requires the
+"gzip" utility. Follow these steps to compress and use the Vim help files:
+
+- Compress all the help files using "gzip doc/*.txt".
+
+- Edit the "doc/tags" file and change the ".txt" to ".txt.gz" using
+ :%s=\(\t.*\.txt\)\t=\1.gz\t=
+
+- Add the following line to your vimrc:
+ set helpfile={dirname}/help.txt.gz
+
+Where {dirname} is the directory where the help files are. The gzip.vim
+plugin supplied with the standard Vim distribution will take care of
+decompressing the files. You must make sure that $VIMRUNTIME is set to
+where the other Vim files are, when they are not in the same location as
+the compressed "doc" directory.
+
+For more information, read
+
+ :help gzip-helpfile
+ :help 'helpfile'
+ :help gzip
+ :help $VIMRUNTIME
+
+
+=============================================================================
+
+SECTION 5 - EDITING A FILE
+
+
+5.1. How do I load a file in Vim for editing?
+
+There are several ways to load a file for editing. The simplest is to
+use the ":e" (:edit) command:
+
+ :e <filename>
+
+You can also use the ":n" (:next) command to load files into Vim:
+
+ :n <filename(s)>
+
+You can also use the ":args" command to load files into Vim:
+
+ :args <filename(s)>
+
+For more information, read
+
+ :help usr_07
+ :help edit-files
+ :help :edit
+ :help :next_f
+ :help :args_f
+
+
+5.2. How do I save the current file in another name (save as) and edit a
+ new file?
+
+You can use the ":saveas" command to save the current file in another name:
+
+ :saveas <newfilename>
+
+Alternatively, you can also use the following commands:
+
+ :w <newfilename>
+ :edit #
+
+You can also use the ":file" command, followed by ":w" command:
+
+ :file <newfilename>
+ :w
+
+For more information, read
+
+ :help 07.7
+ :help :saveas
+ :help :file_f
+ :help :w
+
+
+5.3. How do I change the current directory to the directory of the current
+ file?
+
+You can use the following command to change the current directory to the
+directory of the current file:
+
+ :cd %:p:h
+
+To automatically change the current directory to the directory of the
+current file, use the following autocmd:
+
+ :autocmd BufEnter * cd %:p:h
+
+For more information, read
+
+ :help :cd
+ :help :lcd
+ :help filename-modifiers
+ :help autocommand
+
+
+5.4. How do I write a file without the line feed (EOL) at the end of the
+ file?
+
+You can turn off the 'eol' option and turn on the 'binary' option to write
+a file without the EOL at the end of the file:
+
+ :set binary
+ :set noeol
+ :w
+
+For more information, read
+
+ :help 'endofline'
+ :help 'binary'
+ :help 23.4
+
+
+5.5. How do I configure Vim to open a file at the last edited location?
+
+Vim stores the cursor position of the last edited location for each buffer
+in the '"' register. You can use the following autocmd in your .vimrc or
+.gvimrc file to open a file at the last edited location:
+
+ au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") |
+ \ exe "normal g'\"" | endif
+
+For more information, read
+
+ :help '"
+ :help last-position-jump
+
+
+5.6. When editing a file in Vim, which is being changed by an external
+ application, Vim opens a warning window (like the confirm dialog) each
+ time a change is detected. How do I disable this warning?
+
+You can set the Vim 'autoread' option to automatically read the file again
+when it is changed outside of Vim:
+
+ :set autoread
+
+You can also use the following autocommand:
+
+ autocmd FileChangedShell *
+ \ echohl WarningMsg |
+ \ echo "File has been changed outside of vim." |
+ \ echohl None
+
+For more information, read
+
+ :help 'autoread'
+ :help FileChangedShell
+ :help timestamp
+ :help :checktime
+
+
+5.7. How do I edit a file whose name is under the cursor?
+
+You can use the gf command to edit a file whose name is under the cursor.
+You can use the CTRL-W f command to edit the file in a new window.
+
+For more information, read
+
+ :help gf
+ :help CTRL-W_f
+ :help 'isfname'
+ :help 'path'
+ :help 'suffixesadd'
+ :help 'includeexpr'
+
+
+5.8. How do I reload/re-edit the current file?
+
+You can use the ":edit" command, without specifying a file name, to reload
+the current file. If you have made modifications to the file, you can use
+":edit!" to force the reload of the current file (you will lose your
+modifications).
+
+For more information, read
+
+ :help :edit
+ :help :edit!
+ :help 'confirm'
+
+
+5.9. How do I autosave a file periodically?
+
+Vim doesn't support auto-saving a file periodically.
+
+For more information, read
+
+ :help 'updatetime'
+ :help CursorHold
+ :help swap-file
+
+
+5.10. How do I open a file in read-only mode?
+
+You can open a file in read-only mode using the ":view" command:
+
+ :view <filename>
+
+This command sets the 'readonly' option for the opened buffer. You can also
+use the "-R" command-line option to open a file in read-only mode:
+
+ $ vim -R <filename>
+
+You can also use the symbolic link executable "view" to open a file in
+read-only mode from the command-line:
+
+ $ view <filename>
+
+For more information, read
+
+ :help 07.6
+ :help 'readonly'
+ :help 'modifiable'
+ :help :view
+ :help :sview
+ :help view
+ :help -R
+ :help -M
+
+
+5.11. How do I open a file for editing without saving the modifications to
+ the current file?
+
+You can open a file for editing without saving the modifications to the
+current file and without losing the changes using one of the following
+methods:
+
+ :split <new_filename>
+ :new <new_filename>
+
+You can also set the 'hidden' option and edit a new file:
+
+ :set hidden
+ : e <new_filename>
+
+If you want to discard the changes made to the current file and load
+another file for editing, then you can use the following command:
+
+ :e! <new_filename>
+
+For more information, read
+
+ :help :edit!_f
+ :help 'hidden'
+ :help :split
+ :help :new
+
+
+=============================================================================
+
+SECTION 6 - EDITING MULTIPLE FILES
+
+
+6.1. How do I open multiple files at once from within Vim?
+
+There are several ways to open multiple files at once from within Vim. You
+can use the ":next" command to specify a group of files:
+
+ :next f1.txt f2.txt
+ :next *.c
+
+You can use the :args command to specify a group of files as arguments:
+
+ :args f1.txt f2.txt
+ :args *.c
+
+After loading the files, you can use the ":next" and ":prev" command to
+switch between the files.
+
+For more information, read
+
+ :help 07.2
+ :help :next
+ :help :args_f
+ :help argument-list
+
+
+6.2. How do I switch between multiple files/buffers in Vim?
+
+There are several ways to switch between multiple files. You can use the
+":buffer" command to switch between multiple files. For example,
+
+ :buffer file1
+ :buffer file2
+
+You can also use the CTRL-^ key to switch between buffers. By specifying a
+count before pressing the key, you can edit the buffer with that number.
+Without the count, you can edit the alternate buffer by pressing CTRL-^
+
+You can also use the ":e #" command to edit a particular buffer:
+
+ :e #5
+
+For more information, read
+
+ :help edit-files
+ :help :buffer
+ :help CTRL-^
+ :help alternate-file
+ :help 22.4
+ :help 07.3
+
+
+6.3. How do I open several files in Vim, with each file in a separate
+ window?
+
+You can use the -o and -O Vim command line arguments to open multiple files
+in separate horizontally or vertically split Vim windows. For example:
+
+ $ vim -o3 f1.txt f2.txt f3.txt
+
+The above command will open the files f1.txt, f2.txt and f3.txt in three
+separate horizontally split Vim windows.
+
+ $ vim -O3 f1.txt f2.txt f3.txt
+
+The above command will open the files f1.txt, f2.txt and f3.txt in three
+separate vertically split Vim windows.
+
+For more information, read
+
+ :help -o
+ :help -O
+ :help startup-options
+
+
+6.4. How do I configure Vim to autoload several files at once similar to
+ "work-sets" or "projects"?
+
+You can use the ":mksession" and the ":mkview" commands to autoload several
+files in Vim.
+
+The ":mksession" command creates a Vim script that restores the current
+editing session. You can use the ":source" command to source the file
+produced by the mksession command.
+
+The ":mkview" command creates a Vim script that restores the contents of
+the current window. You can use the ":loadview" command to load the view
+for the current file.
+
+For more information, read
+
+ :help 21.4
+ :help 21.5
+ :help views-sessions
+ :help 'sessionoptions'
+ :help :mksession
+ :help :source
+ :help v:this_session
+ :help :mkview
+ :help :loadview
+ :help 'viewdir'
+ :help buffers
+
+
+6.5. Is it possible to open multiple top level windows in a single instance
+ of Vim similar to Nedit or emacs?
+
+No. It is currently not possible to open multiple top-level windows in a
+single instance of Vim. This feature is in the todo list.
+
+
+6.6. How do I browse/explore directories from within Vim?
+
+You can use the explorer.vim plugin, supplied with the standard Vim
+installation, to browse/explore directories from within Vim. You can start
+the file explorer using one of the following commands:
+
+ :e <directory>
+ :Explore
+ :SExplore
+
+From the file explorer, you can browse through directories, rename, delete
+and edit files.
+
+For more information, read
+
+ :help file-explorer
+ :help 22.1
+
+
+6.7. How do I edit files over a network using ftp/scp/rcp/http?
+
+You can use the netrw.vim plugin, supplied with the standard Vim package,
+to edit files over a network using ftp/scp/rcp/http. Using this plugin, Vim
+will transparently load and save the files over ftp/scp/rcp/http. For
+example, to edit a file over ftp, you can use the following command:
+
+ $ vim ftp://machine/path
+
+For more information, read
+
+ :help netrw.vim
+
+
+=============================================================================
+
+SECTION 7 - BACKUP
+
+
+7.1. When I edit and save files, Vim creates a file with the same name as
+ the original file and a "~" character at the end. How do I stop Vim
+ from creating this file? (or) How do I disable the Vim backup file
+ feature?
+
+You have set the 'backup' option, so Vim creates a backup file when saving
+the original file. You can stop Vim from creating the backup file, by
+clearing the option:
+
+ :set nobackup
+
+Note that, by default this option is turned off. You have explicitly
+enabled the 'backup' option in one of the initialization files. You may
+also have to turn off the 'writebackup' option:
+
+ :set nowritebackup
+
+For more information, read
+
+ :help 07.4
+ :help backup-table
+ :help 'backup'
+ :help 'writebackup'
+ :help 'backupskip'
+ :help 'backupdir'
+ :help 'backupext'
+ :help 'backupcopy'
+ :help backup
+
+
+7.2. How do I configure Vim to store all the backup files in a particular
+ directory?
+
+You can configure Vim to store all the backup files in a particular
+directory using the 'backupdir' option. For example, to store all the
+backup files in the ~/backup directory, you can use the following command:
+
+ :set backupdir=~/backup
+
+For more information, read
+
+ :help 07.4
+ :help 'backupdir'
+ :help backup
+
+
+7.3. When I save a file with Vim, the file permissions are changed.
+ How do I configure Vim to save a file without changing the file
+ permissions?
+
+This may happen, if the 'backupcopy' option is set to 'no' or 'auto'. Note
+that the default value for this option is set in such a way that this will
+correctly work in most of the cases. If the default doesn't work for you,
+try setting the 'backupcopy' option to 'yes' to keep the file permission
+when saving a file:
+
+ :set backupcopy=yes
+
+This applies, only if you have configured Vim to make a backup whenever
+overwriting a file. By default, Vim will not backup files.
+
+For more information, read
+
+ :help 'backupcopy'
+ :help backup
+ :help 'backup'
+ :help 'writebackup'
+
+
+=============================================================================
+
+SECTION 8 - BUFFERS
+
+
+8.1. I have made some modifications to a buffer. How do I edit another
+ buffer without saving the modified buffer and also without losing the
+ modifications?
+
+You can set the 'hidden' option to edit a file without losing modifications
+to the current file:
+
+ :set hidden
+
+By setting the 'hidden' option, you can also save the modification history
+(undo-history) for the buffer. Otherwise, as you switch between files, the
+undo-history will be lost.
+
+For more information, read
+
+ :help 'hidden'
+ :help hidden-quit
+ :help :hide
+
+
+8.2. How do I configure Vim to auto-save a modified buffer when switching
+ to another buffer?
+
+You can set the 'autowrite' option to auto-save a modified buffer when
+switching to another buffer:
+
+ :set autowrite
+
+For more information, read
+
+ :help 'autowrite'
+ :help 'autowriteall'
+ :help 'hidden'
+
+
+8.3. How do I replace the buffer in the current window with a blank buffer?
+
+You can use the ":enew" command to load an empty buffer in place of the
+buffer in the current window.
+
+For more information, read
+
+ :help :enew
+
+
+8.4. Is there a keyboard shortcut to load a buffer by the buffer number?
+
+You can use the CTRL-^ command to load a buffer by specifying the buffer
+number. For example, to load buffer number 5, you have to use the 5 CTRL-^
+command.
+
+For more information, read
+
+ :help CTRL-^
+
+
+8.5. How do I open all the current buffers in separate windows?
+
+You can use the ":ball" or ":sball" commands to open all the buffers
+in the buffer list:
+
+ :ball
+
+For more information, read
+
+ :help :ball
+
+
+8.6. How do I close (delete) a buffer without exiting Vim?
+
+You can use the ":bdelete" command to delete a buffer without exiting Vim.
+For example:
+
+ :bdelete file1
+
+For more information, read
+
+ :help :bdelete
+ :help :bwipeout
+
+
+8.7. I have several buffers opened with :e filename. How do I close one of
+ the buffers without exiting Vim?
+
+You can use the ":bdelete <buffername>" command to close the buffer.
+
+For more information, read
+
+ :help :bdelete
+ :help :bunload
+ :help :bwipeout
+
+
+8.8. When I use the command ":%bd" to delete all the buffers, not all the
+ buffers are deleted. Why?
+
+In the ":%bd" command, the '%' range will be replaced with the starting and
+ending line numbers in the current buffer. Instead of using '%' as the
+range, you should specify numbers for the range. For example, to delete all
+the buffers, you can use the command ":1,9999bd".
+
+For more information, read
+
+ :help :bd
+
+
+8.9. How do I display the buffer number of the current buffer/file?
+
+You can use 2<CTRL-G> command to display the buffer number for the current
+file/buffer. Note the use of count before the CTRL-G command. If the count
+is greater than 1, then Vim will display the buffer number.
+
+You can also use the following command to display the current buffer
+number:
+
+ :echo bufnr("%")
+
+You can also include the "%n" field to the 'statusline' option to display
+the current buffer number on the statusline.
+
+For more information read,
+
+ :help CTRL-G
+ :help bufnr()
+ :help :echo
+ :help 'statusline'
+
+
+8.10. How do I delete a buffer without closing the window in which the
+ buffer is displayed?
+
+You can use the following command to open the next buffer and delete
+the current buffer.
+
+ :bnext | bdelete #
+
+For more information read,
+
+ :help :bnext
+ :help :bdelete
+ :help :buffers
+
+
+8.11. How do I map the tab key to cycle through and open all the buffers?
+
+You can use the following two map commands, to map the CTRL-Tab key to open
+the next buffer and the CTRL-SHIFT-Tab key to open the previous buffer:
+
+ :nnoremap <C-Tab> :bnext<CR>
+ :nnoremap <S-C-Tab> :bprevious<CR>
+
+For more information read,
+
+ :help :bnext
+ :help :previous
+
+
+=============================================================================
+
+SECTION 9 - WINDOWS
+
+
+9.1. What is the difference between a Vim window and a buffer?
+
+A Vim buffer is a file loaded into memory for editing. The original file
+remains unchanged until you write the buffer to the file. A Vim window is a
+viewport onto a buffer. You can use multiple windows on one buffer or
+several windows on different buffers.
+
+For more information, read
+
+ :help usr_08.txt
+ :help 22.4
+ :help windows-intro
+ :help Q_wi
+
+
+9.2. How do I increase the width of a Vim window?
+
+You can increase the width of a Vim window using one of the following
+commands:
+
+ :vert resize +N
+ :vert resize -N
+ :vert resize N
+
+You can also use CTRL-W < or CTRL-W > or CTRL-W | commands.
+
+For more information, read
+
+ :help vertical-resize
+ :help CTRL-W_>
+ :help CTRL-W_<
+ :help window-resize
+
+
+9.3. How do I zoom into or out of a window?
+
+You can zoom into a window (close all the windows except the current
+window) using the "CTRL-W o" command or the ":only" ex command.
+
+You can use the "CTRL-W _" command or the ":resize" ex command to increase
+the current window height to the highest possible without closing other
+windows.
+
+You can use the "CTRL-W |" command or the ":vertical resize" ex command to
+increase the current window width to the highest possible without closing
+other windows.
+
+You can use the "CTRL-W =" command to make the height and width of all the
+windows equal.
+
+You can also set the following options to get better results with the above
+commands:
+
+Method 1:
+Set the 'winminheight' option to 0:
+
+ :set winminheight=0
+
+By default, this option is set to 1.
+This option controls the minimum height of an inactive window (when it is
+not the current window). When the 'winminheight' option is set to 0, only
+the status line will be displayed for inactive windows.
+
+Method 2:
+Set the 'noequalalways' option and set the 'winheight' option to a large
+value (like 99999):
+
+ :set noequalalways
+ :set winheight=99999
+
+Now, the active window will always open to its maximum size, while the
+other windows will stay present, but shrunken to just a status line.
+
+With any of the above mentioned methods, you cannot restore the window
+layout after zooming into a window. If you want to restore the Vim window
+layout after zooming into a window, you can use the ZoomWin plugin. You can
+download this plugin from the Vim online website at:
+
+http://vim.sourceforge.net/scripts/script.php?script_id=508
+
+For more information, read
+
+ :help CTRL-W_o
+ :help window-resize
+ :help 'winminheight'
+ :help 'equalalways'
+ :help 'winheight'
+ :help 08.3
+
+
+9.4. How do I execute an ex command on all the open buffers or open windows
+ or all the files in the argument list?
+
+You can use the ":bufdo" command to execute an ex command on all the open
+buffers. You can use the ":windo" command to execute an ex command on all
+the open windows. You can use the ":argdo" command to execute an ex
+command on all the files specified in the argument list.
+
+For more information, read
+
+ :help :windo
+ :help :bufdo
+ :help :argdo
+ :help 26.3
+
+
+=============================================================================
+
+SECTION 10 - MOTION
+
+
+10.1. How do I jump to the beginning (first line) or end (last line) of a
+ file?
+
+You can use 'G' command to jump to the last line in the file and the 'gg'
+command to jump to the first line in the file.
+
+For more information, read
+
+ :help G
+ :help gg
+
+
+10.2. In insert mode, when I press the <Esc> key to go to command mode, the
+ cursor moves one character to the left (except when the cursor is on
+ the first character of the line). Is it possible to change this
+ behavior to keep the cursor at the same column?
+
+No. It is not possible to change this behavior. The cursor is *always*
+positioned on a valid character (unless you have virtual-edit mode
+enabled). So, if you are appending text to the end of a line, when you
+return to command mode the cursor *must* drop back onto the last character
+you typed. For consistency sake, the cursor drops back everywhere, even if
+you are in the middle of a line.
+
+You can use the CTRL-O command in insert mode to execute a single ex
+command and return back to insert mode without moving the cursor column.
+
+For more information, read
+
+ :help 'virtual'
+ :help i_CTRL-O
+
+
+10.3. How do I configure Vim to maintain the horizontal cursor position when
+ scrolling with the <Page Up>, <Page Down>, etc keys?
+
+You can reset the 'startofline' option to keep the cursor at the same
+horizontal location when scrolling text:
+
+ :set nostartofline
+
+For more information, read
+
+ :help 'startofline'
+
+
+10.4. Some lines in a file are more than the screen width and they are all
+ wrapped. When I use the j, k keys to move from one line to the next,
+ the cursor is moved to the next line in the file instead of the next
+ line on the screen. How do I move from one screen line to the next?
+
+You can use the gj and gk commands to move from one screen line to the
+next/previous screen line. The j and k commands move the cursor from one
+file line to the next file line. You can also avoid the line wrapping by
+resetting the 'wrap' option:
+
+ :set nowrap
+
+For more information, read
+
+ :help gj
+ :help gk
+ :help 'wrap'
+
+You can use the following mappings:
+
+ :map <Up> gk
+ :imap <Up> <C-o>gk
+ :map <Down> gj
+ :imap <Down> <C-o>gj
+
+
+10.5. What is the definition of a sentence, paragraph and section in Vim?
+
+A sentence is defined as ending at a '.', '!' or '?' followed by either the
+end of a line, or by a space (or two) or tab. Which characters and the
+number of spaces needed to constitute a sentence ending is determined by
+the 'joinspaces' and 'cpoptions' options.
+
+A paragraph begins after each empty line, and also at each of a set of
+paragraph macros, specified by the pairs of characters in the 'paragraphs'
+option.
+
+A section begins after a form-feed (<C-L>) in the first column and at each
+of a set of section macros, specified by the pairs of characters in the
+'sections' option.
+
+For more information, read
+
+ :help sentence
+ :help 'joinspaces'
+ :help 'cpoptions' | /^\s*j\>
+ :help paragraph
+ :help section
+ :help word
+
+
+10.6. How do I jump to beginning or end of a sentence, paragraph or a
+ section?
+
+You can use the following motion commands to jump to the beginning or end
+of a sentence or a paragraph or a section:
+
+ motion position where
+ ( beginning current sentence
+ ) end current sentence
+ { beginning current paragraph
+ } end current paragraph
+ [] end previous section
+ [[ beginning current section
+ ][ end current section
+ ]] beginning next section
+
+Each of these motions can be preceded by a number which will extend the
+jump forward (or backward).
+
+For more information, read
+
+ :help object-motions
+
+
+10.7. I have lines in a file that extends beyond the right extent of the
+ screen. How do I move the Vim view to the right to see the text off
+ the screen?
+
+You can use one of the following commands to horizontally scroll the screen
+to the left or right:
+
+ zl - scroll to the left
+ zh - scroll to the right
+ zL - scroll half a screenwidth to the left
+ zH - scroll half a screenwidth to the right
+ zs - scroll to position the cursor at the start of the screen
+ ze - scroll to position the cursor at the end of the screen
+
+You can use the g0 command to move the cursor to the first character of the
+screen line and the g$ command to move the cursor to the last character of
+the screen line without scrolling the screen.
+
+For more information, read
+
+ :help scroll-horizontal
+
+
+10.8. How do I scroll two or more buffers simultaneously?
+
+You can set the "scrollbind" option for each of the buffer to scroll them
+simultaneously.
+
+For more information, read
+
+ :help 'scrollbind'
+ :help scroll-binding
+ :help 'scrollopt'
+
+
+10.9. When I use my arrow keys, Vim changes modes, inserts weird characters
+ in my document but doesn't move the cursor properly. What's going on?
+
+There are a couple of things that could be going on: either you are using
+Vim over a slow connection or Vim doesn't understand the key sequence that
+your keyboard is generating.
+
+If you are working over a slow connection (such as a 2400 bps modem), you
+can try to set the 'timeout' or 'ttimeout' option. These options, combined
+with the 'timeoutlen' and 'ttimeoutlen' options, may fix the problem.
+
+The preceding procedure will not work correctly if your terminal sends key
+codes that Vim does not understand. In this situation, your best option is
+to map your key sequence to a matching cursor movement command and save
+these mappings in a file. You can then ":source" the file whenever you work
+from that terminal.
+
+For more information, read
+
+ :help 'timeout'
+ :help 'ttimeout'
+ :help 'timeoutlen'
+ :help 'ttimeoutlen'
+ :help :map
+ :help vt100-cursor-keys
+
+
+10.10. How do I configure Vim to move the cursor to the end of the previous
+ line, when the left arrow key is pressed and the cursor is currently
+ at the beginning of a line?
+
+You can add the '<' flag to the 'whichwrap' option to configure Vim to move
+the cursor to the end of the previous line, when the left arrow key is
+pressed and the cursor is currently at the beginning of a line:
+
+ :set whichwrap+=<
+
+Similarly, to move the cursor the beginning of the next line, when the
+right arrow key is pressed and the cursor is currently at the end of a
+line, add the '>' flag to the 'whichwrap' option:
+
+ :set whichwrap+=>
+
+The above will work only in normal and visual modes. To use this in insert
+and replace modes, add the '[' and ']' flags respectively.
+
+For more information, read
+
+ :help 'whichwrap'
+ :help 05.7
+
+
+10.11. How do I configure Vim to stay only in insert mode (modeless
+ editing)?
+
+You can set the 'insertmode' option to configure Vim to stay only in insert
+mode:
+
+ :set insertmode
+
+By setting this option, you can use Vim as a modeless editor. If you press
+the <Esc> key, Vim will not go to the normal mode. To execute a single
+normal mode command, you can press CTRL-O followed by the normal mode
+command. To execute more than one normal command, you can use CTRL-L
+followed by the commands. To return to insert mode, press the <Esc> key. To
+disable this option, reset the 'insertmode' option:
+
+ :set noinsertmode
+
+You can also start vim using the "evim" command or you can use "vim -y" to
+use Vim as a modeless editor.
+
+You can also start Vim in insert mode using the ":startinsert" ex command.
+
+For more information, read
+
+ :help 'insertmode'
+ :help :startinsert
+ :help :stopinsert
+ :help i_CTRL-O
+ :help i_CTRL-L
+ :help evim
+ :help evim-keys
+
+
+10.12. How do I display some context lines when scrolling text?
+
+You can set the 'scrolloff' option to display a minimal number of screen
+lines (context) above and below the cursor.
+
+ :set scrolloff=10
+
+For more information, read
+
+ :help 'scrolloff'
+ :help 'sidescrolloff'
+
+
+10.13. How do I go back to previous cursor locations?
+
+You can go back to the cursor location before the latest jump using the ''
+or `` command. You can use the CTRL-O command to go back to older cursor
+positions and the CTRL-I command to go to the newer cursor positions in the
+jump list.
+
+For more information, read
+
+ :help 03.10
+ :help mark-motions
+ :help jump-motions
+
+
+=============================================================================
+
+SECTION 11 - SEARCHING TEXT
+
+
+11.1. After I searched for a text with a pattern, all the matched text
+ stays highlighted. How do I turn off the highlighting
+ temporarily/permanently?
+
+The 'hlsearch' option controls whether all the matches for the last
+searched pattern are highlighted or not. By default, this option is not
+enabled. If this option is set in a system-wide vimrc file, then you can
+turn off the search highlighting by using the following command:
+
+ :set nohlsearch
+
+To temporarily turn off the search highlighting, use
+
+ :nohlsearch
+
+You can also clear the search highlighting, by searching for a pattern that
+is not in the current file (for example, search for the pattern 'asdf').
+
+For more information, read
+
+ :help 'hlsearch'
+ :help :nohlsearch
+
+
+11.2. How do I enter a carriage return character in a search pattern?
+
+You can either use '\r' or <CTRL-V><CTRL-M> to enter a carriage return
+character in a pattern. In Vim scripts, it is better to use '\r' for the
+carriage return character.
+
+For more information, read
+
+ :help sub-replace-special
+
+
+11.3. How do I search for the character ^M?
+
+You can enter the ^M character in a search command by first pressing the
+CTRL-V key and then pressing the CTRL-M key.
+
+ /^V^M
+
+You can also use the "\r" character. In Vim scripts, "\r" is preferred.
+
+For more information, read
+
+ :help c_CTRL-V
+ :help using_CTRL-V
+ :help /\r
+
+
+11.4. How can I search/replace characters that display as '~R', '~S', etc.?
+
+You can use the 'ga' command to display the ASCII value/code for the
+special character. For example, let us say the ASCII value is 142. Then you
+can use the following command to search for the special character:
+
+ /^V142
+
+where, ^V is entered by pressing CTRL-V.
+
+For more information, read
+
+ :help ga
+ :help using_CTRL_V
+ :help 24.8
+
+
+11.5. How do I highlight all the non-printable characters in a file?
+
+You can use the following commands and search pattern to highlight all the
+non-printable characters in a file:
+
+ :set hlsearch
+ /\(\p\|$\)\@!.
+
+For more information, read
+
+ :help /\p
+ :help /bar
+ :help /$
+ :help /\(
+ :help /\@!
+ :help 'hlsearch'
+
+
+11.6. How do I search for whole words in a file?
+
+You can search for whole words in a file using the \< and \> atoms. For
+example:
+
+ /\<myword\>
+
+The \< atom matches the beginning of the word and the \> atom matches the
+end of the word.
+
+For more information, read
+
+ :help /\<
+ :help /\>
+
+
+11.7. How do I search for the current word under the cursor?
+
+You can press the * key to search forward for the current word under the
+cursor. To search backward, you can press the # key. Note that only whole
+keywords will be searched using these commands.
+
+For more information, read
+
+ :help star
+ :help #
+ :help g*
+ :help g#
+ :help 03.8
+ :help search-commands
+
+
+11.8. How do I search for a word without regard to the case (uppercase or
+ lowercase)?
+
+To always ignore case while searching for a pattern, set the 'ignorecase'
+option:
+
+ :set ignorecase
+
+To ignore case only when searching a particular pattern, use the special \c
+directive:
+
+ /\c<pattern>
+
+For more information, read
+
+ :help 'ignorecase'
+ :help /ignorecase
+ :help /\c
+
+
+11.9. How do I search for words that occur twice consecutively?
+
+You can use one of the following search commands to locate words that occur
+twice consecutively:
+
+ /\(\<\w\+\)\_s\+\1\>
+ /\(\<\k\+\)\_s\+\1\>
+
+The main difference is the use of '\w' and '\k', where the latter is based
+on the 'iskeyword' option which may include accented and other language
+specific characters.
+
+For more information, read
+
+ :help /\1
+ :help /\(
+ :help /\)
+ :help /\<
+ :help /\>
+ :help /\w
+ :help /\k
+ :help /\+
+ :help /\_x
+ :help 'iskeyword'
+
+
+11.10. How do I count the number of times a particular word occurs in a
+ buffer?
+
+You can use the following set of commands to count the number of times a
+particular word occurs in a buffer:
+
+ :let cnt=0
+ :g/\<your_word\>/let cnt=cnt+1
+ :echo cnt
+
+This only counts the number of lines where the word occurs. You can also
+use the following command:
+
+ :%s/\<word\>/&/g
+
+To count the number of alphabetic words in a file, you can use
+
+ :%s/\a\+/&/g
+
+To count the number of words made up of non-space characters, you can use
+
+ :%s/\S\+/&/g
+
+For more information, read
+
+ :help count-items
+ :help word-count
+ :help v_g_CTRL-G
+ :help 12.5
+
+
+11.11. How do I place the cursor at the end of the matched word when
+ searching for a pattern?
+
+You can use the 'e' offset to the search command to place the cursor at the
+end of the matched word. For example
+
+ /mypattern/e
+
+For more information about search offsets, read
+
+ :help search-offset
+ :help /
+
+
+11.12. How do I search for an empty line?
+
+You can search for an empty line using:
+
+ /^$
+
+ or
+
+ /^\s*$
+
+For more information, read
+
+ :help /^
+ :help /$
+ :help /\s
+ :help /*
+ :help search-commands
+
+
+11.13. How do I search for a line containing only a single character?
+
+You can search for a line containing only a single character using:
+
+ /^\s*\a\s*$
+
+For more information, read
+
+ :help /^
+ :help /\a
+ :help /\s
+ :help /*
+ :help /$
+
+
+11.14. How do I search and replace a string in multiple files?
+
+You can use the 'argdo' or 'bufdo' or 'windo' commands to execute an ex
+command on multiple files. For example:
+
+ :argdo %s/foo/bar/g
+
+For more information, read
+
+ :help :argdo
+ :help :bufdo
+ :help :windo
+
+
+11.15. I am using the ":s" substitute command in a mapping. When a search
+ for a pattern fails, the map terminates. I would like the map to
+ continue processing the next command, even if the substitute command
+ fails. How do I do this?
+
+You can use the 'e' flag to the substitute command to continue processing
+other commands in a map, when a pattern is not found.
+
+For more information, read
+
+ :help :s_flags
+
+
+11.16. How do I search for the n-th occurrence of a character in a line?
+
+To search for the n-th occurrence of a character in a line, you can prefix
+the 'f' command with a number. For example, to search for the 5th
+occurrence of the character @ in a line, you can use the command 5f@. This
+assumes the cursor is at the beginning of the line - and that this first
+character is not the one your are looking for.
+
+For more information, read
+
+ :help f
+ :help F
+ :help t
+ :help T
+ :help ;
+ :help ,
+
+
+11.17. How do I replace a tab (or any other character) with a hard return
+ (newline) character?
+
+You can replace a tab (or any other character) with a hard return (newline)
+character using the following command:
+
+ :s/\t/\r/
+
+Note that in the above command, if you use \n instead of \r, then the tab
+characters will not be replaced by a new-line character.
+
+For more information, read
+
+ :help sub-replace-special
+ :help NL-used-for-Nul
+ :help CR-used-for-NL
+
+
+11.18. How do I search for a character by its ASCII value?
+
+You can search for a character by its ASCII value by pressing CTRL-V
+followed by the decimal or hexadecimal or octal value of that character in
+the search "/" command. To determine the ASCII value of a character you
+can use the ":ascii" or the "ga" command.
+
+For more information, read
+
+ :help i_CTRL-V_digit
+ :help :ascii
+ :help ga
+
+
+11.19. How do I search for long lines?
+
+You can search for long lines or lines containing more than a specific
+number of characters using the Vim regular-expressions in the search
+command. For example, to search for all the lines containing more than 80
+characters, you can use one of the following commands:
+
+ /^.\{80}.*$
+ /^.*\%80c.*$
+
+For more information, read
+
+ :help /\{
+ :help /\%c
+
+
+11.20. How do I display all the lines in the current buffer that contain a
+ specified pattern?
+
+You can use the following command to display all the lines in the current
+buffer that contain a specified pattern:
+
+ :g/<pattern>/p
+
+For example, the following command will display all the lines in the
+current buffer that contain "vim":
+
+ :g/vim/p
+
+If you also want the corresponding line numbers, then you can use the
+following command:
+
+ :g/<pattern>/#
+
+For more information, read
+
+ :help :global
+ :help :print
+ :help :number
+
+
+11.21. How do I search for a text string that spans multiple lines?
+
+You can search for a text string that spans multiple lines using the \_x
+regular expression atom. For example, to search for the text string "Hello
+World", you can use the following search command:
+
+ /Hello\_sWorld
+
+This will match the word "Hello" followed by a newline character and then
+the word "World" at the beginning of the next line. This will also match
+the word "Hello" immediately followed by a space character and then the
+word "World". When searching for the "Hello World" string, to include the
+space characters at the end and beginning of the line, you can use the
+following search command:
+
+ /Hello\_s\+World
+
+For more information, read
+
+ :help 27.8
+ :help pattern-atoms
+ :help /\_
+ :help pattern-searches
+
+
+11.22. How do I search for a pattern within the specified range of lines
+ in a buffer?
+
+You can search for a pattern within a range of lines using the \%>l
+and \%<l regular expression atoms.
+
+For example, to search for the word 'white' between the lines 10 and 30 in
+a buffer, you can use the following command:
+
+ /white\%>10l\%<20l
+
+For more information, read
+
+ :help /\%l
+
+
+=============================================================================
+
+SECTION 12 - CHANGING TEXT
+
+
+12.1. How do I delete all the trailing white space characters (SPACE and
+ TAB) at the end of all the lines in a file?
+
+You can use the ":substitute" command on the entire file to search and
+remove all the trailing white space characters:
+
+ :%s/\s\+$//
+
+For more information, read
+
+ :help :%
+ :help :s
+ :help /\s
+ :help /\+
+ :help /$
+
+
+12.2. How do I replace all the occurrences of multiple consecutive space
+ characters to a single space?
+
+You can use the following command to replace all the occurrences of
+multiple consecutive space characters to a single space:
+
+ :%s/ \{2,}/ /g
+
+For more information, read
+
+ :help :%
+ :help :s
+ :help /\{
+ :help :s_flags
+
+
+12.3. How do I reduce a range of empty lines into one line only?
+
+You can use the following command to reduce a range of empty lines into one
+line only:
+
+ :v/./.,/./-1join
+
+The explanation for this command is below:
+
+ :v/./ Execute the following command for all lines not
+ containing a character (empty lines).
+ ., Use the current line as the start of the range of
+ lines.
+ /./ Use the line containing a character as the last line.
+ -1 Adjust the range of lines to end with the line before
+ the last line.
+ j Join the lines in the range.
+
+Note that this will give an error message if the empty lines are at the end
+of the file. To correct this, you have to add a temporary line at the end
+of the file, execute the command and then remove the temporary line.
+
+For more information, read
+
+ :help :v
+ :help :join
+ :help cmdline-ranges
+ :help collapse
+
+
+12.4. How do I delete all blank lines in a file? How do I remove all the
+ lines containing only space characters?
+
+To remove all blank lines, use the following command:
+
+ :g/^$/d
+
+To remove all lines with only whitespace (spaces or tabs) in them, use the
+following command:
+
+ :g/^\s\+$/d
+
+To remove all the lines with only whitespace, if anything, use the
+following command:
+
+ :g/^\s*$/d
+
+
+12.5. How do I copy/yank the current word?
+
+You can use the "yiw" (yank inner word without whitespace) command or the
+"yaw" (yank a word with whitespace) command to copy/yank the current
+word.
+
+For more information, read
+
+ :help 04.6
+ :help 04.8
+ :help iw
+ :help yank
+ :help text-objects
+ :help objects
+
+
+12.6. How do I yank text from one position to another position within a
+ line, without yanking the entire line?
+
+You can specify a motion command with the yank operator (y) to yank text
+from one position to another position within a line. For example, to yank
+from the current cursor position till the next letter x, use yfx or Fx or
+tx or Tx. To yank till the nth column, use n|. To yank till the next
+occurrence of a 'word', use /word. To do a yank till the nth column on
+another line, first mark the position using the 'ma' command, go to the
+start of the yank position, and then yank till the mark using y`a (note the
+direction of the quote)
+
+For more information, read
+
+ :help yank
+ :help motion.txt
+ :help 4.6
+
+
+12.7. When I yank some text into a register, how do I append the text to
+ the current contents of the register?
+
+When you specify the register for some operation, if you use the upper-case
+for the register name, then the new text will be appended to the existing
+contents. For example, if you have some text in the register "a". If you
+want to append some new text to this, you have to use the "A" register
+name. If you use the lowercase register name, then the contents of the
+register will be overwritten with the new text.
+
+For more information, read
+
+ :help quote
+ :help quote_alpha
+ :help 10.1
+
+
+12.8. How do I yank a complete sentence that spans over more than one line?
+
+To yank a complete sentence that spans over more than one line you have to
+use the yank operator followed by a motion command. For example:
+
+ y)
+
+From inside the sentence you can use 'yi)' to yank the sentence.
+
+For more information, read
+
+ :help yank
+ :help {motion}
+ :help object-motions
+ :help 4.6
+
+
+12.9. How do I yank all the lines containing a pattern into a buffer?
+
+You can use the ":global" command to yank all the lines containing the
+pattern into a register and then paste the contents of the register into
+the buffer:
+
+ :let @a=''
+ :g/mypattern/y A
+
+The first command, clears the contents of the register "a". The second
+command copies all the lines containing "mypattern" into the register "a".
+Note that the capital letter "A" is used to append the matched lines. Now
+you can paste the contents of register "a" to a buffer using "ap command.
+For more information, read
+
+ :help :g
+ :help :y
+ :help let-register
+ :help quote_alpha
+ :help put
+ :help registers
+ :help :registers
+
+
+12.10. How do I delete all the lines in a file that does not contain a
+ pattern?
+
+You can use ":v" command to delete all the lines that does not contain a
+pattern:
+
+ :v/pattern/d
+
+or
+
+ :g!/pattern/d
+
+For more information, read
+
+ :help :v
+ :help :g
+
+
+12.11. How do I add a line before each line with "pattern" in it?
+
+You can use the following command to add a line before each line with
+"pattern" in it:
+
+ :g/pattern/normal Oi<line of text goes here>
+
+Alternatively you can yank the line using the Y command and then insert the
+line using the following command:
+
+ :g/pattern/put!
+
+For more information, read
+
+ :help :g
+ :help :put
+ :help insert
+ :help 0
+
+
+12.12. Is there a way to operate on a line if the previous line contains a
+ particular pattern?
+
+You can use the ":global" command to operate on a line, if the previous
+line contains a particular pattern:
+
+ :g/<pattern>/+{cmd}
+
+For more information, read
+
+ :help :g
+ :help :range
+
+
+12.13. How do I execute a command on all the lines containing a pattern?
+
+You can use the ":global" (:g) command to execute a command on all the
+lines containing a pattern.
+
+ :g/my pattern/d
+
+If you want to use a non-Ex command, then you can use the ":normal"
+command:
+
+ :g/my pattern/normal {command}
+
+Unless you want the normal mode commands to be remapped, consider using a
+":normal!" command instead (note the "!").
+
+For more information, read
+
+ :help :global
+ :help :v
+ :help :normal
+
+
+12.14. Can I copy the character above the cursor to the current cursor
+ position?
+
+In Insert mode, you can copy the character above the cursor to the current
+cursor position by typing <Ctrl-Y>. The same can be done with the
+characters below the cursor by typing <Ctrl-E>.
+
+For more information, read
+
+ :help i_CTRL-Y
+ :help i_CTRL-E
+
+
+12.15. How do I insert a blank line above/below the current line without
+ entering insert mode?
+
+You can use the ":put" ex command to insert blank lines. For example, try
+
+ :put =''
+ :put! =''
+
+For more information, read
+
+ :help :put
+
+
+12.16. How do I insert the name of current file into the current buffer?
+
+There are several ways to insert the name of the current file into the
+current buffer. In insert mode, you can use the <C-R>% or the
+<C-R>=expand("%") command. In normal mode, you can use the ":put =@%"
+command.
+
+For more information, read
+
+ :help i_CTRL-R
+ :help expand()
+ :help !!
+
+
+12.17. How do I insert the contents of a Vim register into the current
+ buffer?
+
+In insert mode, you can use the <C-R><register> command to insert the
+contents of <register>. For example, use <C-R>a to insert the contents
+of register "a" into the current buffer.
+
+In normal mode, you can use the ":put <register>" command to insert the
+contents of <register>. For example, use the ":put d" command to insert
+the contents of register "d" into the current buffer.
+
+For more information, read
+
+ :help i_CTRL-R
+ :help :put
+
+
+12.18. How do I move the cursor past the end of line and insert some
+ characters at some columns after the end of the line?
+
+You can set the "virtualedit" option to move the cursor past the
+end-of-line and insert characters in a column after the end-of-line. To
+start the virtual mode, use
+
+ :set virtualedit=all
+
+For more information, read
+
+ :help 'virtualedit'
+
+
+12.19. How to replace the word under the cursor (say: junk) with
+ "foojunkbar" in Vim?
+
+There are several ways to do this. If the word is the first such word on
+the line, use the following command:
+
+ :exe "s/".expand("<cword>")."/foo&bar/"
+
+Too match specifically you could use a more complex substitution like this:
+
+ :exe 's/\<'.expand("<cword>").'\%>'.(col(".")-1).'c\>/foo&bar/'
+
+You can also use the command: ciwfoo<C-R>"bar<Esc>
+
+For more information, read
+
+ :help :substitute
+ :help expand()
+ :help col()
+ :help /\%c
+
+
+12.20. How do I replace a particular text in all the files in a directory?
+
+You can use the "argdo" command to execute the substitute command on all
+the files specified as arguments:
+
+ :args *
+ :argdo %s/<your_text>/<replacement_text>/ge | update
+
+For more information, read
+
+ :help :args_f
+ :help :argdo
+ :help :s_flags
+
+
+12.21. I have some numbers in a file. How do I increment or decrement the
+ numbers in the file?
+
+You can use the CTRL-A key to increment the number and the CTRL-X key to
+decrement the number. You can also specify the number to
+increment/decrement from the number by specifying a count to the key. This
+works for decimal, octal and hexadecimal numbers. You can change the base
+used by Vim for this operation by modifying the 'nrformats' option.
+
+For more information, read
+
+ :help 26.2
+ :help CTRL-A
+ :help CTRL-X
+ :help 'nrformats'
+
+
+12.22. How do I reuse the last used search pattern in a ":substitute"
+ command?
+
+To reuse the last used search pattern in a ":substitute" command, don't
+specify a new search pattern:
+
+ :s/pattern/newtext/
+ :s//sometext/
+
+In the second ":s" command, as a search pattern is not specified, the
+pattern specified in the first ":s" command 'pattern' will be used.
+
+If you want to change the search pattern but repeat the substitution
+pattern you can use the special right hand side, you can use the tilde
+character:
+
+ :s/newpattern/~/
+
+For more information, read
+
+ :help :s
+ :help :&
+ :help :~
+ :help &
+ :help sub-replace-special
+
+
+12.23. How do I change the case of a string using the ":substitute"
+ command?
+
+You can use special characters in the replacement string for a
+":substitute" command to change the case of the matched string. For
+example, to change the case of the string "MyString" to all uppercase, you
+can use the following command:
+
+ :%s/MyString/\U&/g
+
+To change the case to lowercase, you can use the following command:
+
+ :%s/MyString/\L&/g
+
+To change the case of the first character in all the words in the current
+line to uppercase, you can use the following command:
+
+ :s/\<\(.\)\(\k*\)\>/\u\1\L\2/g
+
+For more information, read
+
+ :help sub-replace-special
+ :help :substitute
+ :help \U
+ :help \L
+ :help \u
+
+
+12.24. How do I enter characters that are not present in the keyboard?
+
+You can use digraphs to enter characters that are not present in the
+keyboard. You can use the ":digraphs" command to display all the currently
+defined digraphs. You can add a new digraph to the list using the
+":digraphs" command.
+
+For more information, read
+
+ :help digraphs
+ :help 'digraphs'
+ :help 24.9
+
+
+12.25. Is there a command to remove any or all digraphs?
+
+No. The digraphs table is defined at compile time. You can only add new
+ones. Adding a command to remove digraphs is on the todo list.
+
+
+12.26. In insert mode, when I press the backspace key, it erases only the
+ characters entered in this instance of insert mode. How do I erase
+ previously entered characters in insert mode using the backspace
+ key?
+
+You can set the 'backspace' option to erase previously entered characters
+in insert mode:
+
+ :set backspace=indent,eol,start
+
+For more information, read
+
+ :help 'backspace'
+ :help i_backspacing
+
+
+12.27. I have a file which has lines longer than 72 characters terminated
+ with "+" and wrapped to the next line. How can I quickly join the
+ lines?
+
+You can use the ":global" command to search and join the lines:
+
+ :g/+$/j
+
+This will, however, only join every second line. A couple of more complex
+examples which will join all consecutive lines with a "+" at the end are:
+
+ :g/*$/,/\(^\|[^+]\)$/j
+ :g/+$/mark a | .,/\(^\|[^+]\)$/s/+$// | 'a,.j
+
+For more information, read
+
+ :help :g
+ :help :j
+ :help :mark
+
+
+12.28. How do I paste characterwise yanked text into separate lines?
+
+You can use the ":put" command to paste characterwise yanked text into new
+lines:
+
+ :put =@"
+
+For more information, read
+
+ :help :put
+ :help quote_=
+
+
+12.29. How do I change the case (uppercase, lowercase) of a word or a
+ character or a block of text?
+
+You can use the "~" command to switch the case of a character.
+
+You can change the case of the word under the cursor to uppercase using the
+"gUiw" or "viwU" command and to lowercase using the "guiw" or "viwu"
+command.
+
+You can switch the case (upper case to lower case and vice versa) of the
+word under the cursor using the "viw~" or "g~iw" command.
+
+You can use the "gUgU" command to change the current line to uppercase and
+the "gugu" command to change the current line to lowercase.
+
+You can use the "g~g~" command to switch the case of the current line. You
+can use the "g~{motion}" or "{Visual}~" commands to switch the case of a
+block of text.
+
+For more information, read
+
+ :help case
+
+
+12.30. How do I enter ASCII characters that are not present in the
+ keyboard?
+
+You can enter ASCII characters that are not present in the keyboard by
+pressing CTRL-V and then the ASCII character number. You can also use
+digraphs to enter special ASCII characters.
+
+For more information, read
+
+ :help i_CTRL-V_digit
+ :help digraphs
+ :help 45.5
+
+
+12.31. How do I replace non-printable characters in a file?
+
+To replace a non-printable character, you have to first determine the ASCII
+value for the character. You can use the ":ascii" ex command or the "ga"
+normal-mode command to display the ASCII value of the character under the
+cursor.
+
+You can enter the non-printable character by entering CTRL-V followed by
+the decimal number 1-255 (with no leading zero), or by x and a hex number
+00-FF, or by an octal number 0-0377 (with leading zero), or by u and a hex
+number 0-FFFF, or by U and a hex number 0-7FFFFFFF
+
+Another alternative is to use the ":digraphs" ex command to display the
+digraphs for all characters, together with their value in decimal and
+alpha. You can enter a non-printable character by entering CTRL-K followed
+by two alphanumeric characters (a digraph).
+
+For more information, read
+
+ :help :ascii
+ :help i_CTRL-V
+ :help i_CTRL-V_digit
+ :help :digraphs
+
+
+12.32. How do I remove duplicate lines from a buffer?
+
+You can use the following user-defined command to remove all the duplicate
+lines from a buffer:
+
+:command -range=% Uniq <line1>,<line2>g/^\%<<line2>l\(.*\)\n\1$/d
+
+Add the above command to your .vimrc file and invoke ":Uniq" to remove all
+the duplicate lines.
+
+
+12.33. How do I prefix all the lines in a file with the corresponding line
+ numbers?
+
+You can prefix the lines with the corresponding line number in several
+ways. Some of them are listed below:
+
+ :%s/^/\=line('.'). ' '
+ :%s/^/\=strpart(line(".")." ", 0, 5)
+ :g/^/exec "s/^/".strpart(line(".")." ", 0, 4)
+
+For more information, read
+
+ :help sub-replace-special
+ :help line()
+ :help expr6
+ :help strpart()
+ :help :execute
+ :help :global
+
+
+12.34. How do I exchange (swap) two characters or words or lines?
+
+You can exchange two characters with the "xp" command sequence. The 'x'
+will delete the character under the cursor and 'p' will paste the just
+deleted character after the character under the cursor. This will result
+in exchanging the two characters.
+
+You can exchange two words with the "deep" command sequence (start with the
+cursor in the blank space before the first word).
+
+You can exchange two lines with the "ddp" command sequence. The 'dd' will
+delete the current line and 'p' will paste the just deleted line after the
+current line. This will result in exchanging the two lines.
+
+All of the above operations will change the " unnamed register.
+
+You can use the ":m +" ex command to exchange two lines without changing the
+unnamed register.
+
+For more information, read
+
+ :help x
+ :help p
+ :help dd
+ :help d
+ :help e
+ :help linewise-register
+ :help quotequote
+ :help :move
+
+
+12.35. How do I change the characters used as word delimiters?
+
+Vim uses the characters specified by the 'iskeyword' option as word
+delimitiers. The default setting for this option is "@,48-57,_,192-255".
+
+For example, to add ':' as a word delimitier, you can use
+
+ :set iskeyword+=:
+
+To remove '_' as a word delimitier, you can use
+
+ :set iskeyword-=_
+
+For more information, read
+
+ :help 'iskeyword'
+ :help word
+
+
+=============================================================================
+
+SECTION 13 - COMPLETION IN INSERT MODE
+
+
+13.1. How do I complete words or lines in insert mode?
+
+In insert mode, you can complete words using the CTRL-P and CTRL-N keys.
+The CTRL-N command searches forward for the next matching keyword.
+The CTRL-P command searches backwards for the next matching keyword.
+
+In insert mode, you can use the CTRL-X CTRL-L command sequence to complete
+lines that starts with the same characters as in the current line before
+the cursor. To get the next matching line, press the CTRL-P or CTRL-N keys.
+There are a lot of other keys/ways available to complete words in insert
+mode.
+
+Vim supports completion of the following items:
+
+ CTRL-X CTRL-F file names
+ CTRL-X CTRL-L whole lines
+ CTRL-X CTRL-D macro definitions (also in included files)
+ CTRL-X CTRL-I current and included files
+ CTRL-X CTRL-K words from a dictionary
+ CTRL-X CTRL-T words from a thesaurus
+ CTRL-X CTRL-] tags
+ CTRL-X CTRL-V Vim command line
+
+For more information, read
+
+ :help 24.3
+ :help ins-completion
+
+
+13.2. How do I complete file names in insert mode?
+
+In insert mode, you can use the CTRL-X CTRL-F command sequence to complete
+filenames that start with the same characters as in the current line before
+the cursor.
+
+For more information, read
+
+ :help compl-filename
+
+
+13.3. I am using CTRL-P/CTRL-N to complete words in insert mode. How do I
+ complete words that occur after the just completed word?
+
+You can use CTRL-X CTRL-N and CTRL-X CTRL-P keys to complete words that are
+present after the just completed word.
+
+For more information, read
+
+ :help i_CTRL-X_CTRL-P
+ :help i_CTRL-X_CTRL-N
+ :help ins-completion
+
+
+=============================================================================
+
+SECTION 14 - TEXT FORMATTING
+
+
+14.1. How do I format a text paragraph so that a new line is inserted at
+ the end of each wrapped line?
+
+You can use the 'gq' command to format a paragraph. This will format the
+text according to the current 'textwidth' setting.
+
+Note that the gq operator can be used with a motion command to operate on a
+range of text. For example:
+
+ gqgq - Format the current line
+ gqap - Format current paragraph
+ gq3j - Format the current and the next 3 lines
+
+For more information, read
+
+ :help gq
+ :help formatting
+ :help usr_25.txt
+ :help motion.txt
+
+
+14.2. How do I format long lines in a file so that each line contains less
+ than 'n' characters?
+
+You can set the 'textwidth' option to control the number of characters that
+can be present in a line. For example, to set the maximum width of a line
+to 70 characters, you can use the following command:
+
+ set textwidth=70
+
+Now to break the long lines in a file to the length defined by the
+'textwidth' option, you can use
+
+ :g/./normal gqq
+
+For more information, read
+
+ :help 'textwidth'
+ :help gq
+
+
+14.3. How do I join short lines to form a paragraph?
+
+First, make sure the 'textwidth' option is set to a high value:
+
+ :set textwidth=99999
+
+Next, join the short lines to form a paragraph using the command:
+
+ 1GgqG
+
+The above command will operate on the entire file. To do the formatting on
+all paragraphs in a specific range, use:
+
+ :'a,'bg/\S/normal gq}
+
+For more information, read
+
+ :help gq
+ :help G
+ :help gqq
+
+
+14.4. How do I format bulleted and numbered lists?
+
+You can configure Vim to format bulleted and numbered lists using the
+'formatoptions' option. For example, you can format the list of the
+following format:
+
+ - this is a test. this is a test. this is a test. this is a test.
+ this is a test.
+
+into this format:
+
+ - this is a test. this is a test. this is a test. this is a test.
+ this is a test.
+
+You can use the 'n' flag in the 'formatoptions' to align the text.
+
+ :set fo+=n
+
+With this option, when formatting text, Vim will recognize numbered lists.
+For this option to work, the 'autoindent' option also must be set.
+
+For more information, read
+
+ :help 'formatoptions'
+ :help fo-table
+ :help format-comments
+
+
+14.5. How do I indent lines in insert mode?
+
+In insert mode, you can press the CTRL-T key to insert one shiftwidth of
+indent at the start of the current line. In insert mode, you can use the
+CTRL-D key to delete on shiftwidth of indent at the start of the current
+line. You can also use the CTRL-O >> and CTRL-O << commands to indent the
+current line in insert mode.
+
+For more information, read
+
+ :help i_CTRL-T
+ :help i_CTRL-D
+ :help i_0_CTRL-D
+ :help i_CTRL-O
+ :help >>
+ :help <<
+
+
+14.6. How do I format/indent an entire file?
+
+You can format/indent an entire file using the gg=G command, where
+
+ gg - Goto the beginning of the file
+ = - apply indentation
+ G - till end of file
+
+For more information, read
+
+ :help gg
+ :help =
+ :help G
+ :help 'formatprg'
+ :help C-indenting
+
+
+14.7. How do I increase or decrease the indentation of the current line?
+
+You can use the '>>' and '<<' commands to increase or decrease the
+indentation of the current line.
+
+For more information, read
+
+ :help shift-left-right
+ :help >>
+ :help <<
+ :help 'shiftwidth'
+
+
+14.8. How do I indent a block/group of lines?
+
+You can visually select the group of lines and press the > or < key to
+indent/unindent the lines. You can also use the following ex-command to
+indent the lines
+
+ :10,20>
+
+For more information, read
+
+ :help shift-left-right
+ :help v_>
+ :help v_<
+ :help :<
+ :help :>
+
+
+14.9. When I indent lines using the > or < key, the standard 8-tabstops are
+ used instead of the current 'tabstop' setting. Why?
+
+The number of spaces used when lines are indented using the ">" operator is
+controlled by the 'shiftwidth' option. The 'tabstop' setting is not used
+for indentation. To change the amount of spaces used for indentation, use
+the command:
+
+ :set shiftwidth=4
+
+For more information, read
+
+ :help 'shiftwidth'
+ :help >>
+ :help 'softtabstop'
+
+
+14.10. How do I turn off the automatic indentation of text?
+
+By default, the automatic indentation of text is not turned on. Check the
+configuration files (.vimrc, .gvimrc) for settings related to indentation.
+Make sure the ":filetype indent on" command is not present. If it is
+present, remove it. Also, depending on your preference, you may also want
+to check the value of the 'autoindent', 'smartindent', 'cindent' and
+'indentexpr' options and turn them off as needed.
+
+For more information, read
+
+ :help :filetype-indent-off
+ :help 'autoindent'
+ :help 'smartindent'
+ :help 'cindent'
+ :help 'indentexpr'
+
+
+14.11. How do I configure Vim to automatically set the 'textwidth' option
+ to a particular value when I edit mails?
+
+You can use the 'FileType' autocommand to set the 'textwidth' option:
+
+ autocmd FileType mail set tw=<your_value>
+
+For more information, read
+
+ :help :autocmd
+ :help FileType
+ :help usr_43.txt
+
+
+14.12. Is there a way to make Vim auto-magically break lines?
+
+Yes. Set the 'textwidth' option to the preferred length for a line. Then
+Vim will auto-magically break the newly entered lines. For example:
+
+ :set textwidth=75
+
+For more information, read
+
+ :help 'textwidth'
+ :help ins-textwidth
+ :help 'formatoptions'
+ :help fo-table
+ :help formatting
+
+
+14.13. I am seeing a lot of ^M symbols in my file. I tried setting the
+ 'fileformat' option to 'dos' and then 'unix' and then 'mac'. None of
+ these helped. How can I hide these symbols?
+
+When a file is loaded in Vim, the format of the file is determined as
+below:
+
+- If all the lines end with a new line (<NL>), then the fileformat is
+ 'unix'.
+- If all the lines end with a carriage return (<CR>) followed by a new line
+ (<NL>), then the fileformat is 'dos'.
+- If all the lines end with carriage return (<CR>), then the fileformat is
+ 'mac'.
+
+If the file has some lines ending with <CR> and some lines ending with <CR>
+followed by a <NL>, then the fileformat is set to 'unix'.
+
+You can change the format of the current file, by modifying the
+'fileformat' option and then saving the file:
+
+ :set fileformat=dos
+ :w
+
+To display the format of the current file, use
+
+ :set fileformat?
+
+The above behavior is also controlled by the 'fileformats' option. You can
+try the following commands:
+
+ :set fileformats+=unix
+ :e <your_file>
+ :set fileformat=unix
+ :w
+
+To remove the carriage return (<CR>) character at the end of all the lines
+in the current file, you can use the following command:
+
+ :%s/\r$//
+
+To force Vim to use a particular file format, when editing a file, you can
+use the following command:
+
+ :e ++ff=dos filename
+
+For more information, read
+
+ :help 'fileformats'
+ :help 'fileformat'
+ :help file-formats
+ :help DOS-format-write
+ :help Unix-format-write
+ :help Mac-format-write
+ :help dos-file-formats
+ :help 23.1
+ :help ++ff
+
+
+14.14. When I paste some text into a Vim buffer from another application,
+ the alignment (indentation) of the new text is messed up. How do I
+ fix this?
+
+The indentation of the text is messed up due to various Vim settings
+related to indentation (like autoindent, smartindent, textwidth etc).
+Before pasting text into Vim, you can set the 'paste' option:
+
+ :set paste
+
+After pasting the text, you can turn off the option using:
+
+ :set nopaste
+
+You can also toggle the paste option using:
+
+ :set paste!
+
+If you can access the clipboard through the * register, then you can paste
+the text without indentation using CTRL-R CTRL-O *.
+
+For more information, read
+
+ :help 'paste'
+ :help 'pastetoggle'
+ :help i_CTRL-R_CTRL_O
+ :help clipboard
+ :help xterm-clipboard
+ :help gui-clipboard
+
+
+14.15. When there is a very long wrapped line (wrap is "on") and a line
+ doesn't fit entirely on the screen it is not displayed at all. There
+ are blank lines beginning with '@' symbol instead of wrapped line. If
+ I scroll the screen to fit the line the '@' symbols disappear and the
+ line is displayed again. What Vim setting control this behavior?
+
+You can set the 'display' option to 'lastline' to display as much as
+possible of the last line in a window instead of displaying the '@'
+symbols.
+
+ :set display=lastline
+
+For more information, read
+
+ :help 'display'
+
+
+14.16. How do I convert all the tab characters in a file to space
+ characters?
+
+You can use the ":retab" command to update all the tab characters in the
+current file with the current setting of 'expandtab' and 'tabstop'. For
+example, to convert all the tabs to white spaces, use
+
+ :set expandtab
+ :retab
+
+For more information, read
+
+ :help :retab
+ :help 'expandtab'
+ :help 'tabstop'
+ :help 25.3
+
+
+14.17. What Vim options can I use to edit text that will later go to a word
+ processor?
+
+You can set the following options to edit text that will later go into a
+word processor:
+
+ :set wrap
+ :set linebreak
+ :set textwidth=0
+ :set showbreak=>>>
+
+You can use the 'gk' and 'gj' commands to move one screen line up and down.
+For more information, read
+
+ :help 'wrap'
+ :help 'linebreak'
+ :help 'textwidth'
+ :help 'showbreak'
+ :help gk
+ :help gj
+
+
+14.18. How do I join lines without adding or removing any space characters?
+
+By default, when you join lines using the "J" or ":join" command, Vim will
+replace the line break, leading white space and trailing white space with a
+single space character. If there are space characters at the end of a line
+or a line starts with the ')' character, then Vim will not add a space
+character.
+
+To join lines without adding or removing any space characters, you can use
+the gJ or ":join!" commands.
+
+For more information, read
+
+ :help gJ
+ :help :join
+ :help J
+ :hep 10.5
+ :help 'joinspaces'
+ :help 'cpoptions'
+ :help 'formatoptions'
+
+
+=============================================================================
+
+SECTION 15 - VISUAL MODE
+
+
+15.1. How do I do rectangular block copying?
+
+You can do rectangular block copying in Vim using the blockwise visual
+mode. To start blockwise visual mode use the CTRL-V key. Move the cursor
+using any of the motion commands and then use the y operator to yank to
+visually selected text.
+
+If CTRL-V does not work as expected, it may have been remapped to CTRL-Q by
+the mswin.vim script which is often sourced by a vimrc on Windows machines
+to mimic some common short cuts from other programs.
+
+For more information, read
+
+ :help 04.4
+ :help blockwise-visual
+ :help visual-mode
+ :help Q_vi
+
+
+15.2. How do I delete or change a column of text in a file?
+
+You can use the Vim block-wise visual mode to select the column of text and
+apply an operator (delete, change, copy, etc) on it.
+
+For more information, read
+
+ :help visual-block
+ :help visual-operators
+
+
+15.3. How do I apply an ex-command on a set of visually selected lines?
+
+When you select a range of lines in visual mode, the < register is set to
+the start of the visual region and the > register is set to the end of the
+visual region. You can use these registers to specify the range for an ex
+command. After visually selecting the lines, press ":" to go to the command
+mode. Vim will automatically insert the visual range '<,'>. You can run
+any ex-command on the visual range.
+
+For more information, read
+
+ :help v_:
+ :help '<
+ :help '>
+
+
+15.4. How do I execute an ex command on a column of text selected in Visual
+ block mode?
+
+All the ex commands operate on whole lines only. If you try to execute an
+ex command on a column of text selected in visual block mode, Vim will
+operate on all the selected lines (instead of the selected columns). You
+can use the vis.vim plugin script from http://vim.sourceforge.net scripts
+archive to do this.
+
+For more information, read
+
+ :help cmdline-ranges
+ :help 10.3
+ :help cmdline-lines
+
+
+15.5. How do I select the entire file in visual mode?
+
+You can select the entire file in visual mode using ggVG.
+
+ gg - go to the beginning of the file.
+ V - Start linewise visual mode
+ G - goto the end of the file.
+
+For more information, read
+
+ :help gg
+ :help linewise-visual
+ :help G
+
+
+15.6. When I visually select a set of lines and press the > key to indent
+ the selected lines, the visual mode ends. How can I reselect the
+ region for further operation? (or) How do I re-select the last
+ selected visual area again?
+
+You can use the 'gv' command to reselect the last selected visual area. You
+can also use the marks '< and '> to jump to the beginning or the end of the
+last selected visual area.
+
+For more information, read
+
+ :help gv
+ :help '<
+ :help '>
+
+
+15.7. How do I jump to the beginning/end of a visually selected region?
+
+You can use the 'o' command to jump to the beginning/end of a visually
+selected region.
+
+For more information, read
+
+ :help v_o
+
+
+15.8. When I select text with mouse and then press : to enter an ex
+ command, the selected text is replaced with the : character. How do I
+ execute an ex command on a text selected using the mouse similar to
+ the text selected using the visual mode?
+
+This will happen if you have configured Vim to use select mode instead of
+Visual mode by setting the 'selectmode' option. Check the value of this
+option:
+
+ :set selectmode?
+
+This mode is known as selectmode and is similar to the visual mode. This
+option is also automatically set when you use the "behave mswin" command.
+Select mode looks like visual mode, but it is similar to the selection mode
+in MS-Windows.
+
+For more information, read
+
+ :help Select-mode
+ :help 'selectmode'
+ :help 9.4
+ :help :behave
+
+
+15.9. When I select a block of text using the mouse, Vim goes into
+ selection mode instead of Visual mode. Why?
+
+The 'selectmode' option controls whether Select mode will be started when
+selecting a block of text using the mouse. To start Visual mode when
+selecting text using mouse, remove the 'mouse' value from the 'selectmode'
+option:
+
+ :set selectmode-=mouse
+
+Note that by default, the 'selectmode' option will be set to empty, so that
+always visual mode is used.
+
+For more information, read
+
+ :help 'selectmode'
+ :help Select-mode
+ :help :behave
+
+
+15.10. How do I visually select the last copy/pasted text?
+
+You can use the '[ and '] marks to visually select the last copy/pasted
+text. The '[ mark is set to the beginning of the last changed/yanked text
+and the '] mark is set to the end of the last changed/yanked text. To
+visually select this block of text use the command '[v']
+
+For more information, read
+
+ :help '[
+ :help ']
+ :help `a
+ :help v
+
+
+=============================================================================
+
+SECTION 16 - COMMAND-LINE MODE
+
+
+16.1. How do I use the name of the current file in the command mode or an
+ ex command line?
+
+In the command line, the '%' character represents the name of the current
+file. In some commands, you have to use expand("%") to get the filename:
+
+ :!perl %
+
+For more information, read
+
+ :help :_%
+ :help cmdline-special
+ :help expand()
+
+
+16.2. How do I edit the text in the Vim command-line effectively?
+
+You can use the command-line window for editing Vim command-line text. To
+open the Vim command-line window use the "q:" command in normal mode. In
+command-line mode, use the CTRL-F key. In this window, the command line
+history will be displayed. You can use normal Vim keys/commands to edit any
+previous/new command line. To execute a command line, press the
+enter/return key.
+
+In a similar vain, the search history can be edited with "q/" and "q?"
+commands.
+
+For more information, read
+
+ :help cmdline-window
+
+
+16.3. How do I switch from Vi mode to Ex mode?
+
+You can use the Q command to switch from Vi mode to Ex mode. To switch from
+Ex mode back to the Vi mode, use the :vi command.
+
+For more information, read
+
+ :help Q
+ :help gQ
+ :help Ex-mode
+ :help :vi
+
+
+16.4. How do I copy the output from an ex-command into a buffer?
+
+To copy the output from an ex-command into a buffer, you have to first get
+the command output into a register. You can use the ":redir" command to get
+the output into a register. For example,
+
+ :redir @a
+ :g/HelloWord/p
+ :redir END
+
+Now the register 'a' will contain the output from the ex command
+"g/HelloWord/p". Now you can paste the contents of the register 'a' into a
+buffer. You can also send or append the output of an ex-command into a file
+using the 'redir' command.
+
+You can prefix the ":global" command with ":silent", to avoid having the
+lines printed to the screen.
+
+To redirect the output from an ex-command to a file, you can use the
+following set of commands:
+
+ :redir > myfile
+ :g/HelloWord/p
+ :redir END
+
+For more information, read
+
+ :help :redir
+ :help :silent
+
+
+16.5. When I press the tab key to complete the name of a file in the
+ command mode, if there are more than one matching file names, then
+ Vim completes the first matching file name and displays a list of all
+ matching filenames. How do I configure Vim to only display the list
+ of all the matching filenames and not complete the first one?
+
+You can modify the 'wildmode' option to configure the way Vim completes
+filenames in the command mode. In this case, you can set the 'wildmode'
+option to 'list':
+
+ :set wildmode=list
+
+For more information, read
+
+ :help 'wildmode'
+
+
+16.6. How do I copy text from a buffer to the command line and from the
+ command line to a buffer?
+
+To copy text from a buffer to the command line, after yanking the text from
+the buffer, use Ctrl-R 0 in the command line to paste the text. You can
+also yank the text to a specific register and use CTRL-R <register> to
+paste the text to the command line. You can use CTRL-R CTRL-W to paste the
+word under the cursor in the command line.
+
+To copy text from the command line into a buffer, you can paste the
+contents of the : register using the ":p command. The most recently
+executed command line is stored in the : register.
+
+Another approach for copying and pasting text to and from the command line
+is to open the command line window using q: from normal mode or CTRL-F from
+the command-line mode. In the command line window you can use all the Vim
+commands to edit the command line.
+
+For more information, read
+
+ :help c_CTRL-R
+ :help quote_:
+ :help cmdline-window
+
+
+16.7. How do I put a command onto the command history without executing it?
+
+To put a command onto the command history without executing it, press the
+<Esc> key to cancel the command.
+
+For more information, read
+
+ :help c_<Esc>
+
+
+16.8. How do I increase the height of the command-line?
+
+You can increase the height of the command-line by changing the 'cmdheight'
+option:
+
+ :set cmdheight=2
+
+For more information, read
+
+ :help 'cmdheight'
+ :help hit-enter
+ :help 05.7
+
+
+=============================================================================
+
+SECTION 17 - VIMINFO
+
+
+17.1. When I invoke Vim, I get error messages about illegal characters in
+ the viminfo file. What should I do to get rid of these messages?
+
+You can remove the $HOME/.viminfo or the $HOME/_viminfo file to get rid of
+these error messages.
+
+For more information, read
+
+ :help viminfo-errors
+ :help viminfo-file-name
+ :help viminfo
+ :help 21.3
+
+
+17.2. How do I disable the viminfo feature?
+
+By default, the viminfo feature is disabled. If the viminfo feature is
+enabled by a system-wide vimrc file, then you can disable the viminfo
+feature by setting the 'viminfo' option to an empty string in your local
+.vimrc file:
+
+ :set viminfo=""
+
+For more information, read
+
+ :help 'viminfo'
+
+
+17.3. How do I save and use Vim marks across Vim sessions?
+
+You can save and restore Vim marks across Vim sessions using the viminfo
+file. To use the viminfo file, make sure the 'viminfo' option is not empty.
+To save and restore Vim marks, the 'viminfo' option should not contain the
+'f' flag or should have a value greater than zero for the 'f' option.
+
+For more information, read
+
+ :help 21.3
+ :help viminfo
+ :help 'viminfo'
+ :help :wviminfo
+ :help :rviminfo
+
+
+=============================================================================
+
+SECTION 18 - REMOTE EDITING
+
+
+18.1. How do I open a file with existing instance of gvim? What happened to
+ the Vim 5.x OpenWithVim.exe and SendToVim.exe files?
+
+Starting with Vim6, the OLE version of OpenWithVim.exe and SendToVim.exe
+Vim utilities are replaced by the new client-server feature. To open the
+file j.txt with an existing instance of Gvim (MyVim), use:
+
+ $ gvim --servername MyVim --remote-silent j.txt
+
+To list the server names of all the currently running Vim instances, use
+
+ $ vim --serverlist
+
+To get more information about client-server feature, read
+
+ :help client-server
+
+
+18.2. How do I send a command to a Vim server to write all buffers to disk?
+
+You can use the Vim remote server functionality to do this:
+
+ $ gvim --servername myVIM --remote-send "<C-\><C-N>:wall<CR>"
+
+For more information, read
+
+ :help client-server
+ :help CTRL-\_CTRL-N
+ :help :wall
+
+
+18.3. Where can I get the documentation about the Vim remote server
+ functionality?
+
+You can get more information about the Vim remote server functionality by
+reading
+
+ :help client-server
+
+
+=============================================================================
+
+SECTION 19 - OPTIONS
+
+
+19.1. How do I configure Vim in a simple way?
+
+You can use the ":options" command to open the Vim option window:
+
+ :options
+
+This window can be used for viewing and setting all the options.
+
+For more information, read
+
+ :help :options
+
+
+19.2. How do I toggle the value of an option?
+
+You can prefix the option with "inv" to toggle the value of the option:
+
+ :set invignorecase
+ :set invhlsearch
+
+You can also suffix the option with "!" to toggle the value:
+
+ :set ignorecase!
+ :set hlsearch!
+
+For more information, read
+
+ :help set-option
+
+
+19.3. How do I set an option that affects only the current buffer/window?
+
+Some of the Vim options can have a local or global value. A local value
+applies only to a specific buffer or window. A global value applies to all
+the buffers or windows.
+
+When a Vim option is modified using the ":set" command, both the global and
+local values for the option are changed. You can use the ":setlocal"
+command to modify only the local value for the option and the ":setglobal"
+command to modify only the global value.
+
+You can use the ":setlocal" command to set an option that will affect only
+the current file/buffer:
+
+ :setlocal textwidth=70
+
+Note that not all options can have a local value. You can use ":setlocal"
+command to set an option locally to a buffer/window only if the option is
+allowed to have a local value.
+
+You can also use the following command to set a option locally:
+
+ :let &l:{option-name} = <value>
+
+For more information, read
+
+ :help :setlocal
+ :help local-options
+
+
+19.4. How do I use space characters for a Vim option value?
+
+To use space characters in a Vim option value, you have to escape the space
+character. For example:
+
+ :set tags=tags\ /usr/tags
+
+For more information, read
+
+ :help option-backslash
+
+
+19.5. Can I add (embed) Vim option settings to the contents of a file?
+
+You can use modelines to add Vim option settings to the contents of a file.
+For example, in a C file, you can add the following line to the top or the
+bottom of the file:
+
+ /* vim:sw=4: */
+
+This will set the 'shiftwidth' option to 4, when editing that C file.
+For this to work, the 'modeline' option should be set. By default, the
+'modeline' option is not set, for security reasons, in Debian. The
+'modelines' settings specifies the number of lines that will be checked for
+the Vim set commands.
+
+For more information, read
+
+ :help 21.6
+ :help modeline
+ :help auto-setting
+ :help 'modeline'
+ :help 'modelines'
+
+
+19.6. How do I display the line numbers of all the lines in a file?
+
+You can set the 'number' option to display the line numbers for all the
+lines.
+
+ :set number
+
+For more information, read
+
+ :help 'number'
+
+
+19.7. How do I change the width of the line numbers displayed using the
+ "number" option?
+
+The width used for displaying the line numbers for the 'number' option is
+hard-coded in Vim. It is not possible to change this width by setting some
+option.
+
+The request and the patch to add an option to change the number of columns
+used for the 'number' option is in the Vim todo list:
+
+ "Add an option to set the width of the 'number' column. Eight
+ positions is often more than needed. Or adjust the width to the length
+ of the file?
+ Add patch that adds 'numberlen' option. (James Harvey)
+ Other patch with min and max from Emmanuel Renieris (2002 Jul 24)
+ Other patch without an option by Gilles Roy (2002 Jul 25)"
+
+
+19.8. How do I display (view) all the invisible characters like space, tabs
+ and newlines in a file?
+
+You can set the 'list' option to see all the invisible characters in your
+file.
+
+ :set list
+
+With this option set, you can view space characters, tabs, newlines,
+trailing space characters and wrapped lines.
+
+To not display the invisible characters (which is the default), you have to
+reset the 'list' option:
+
+ :set nolist
+ (or)
+ :set list!
+
+The ":set list!" command will toggle the current setting of the boolean
+'list' option.
+
+You can modify the 'listchars' option to configure how and which invisible
+characters are displayed. For example, with the following command all the
+trailing space characters will be displayed with a '.' character.
+
+ :set listchars=trail:.
+
+For more information, read
+
+ :help 'listchars'
+ :help 'list'
+
+
+19.9. How do I configure Vim to always display the current line and column
+ number?
+
+You can set the 'ruler' option to display current column and line number in
+the status line:
+
+ :set ruler
+
+For more information, read
+
+ :help 'ruler'
+
+
+19.10. How do I display the current Vim mode?
+
+You can set the 'showmode' option to display the current Vim mode. In
+Insert, Replace and Visual modes, Vim will display the current mode on the
+last line.
+
+ :set showmode
+
+For more information, read
+
+ :help 'showmode'
+
+
+19.11. How do I configure Vim to show pending/partial commands on the
+ status line?
+
+You can set the 'showcmd' option to display pending/partial commands in the
+status line:
+
+ :set showcmd
+
+For more information, read
+
+ :help 'showcmd'
+
+
+19.12. How do I configure the Vim status line to display different
+ settings/values?
+
+You can set the 'statusline' option to display different values/settings in
+the Vim status line.
+
+For more information, read
+
+ :help 'statusline'
+ :help 'laststatus'
+ :help 'rulerformat'
+ :help 'ruler'
+
+
+19.13. How do I configure Vim to display status line always?
+
+You can set the 'laststatus' option to 2 to display the status line always.
+
+ :set laststatus=2
+
+For more information, read
+
+ :help 'laststatus'
+
+
+19.14. How do I make a Vim setting persistent across different Vim
+ invocations/instances/sessions?
+
+To make a Vim option setting persistent across different Vim instances, add
+your setting to the .vimrc or .gvimrc file. You can also use the ":mkvimrc"
+command to generate a vimrc file for the current settings.
+
+For more information, read
+
+ :help save-settings
+ :help vimrc
+ :help gvimrc
+ :help vimrc-intro
+ :help :mkvimrc
+ :help initialization
+
+
+19.15. Why do I hear a beep (why does my window flash) about 1 second after
+ I hit the Escape key?
+
+This is normal behavior. If your window flashes, then you've got the visual
+bell on. Otherwise, you should hear a beep.
+
+Vim needs a timeout to tell the difference between a simple escape and,
+say, a cursor key sequence. When you press a key in normal mode (and even
+in insert mode) and that key is the beginning of a mapping, Vim waits a
+certain amount of time to see if the rest of the mapping sequence follows.
+If the mapping sequence is completed before a given timeout period, the
+mapping for that sequence of keys is applied. If you interrupt the mapping,
+the normal actions associated with the keys are executed.
+
+For example, if you have a mapping defined as ":imap vvv Vim is great!!"
+and you type "vvv" quickly, the "Vim is great!!" will be inserted into your
+text. But if you type "vv v" then that is what will put into your text.
+This is also true if you type "vvv" too slowly where "too slowly" is longer
+than the value for the timeout option. Setting the timeout option to a
+larger value can help alleviate problems that appear when using function
+keys over a slow line.
+
+For more information, read
+
+ :help ttimeout
+
+
+19.16. How do I make the 'c' and 's' commands display a '$' instead of
+ deleting the characters I'm changing?
+
+To make the 'c' and 's' commands display a '$' instead of deleting the
+characters, add the $ flag to the 'cpoptions' option:
+
+ :set cpoptions+=$
+
+For more information, read
+
+ :help 'cpoptions'
+
+
+19.17. How do I remove more than one flag using a single ":set" command
+ from a Vim option?
+
+You can remove more than one flag from a Vim option using a single ":set"
+command, by specifying the flags in exactly the same order as they appear
+in the option. For example, if you use the following command to remove the
+'t' and 'n' flags from the 'formatoptions' option:
+
+ :set formatoptions-=tn
+
+The 't' and 'n' flags will be removed from the 'formatoptions' option, only
+if the 'formatoptions' option contains these flags in this order: 'tn'.
+Otherwise, it will not remove the flags. To avoid this problem, you can
+remove the flags one by one:
+
+ :set formatoptions-=t formatoptions-=n
+
+For more information, read
+
+ :help :set-=
+
+
+=============================================================================
+
+SECTION 20 - MAPPING KEYS
+
+
+20.1. How do I know what a key is mapped to?
+
+To see what a key is mapped to, use the following commands:
+
+ :map <key>
+ :map! <key>
+
+You can also check the mappings in a particular mode using one of the
+":cmap", ":nmap", ":vmap", ":imap", ":omap", etc commands.
+
+For more information, read
+
+ :help map-listing
+ :help map-overview
+
+
+20.2. How do list all the user-defined key mappings?
+
+You can list all the user-defined key mappings using:
+
+ :map
+
+For more information, read
+
+ :help map-listing
+
+
+20.3. How do I unmap a previously mapped key?
+
+You can unmap a previously mapped key using the ":unmap" command:
+
+ :unmap <key>
+ :unmap! <key>
+
+For mode specific mappings, you can use one of the
+":nunmap/:vunmap/:ounmap/:iunmap/:lunmap/:cunmap" commands.
+
+The following command will fail to unmap a buffer-local mapped key:
+
+ :unmap <key>
+
+To unmap a buffer-local mapped key, you have to use the <buffer> keyword in
+the unmap command:
+
+ :unmap <buffer> <key>
+ :unmap! <buffer> <key>
+
+For more information, read
+
+ :help :unmap
+ :help map-modes
+ :help map-local
+ :help 'mapleader'
+
+
+20.4. I am not able to create a mapping for the <xxx> key. What is wrong?
+
+First make sure that the key is passed to Vim. In insert mode, press CTRL-V
+followed by the desired key. You should see the keycode corresponding to
+the key . If you do see the keycode, then you can create a mapping for the
+key using the following command:
+
+ :map <C-V><xxx> <your_command_to_be_mapped>
+
+For more information, read
+
+ :help map-keys-fails
+ :help :map-special-keys
+ :help key-codes
+
+
+20.5. How do I map the numeric keypad keys?
+
+First make sure that the numeric keypad keys are passed to Vim. Next, you
+can use the following command to map the numeric keypad keys:
+
+ :map <kSomething> <your_command>
+
+where, <kSomething> can be kHome, kEnd, kPageUp, kPageDown, kPlus, kMinus,
+kDivide, kMultiply, kEnter, etc.
+
+For more information, read
+
+ :help key-codes
+ :help terminal-options
+
+
+20.6. How do I create a mapping that works only in visual mode?
+
+You can create mappings that work only in specific mode (normal, command,
+insert, visual, etc). To create a mapping that works only in the visual
+mode, use the ":vmap" command:
+
+ :vmap <F3> <your mapping here>
+
+For more information, read
+
+ :help :vmap
+ :help map-modes
+ :help 40.1
+
+
+20.7. In a Vim script, how do I know which keys to use for my mappings, so
+ that the mapped key will not collide with an already used key?
+
+Vim uses most of the keys in the keyboard. You can use the <leader> prefix
+in maps to define keys which will not overlap with Vim keys. For example:
+
+ :map <leader>S <C-W>s
+ :map <leader>j <C-W>j
+ :map <leader>k <C-W>k
+
+where by default <leader> gets substituted with a backslash (\), so the
+user would enter
+
+ \s
+ \j
+ \k
+
+to invoke the above map commands. The user can change the mapleader
+variable to be whatever they wanted:
+
+ :let mapleader = ","
+
+When writing a plugin or other script, more often than not, it is advisable
+to use :noremap instead of :map to avoid side effects from user defined
+mappings.
+
+For more information, read
+
+ :help <Leader>
+ :help <LocalLeader>
+ :help write-plugin
+
+
+20.8. How do I map the escape key?
+
+You can map the Escape key to some other key using the ":map" command. For
+example, the following command maps the escape key to CTRL-O.
+
+ :map <C-O> <Esc>
+
+
+20.9. How do I map a key to perform nothing?
+
+You can map a key to <Nop> to perform nothing when the key is pressed. For
+example, with the following mappings, the <F7> key will do nothing when
+pressed.
+
+ :map <F7> <Nop>
+ :map! <F7> <Nop>
+
+For more information, read
+
+ :help <Nop>
+ :help :map
+ :help :map!
+ :help map-modes
+
+
+20.10. I want to use the Tab key to indent a block of text and Shift-Tab
+ key to unindent a block of text. How do I map the keys to do this?
+ This behavior is similar to textpad, visual studio, etc.
+
+Use the following mapping:
+
+ :inoremap <S-Tab> <C-O><LT><LT>
+ :nnoremap <Tab> >>
+ :nnoremap <S-Tab> <LT><LT>
+ :vnoremap <Tab> >
+ :vnoremap <S-Tab> <LT>
+
+Note that, the <S-Tab> mapping will work only if Vim receives the correct
+key sequence. This is mostly the case with GUI Vim.
+
+For more information, read
+
+ :help :inoremap
+ :help :nnoremap
+ :help :vnoremap
+ :help <S-Tab>
+ :help i_CTRL-O
+ :help >>
+ :help <<
+ :help <LT>
+
+
+20.11. In my mappings the special characters like <CR> are not recognized.
+ How can I configure Vim to recognize special characters?
+
+Check the value of the 'cpoptions' option:
+
+ :set cpoptions?
+
+If this option contains the '<' flag, then special characters will not be
+recognized in mappings. Remove the '<' flag from 'cpoptions' option:
+
+ :set cpo-=<
+
+Also, check the value of the 'compatible' option:
+
+ :se compatible?
+
+The 'compatible' option must be reset:
+
+ :se nocompatible
+
+For more information, read
+
+ :help 'cpoptions'
+ :help 'compatible'
+
+
+20.12. How do I use the '|' to separate multiple commands in a map?
+
+You can escape the '|' character using backslash (\) to use '|' in a map.
+
+ :map _l :!ls \| more<CR>
+
+You can also try the following command:
+
+ :map _l :!ls <bar> more<CR>
+
+There are also other ways to do this.
+
+For more information, read
+
+ :help map_bar
+
+
+20.13. If I have a mapping/abbreviation whose ending is the beginning of
+ another mapping/abbreviation, how do I keep the first from expanding
+ into the second one?
+
+Instead of using the ":map lhs rhs" command, use the ":noremap lhs rhs"
+command. For abbreviations, use "noreabbrev lhs rhs". The "nore" prefix
+prevents the mapping or abbreviation from being expanded again.
+
+For more information, read
+
+ :help :noremap
+ :help :noreabbrev
+
+
+20.14. Why does it take a second or more for Vim to process a key,
+ sometimes when I press a key?
+
+Make sure you have not defined a mapping for this key using the following
+command:
+
+ :map <key>
+
+If a mapping is defined for this key and the mapped key contains more than
+one character, then Vim will wait for the next character to be pressed to
+determine whether it is the mapped key or not. For example, if you have
+mapped "ab", then if you press "a", Vim will wait for the next key to be
+pressed. If the next key is "b", Vim will execute the mapped sequence.
+Otherwise, Vim will proceed with the normal processing of "a" followed by
+the next key. If the 'timeout' option is set (which is the default), then
+Vim will timeout after waiting for the period specified with the
+'timeoutlen' option (default is 1 second).
+
+For more information, read
+
+ :help map-typing
+ :help 'timeoutlen'
+ :help 'ttimeoutlen'
+ :help 'timeout'
+ :help 'ttimeout'
+ :help vt100-cursor-keys
+ :help slow-fast-terminal
+
+
+20.15. How do I map a key to run an external command using a visually
+ selected text?
+
+You can the ":vmap" command to map a key in the visual mode. In the mapped
+command sequence, you have to first yank the text. The yanked text is
+available in the '"' register. Now, you can use the contents of this
+register to run the external command. For example, to run the external
+command "perldoc" on a visually selected text, you can use the following
+mapping:
+
+ :vmap <F7> y:!exec "!perldoc '" . @" . "'"<CR>
+
+If you want the mapping to work in the visual mode, but not with the
+highlighted text, you can use the following command:
+
+ :vmap <F7> :<C-U>!perldoc <cword><CR>
+
+The above mapping will use the word under the cursor instead of the
+highlighted text. Note the use of the <C-U> before invoking the "perldoc"
+external command. The <C-U> is used to erase the range of text selected in
+the visual mode and displayed on the command line. If the visual range is
+not removed using <C-U>, then the output from the external command will
+replace the visually selected text.
+
+For more information, read
+
+ :help :vmap
+ :help quote_quote
+ :help let-register
+ :help c_CTRL-U
+ :help :!cmd
+
+
+20.16. How do I map the Ctrl-I key while still retaining the functionality
+ of the <Tab> key?
+
+The Ctrl-I key and the <Tab> key produce the same keycode, so Vim cannot
+distinguish between the Ctrl-I and the <Tab> key. When you map the Ctrl-I
+key, the <Tab> key is also mapped (and vice versa). The same restriction
+applies for the Ctrl-[ key and the <Esc> key.
+
+For more information, read
+
+ :help keycodes
+
+
+=============================================================================
+
+SECTION 21 - ABBREVIATIONS
+
+
+21.1. How do I auto correct misspelled words?
+
+You can auto correct misspelled words using abbreviations. For example, the
+following abbreviation can be used to correct "teh" with "the":
+
+ :abbreviate teh the
+
+Vim supports abbreviations in insert mode, replace mode and command-line
+mode.
+
+For more information, read
+
+ :help 24.7
+ :help abbreviations
+ :help Q_ab
+
+
+21.2. How do I create multi-line abbreviations?
+
+You can create multi-line abbreviations by embedding the "<CR>"
+key code in the text:
+
+ iabbrev #c --------------<CR>-- Date:<CR>--<CR>---------
+
+With the above abbreviation, when you type #c, it will be expanded to
+the following text:
+
+--------------
+-- Date:
+--
+---------
+
+For more information, read
+
+ :help abbreviations
+
+
+21.3. When my abbreviations are expanded, an additional space character is
+ added at the end of the expanded text. How do I avoid this character?
+
+To avoid an additional space character at the end of the expanded text, you
+can expand the abbreviation by pressing the CTRL-] key. The abbreviation
+will be expanded without adding a space character at the end.
+
+Another alternative is to use the following function and command:
+
+function! Eatchar(pat)
+ let c = nr2char(getchar())
+ return (c =~ a:pat) ? '' : c
+endfunction
+command! -nargs=+ Iabbr execute "iabbr" <q-args> . "<C-R>=Eatchar('\\s')<CR>"
+
+Now, define your abbreviations using the new "Iabbr" command instead of the
+builtin "iabbrev" command. With this command, after expanding the
+abbreviated text, the next typed space character will be discarded.
+
+For more information, read
+
+ :help abbreviations
+
+
+21.4. How do I insert the current date/time stamp into the file?
+
+You can use the strftime() function to insert the current data/time stamp
+in a file. For example, you can use the following abbreviation:
+
+ iabbrev dts <C-R>=strftime("%y/%m/%d %H:%M")<CR>
+
+With this abbreviation, when you type dts in insert mode, it will be
+expanded to the date/time stamp.
+
+Some other forms of the above abbreviation are listed below:
+
+ iabbrev mdyl <C-R>=strftime("%a %d %b %Y")<CR>
+ iabbrev mdys <C-R>=strftime("%y%m%d")<CR>
+ iabbrev mdyc <C-R>=strftime("%c")<CR>
+ iabbrev hml <C-R>=strftime("%d/%m/%y %H:%M:%S")<CR>
+ iabbrev hms <C-R>=strftime("%H:%M:%S")<CR>
+
+For more information, read
+
+ :help strftime()
+ :help i_CTRL-R
+
+
+21.5. How do I prevent an abbreviation from expanding in insert mode?
+
+You can prevent an abbreviation from expanding in insert mode by typing
+CTRL-V before the character after the abrreviated word.
+
+For more information, read
+
+ :help abbreviations
+
+
+=============================================================================
+
+SECTION 22 - RECORD AND PLAYBACK
+
+
+22.1. How do I repeat an editing operation (insertion, deletion, paste,
+ etc)?
+
+You can repeat the last editing operation using the '.' command. This will
+repeat the last simple change like a insert, delete, change, paste, etc.
+
+For more information, read
+
+ :help 04.3
+ :help single-repeat
+ :help Q_re
+
+
+22.2. How I record and repeat a set of key sequences?
+
+You can use the 'q' command in normal mode to record a set of key sequences
+and store it in a register. For example, in the normal mode you can press q
+followed by a register name {0-9a-bA-Z"} to start the recording. To
+end/stop the recording press q again. You can playback/repeat the recorded
+key sequences by pressing @ followed by the register name. e.g. @a.
+
+Another approach is to start Vim with the "-w" command-line argument.
+
+ $ vim -w <file_name>
+
+Vim will record all the characters typed in the session in the
+specified file "file_name". You can use the recorded file with the "-s"
+command line argument to play it back:
+
+ $ vim -s <file_name>
+
+For more information, read
+
+ :help 10.1
+ :help recording
+ :help -w
+ :help -s
+
+
+22.3. How do I edit/modify a recorded set of key sequences?
+
+The recorded key sequences are stored in a register. You can paste the
+contents of the register into a Vim buffer, edit the pasted text and again
+yank the text into the register. You can also use the ":let" command to
+modify the register. For example:
+
+ :let @a = "iHello World\<Esc>"
+
+For more information, read
+
+ :help recording
+ :help 10.1
+ :help let-register
+ :help <>
+ :help 'cpoptions'
+
+
+22.4. How do I write recorded key sequences to a file?
+
+The recorded key sequences are stored in a register. You can paste the
+contents of the register into a Vim buffer. Now you can save the buffer
+into a file. You can also modify the pasted text and again yank into the
+register to modify the recorded key sequence. For example, if you record a
+set of key sequences using qa ..... q. The recorded key sequences are
+stored in the register 'a'. You can paste the contents of register 'a'
+using "ap.
+
+For more information, read
+
+ :help recording
+ :help 10.1
+
+
+22.5. I am using register 0 to record my key sequences (i.e. q0 .... q).
+ In the recorded key sequences, I am yanking some text. After the
+ first replay of the recorded key sequence, I am no longer able to
+ play it back.
+
+Register 0 contains the text from the last yank operation. In your recorded
+key sequence, when the yank is performed, register 0 is overwritten with
+the yanked text. So your recording stored in register 0 is lost. You have
+to use some other register.
+
+For more information, read
+
+ :help registers
+
+
+=============================================================================
+
+SECTION 23 - AUTOCOMMANDS
+
+
+23.1. How do I execute a command when I try to modify a read-only file?
+
+You can use the FileChangedRO autocommand event to execute a command when a
+read-only file modified. For example, you can use this event to checkout a
+read-only file:
+
+ :autocmd FileChangedRO * call MyCheckoutFunction()
+
+For more information, read
+
+ :help FileChangedRO
+
+
+23.2. How do I execute a command every time when entering a buffer?
+
+You can use the BufEnter autocommand event to execute a command every time
+when entering a buffer. For example:
+
+ :autocmd BufEnter *.c set formatoptions=croqt
+
+For more information, read
+
+ :help BufEnter
+
+
+23.3. How do I execute a command every time when entering a window?
+
+You can use the WinEnter autocommand event to execute a command every time
+when entering a window. For example:
+
+ :autocmd WinEnter *.c call MyFunction()
+
+For more information, read
+
+ :help WinEnter
+
+
+23.4. From an autocmd, how can I determine the name of the file or the
+ buffer number for which the autocommand is executed?
+
+You can use the special words <afile> or <abuf> in an autocmd to get the
+name of the file or the buffer number for which the autocommand is
+executed.
+
+For more information, read
+
+ :help :<afile>
+ :help :<abuf>
+ :help :<amatch>
+
+
+23.5. How do I automatically save all the changed buffers whenever Vim
+ loses focus?
+
+You can define an autocommand for the FocusLost event which will save all
+the modified buffers whenever Vim loses focus:
+
+ :autocmd FocusLost * wall
+
+For more information, read
+
+ :help FocusLost
+ :help :wall
+
+
+23.6. How do I execute/run a function when Vim exits to do some cleanup?
+
+You can use VimLeave autocmd event to execute a function just before Vim
+exists. For example,
+
+ :autocmd VimLeave * call MyCleanupFunction()
+
+For more information, read
+
+ :help VimLeave
+
+
+=============================================================================
+
+SECTION 24 - SYNTAX HIGHLIGHT
+
+
+24.1. How do I turn off/on syntax highlighting?
+
+By default, the Vim syntax highlighting is turned off. To enable the syntax
+highlighting, you can use one of the following commands:
+
+ :syntax enable
+
+ or
+
+ :syntax on
+
+To disable the syntax highlighting, you can use the following command:
+
+ :syntax off
+
+For more information, read
+
+ :help 06.1
+ :help 06.4
+ :help :syntax-enable
+ :help :syntax-on
+ :help :syn-clear
+
+
+24.2. How do I change the background and foreground colors used by Vim?
+
+Vim uses the "Normal" highlight group for the background and foreground
+colors. To change the foreground/background colors, you have to modify the
+"Normal" highlight group. For example, to set the background color to blue
+and foreground color to white, you can use
+
+ :highlight Normal ctermbg=blue ctermfg=white guibg=blue guifg=white
+
+If you are using the Motif or the Athena version of the GUI Vim, then you
+can modify the foreground and background resource names in the .Xdefaults
+files to change the colors:
+
+ Vim.foreground: Black
+ Vim.backround: Wheat
+
+You can also use the "-foreground" and "-background" command-line arguments
+to specify the foreground and background colors. These arguments are
+supported only in the Motif or Athena versions:
+
+ $ gvim -foreground Black -background Wheat
+
+For more information, read
+
+ :help :highlight
+ :help .Xdefaults
+ :help -gui
+
+
+24.3. How do I change the highlight colors to suit a dark/light background?
+
+You can set the 'background' option to either 'dark' or 'light' to change
+the highlight colors to suit a dark/light background:
+
+ :set background=dark
+
+For more information, read
+
+ :help 'background'
+ :help 6.2
+
+
+24.4. How do I change the color of the line numbers displayed when the
+ ":set number" command is used?
+
+The line numbers displayed use the LineNr highlighting group. To display
+the current colors used, use
+
+ :hi LineNr
+
+To change the color modify the LineNr highlight group. For example:
+
+ :hi linenr guifg=red guibg=black
+
+This will give red numbers on a black background in GVIM.
+
+For more information, read
+
+ :help :highlight
+
+
+24.5. How do I change the background color used for a Visually selected
+ block?
+
+You can modify the 'Visual' highlight group to change the color used for a
+visually selected block:
+
+ :highlight Visual guibg=red
+
+For more information, read
+
+ :help :highlight
+ :help hl-Visual
+
+
+24.6. How do I highlight the special characters (tabs, trailing spaces, end
+ of line, etc) displayed by the 'list' option?
+
+You can modify the "NonText" and "SpecialKey" highlight groups to highlight
+the special characters displayed by the 'list' option:
+
+ :highlight NonText guibg=red
+ :highlight SpecialKey guibg=green
+
+The "NonText" highlighting group is used for "eol", "extends" and
+"precedes" settings in the "listchars" option. The "SpecialKey"
+highlighting group is used for the "tab" and "trail" settings.
+
+For more information, read
+
+ :help 'listchars'
+ :help hl-NonText
+ :help hl-SpecialKey
+
+
+24.7. How do I specify a colorscheme in my .vimrc/.gvimrc file, so that Vim
+ uses the specified colorscheme everytime?
+
+You can specify the color scheme using the ":colorscheme" command in your
+.vimrc or .gvimrc file:
+
+ colorschme evening
+
+For more information, read
+
+ :help :colorscheme
+
+
+24.8. Vim syntax highlighting is broken. When I am editing a file, some
+ parts of the file is not syntax highlighted or syntax highlighted
+ incorrectly.
+
+Vim doesn't read the whole file to parse the text for syntax highlighting.
+It starts parsing wherever you are viewing the file. That saves a lot of
+time, but sometimes the colors are wrong. A simple fix is refreshing the
+screen using the CTRL-L key. Or scroll back a bit and then forward again.
+You can also use the command:
+
+ :syntax sync fromstart
+
+Note that this might considerably slow down the screen refreshing.
+
+For more information, read
+
+ :help :syn-sync
+ :help :syn-sync-first
+
+
+24.9. Is there a built-in function to syntax-highlight the corresponding
+ matching bracket?
+
+No. Vim doesn't support syntax-highlighting matching brackets. You can try
+using the plugin developed by Charles Campbell:
+
+ http://vim.sourceforge.net/tips/tip.php?tip_id=177
+
+You can jump to a matching bracket using the '%' key. You can set the
+'showmatch' option to temporarily jump to a matching bracket when in insert
+mode.
+
+For more information, read
+
+ :help %
+ :help 'showmatch'
+ :help 'matchtime'
+ :help 'matchpairs'
+
+
+24.10. How do I turn off the C comment syntax highlighting?
+
+You can use the following command to turn off C comment syntax
+highlighting:
+
+ :highlight clear comment
+
+For more information, read
+
+ :help c-syntax
+
+
+24.11. How do I add my own syntax extensions to the standard syntax files
+ supplied with Vim?
+
+You should not modify the syntax files supplied with Vim to add your
+extensions. When you install the next version of Vim, you will lose your
+changes. Instead you should create a file under the ~/.vim/after/syntax
+directory with the same name as the original syntax file and add your
+additions to this file.
+
+For more information, read
+
+ :help mysyntaxfile-add
+ :help 'runtimepath'
+
+
+24.12. How do I replace a standard syntax file that comes with the Vim
+ distribution with my own syntax file?
+
+You can replace a standary syntax file that comes with the Vim distribution
+by creating a file with the same name as the original syntax file and
+placing it in the vim runtime syntax (~/.vim/syntax) directory. For
+example, to replace the c.vim syntax file in a Unix system, place the new
+c.vim in the ~/.vim/syntax directory. In a MS-Windows system, place the new
+syntax file in the $HOME/vimfiles/syntax or $VIM/vimfiles/syntax directory.
+
+For more information, read
+
+ :help mysyntaxfile-replace
+ :help 44.11
+ :help mysyntaxfile
+
+
+24.13. How do I highlight all the characters after a particular column?
+
+You can use the ":match" command to highlight all the characters after a
+particular column:
+
+ :match Todo '\%>75v.\+'
+
+This will highlight all the characters after the 75th column.
+
+For more information, read
+
+ :help :match
+ :help /\%v
+ :help /\+
+ :help /.
+
+
+24.14. How do I convert a source file (.c, .h, etc) with the Vim syntax
+ highlighting into a HTML file?
+
+You can use the 2html.vim script to convert a source file into a HTML file
+with the Vim syntax highlighting. Use the following command:
+
+ :runtime! syntax/2html.vim
+
+For more information, read
+
+ :help convert-to-HTML
+
+
+24.15. How do I list the definition of all the current highlight groups?
+
+You can list the definition of all the current highlight groups using the
+":highlight" (without any arguments) ex command.
+
+For more information, read
+
+ :help :highlight
+
+
+=============================================================================
+
+SECTION 25 - VIM SCRIPT WRITING
+
+
+25.1. How do I list the names of all the scripts sourced by Vim?
+
+You can use the ":scriptnames" command to list the names of all the scripts
+sourced by Vim:
+
+ :scriptnames
+
+For more information, read
+
+ :help :scriptnames
+
+
+25.2. How do I debug Vim scripts?
+
+Vim has built-in support for a primitive debugger to debug Vim plugins and
+scripts. Using this debugger you can set breakpoints and step through the
+plugin functions.
+
+For more information, read
+
+ :help debug-scripts
+ :help -D
+
+
+25.3. How do I locate the script/plugin which sets a Vim option?
+
+You can use the ":verbose" command to locate the plugin/script which last
+modified a Vim option. For example:
+
+ :verbose set textwidth?
+
+For more information, read
+
+ :help :set-verbose
+ :help :verbose
+
+
+25.4. I am getting some error/informational messages from Vim (possibly
+ when running a script), the messages are cleared immediately. How do
+ I display the messages again?
+
+You can use the ":messages" command to display the previous messages.
+
+ :messages
+
+For more information, read
+
+ :help :messages
+ :help :echoerr
+ :help :echomsg
+ :help message-history
+
+
+25.5. How do I save and restore a plugin specific information across Vim
+ invocations?
+
+Vim will save and restore global variables that start with an uppercase
+letter and don't contain a lower case letter. For this to work, the
+'viminfo' option must contain the '!' flag. Vim will store the variables in
+the viminfo file.
+
+For more information, read
+
+ :help 'viminfo'
+ :help viminfo-file
+ :help variables
+
+
+25.6. How do I start insert mode from a Vim function?
+
+You can use the ":startinsert" command to start the insert mode from inside
+a Vim function.
+
+For more information, read
+
+ :help :startinsert
+
+
+25.7. How do I change the cursor position from within a Vim function?
+
+You can use the cursor() function to position the cursor.
+
+ call cursor(lnum, col)
+
+You can also use the following command to change the cursor position:
+
+ exe "normal! " . lnum . "G" . col . "|"
+
+For more information, read
+
+ :help cursor()
+ :help bar
+
+
+25.8. How do I check the value of an environment variable in the .vimrc
+ file?
+
+You can use prefix the environment variable name with the '$' character to
+use it from a Vim script/function. You can refer to the value of an
+environment variable using the $env_var syntax:
+
+ if $EDITOR == 'vi'
+ endif
+
+For more information, read
+
+ :help expr-env
+
+
+25.9. How do I check whether an environment variable is set or not from a
+ Vim function?
+
+You can use the exists() function to check for the existence of a
+environment variable.
+
+ if exists("$MY_ENV_VAR")
+ endif
+
+For more information, read
+
+ :help exists()
+ :help expr-env
+
+
+25.10. How do I call/use the Vim built-in functions?
+
+You can use the ":call" command to invoke a Vim built-in function:
+
+ :call cursor(10,20)
+
+You can use the ":echo" command to echo the value returned by a function:
+
+ :echo char2nr('a')
+
+You can use the ":let" command to assign the value returned by a function
+to a variable:
+
+ :let a = getline('.')
+
+To store the return value from a function into a Vim register, you can use
+the following command:
+
+ :let @a = system('ls')
+
+The above command will store the return value from the 'ls' command into
+the register 'a'.
+
+For more information, read
+
+ :help :call
+ :help :echo
+ :help :let
+ :help :let-register
+ :help user-functions
+ :help usr_41.txt
+
+
+25.11. I am using some normal mode commands in my Vim script. How do I
+ avoid using the user-defined mappings for these normal mode commands
+ and use the standard Vim functionality for these normal mode
+ commands?
+
+You can use the "normal!" command in your script to invoke a normal-mode
+command. This will use the standard functionality of the normal mode
+command and will not use the user-defined mapping.
+
+For more information, read
+
+ :help :normal
+
+
+25.12. How do I get the current visually selected text into a Vim variable
+ or register?
+
+You can get the current visually selected text into a Vim variable by
+yanking the text into Vim register and then assigning the contents of the
+register into the variable:
+
+ :normal! gvy
+ :let myvar = @"
+
+The above command copies the visually selected text into the variable
+"myvar".
+
+You can also use the command:
+
+ :normal! gv"*y
+
+In the above command, gv reselects the last visually selected text and the
+rest of the command copies the selected text into the * (clipboard)
+register. Alternatively, you can set the 'a' flag in the 'guioptions'
+option to automatically copy a visually selected text into the * register.
+To do this as part of a visual map, you can use a command similar to the
+one shown below:
+
+ :vmap <F3> "*y:call ...
+
+For more information, read
+
+ :help gv
+ :help :normal
+ :help let-@
+ :help quotestar
+ :help clipboard
+ :help registers
+
+
+25.13. I have some text in a Vim variable 'myvar'. I would like to use this
+ variable in a ":s" substitute command to replace a text 'mytext'.
+ How do I do this?
+
+You can use the 'execute' command to evaluate the variable:
+
+ :execute '%s/mytext/' . myvar . '/'
+
+For more information, read
+
+ :help :execute
+
+You can also use "\=" in the substitute command to evaluate the variable:
+
+ :%s/mytext/\=myvar/
+
+For more information, read
+
+ :help sub-replace-special
+
+
+25.14. A Vim variable (bno) contains a buffer number. How do I use this
+ variable to open the corresponding buffer?
+
+The :buffer command will not accept a variable name. It accepts only a
+buffer number or buffer name. You have to use the ":execute" command to
+evaluate the variable into the corresponding value. For example:
+
+ :execute "buffer " . bno
+
+For more information, read
+
+ :help :execute
+
+
+25.15. How do I store the value of a Vim option into a Vim variable?
+
+You can prefix the option name with the '&' character and assign the option
+value to a Vim variable using the "let" command. For example, to store the
+value of the 'textwidth' option into the Vim variable "old_tw", you can use
+the following command:
+
+ :let old_tw = &tw
+
+To do the opposite, to set the 'textwidth' option with the value stored in
+the 'old_tw' variable, you can use the following command:
+
+ :let &tw = old_tw
+
+For more information, read
+
+ :help expr-option
+ :help let-option
+
+
+25.16. I have copied and inserted some text into a buffer from a Vim
+ function. How do I indent the inserted text from the Vim function?
+
+You can use the following command to format the just inserted text:
+
+ :normal '[=']
+
+For more information, read
+
+ :help '[
+ :help ']
+ :help =
+ :help :normal
+
+
+25.17. How do I get the character under the cursor from a Vim script?
+
+You can use the getline() function and use string index [] to get the
+character:
+
+ :echo getline(".")[col(".") - 1]
+
+In the above command, getline(".") returns the text in the current line.
+The indexing of the string starts at zero, and you can get a single
+character in a string by its index with the "string[index]" notation. The
+col(".") returns the column of the cursor position; the adjustment is to
+get the right character of the string.
+
+Alternatively, you can use the following sequence of commands to get the
+character under the cursor:
+
+ normal! vy
+ let ch=@"
+
+Note that the above commands will change the '< and '> marks.
+
+For more information, read
+
+ :help getline()
+ :help col()
+ :help expr-[]
+
+
+25.18. How do I get the name of the current file without the extension?
+
+You can get the name of the current file without the extension using:
+
+ :echo expand("%:r")
+
+With some commands, you can use the file name modifiers directly:
+
+ :cd %:p:h
+ :!gcc -o %:r.o %
+
+For more information, read
+
+ :help filename-modifiers
+ :help expand()
+ :help cmdline-special
+ :help fnamemodify()
+
+
+25.19. How do I get the basename of the current file?
+
+You can use the :t filename modifier to get the basename of the current
+file:
+
+ :echo expand("%:t")
+
+For more information, read
+
+ :help filename-modifiers
+
+
+25.20. How do I get the output from a Vim function into the current buffer?
+
+You can insert the return value from a function using the following command
+in insert mode:
+
+ <C-R>=MyFunc()
+
+Note that this will only insert the return value of the function.
+
+For more information, read
+
+ :help i_CTRL-R
+ :help i_CTRL-R_CTRL-R
+ :help i_CTRL-R_CTRL-O
+ :help expression
+
+
+25.21. How do I call external programs from a Vim function?
+
+There are several ways to call external programs from a Vim function. You
+can use the builtin system() function to invoke external programs and get
+the result:
+
+ :let output = system("ls")
+
+You can also use "!" ex-command to run an external command.
+
+For more information, read
+
+ :help system()
+ :help :!
+ :help 10.9
+
+
+25.22. How do I get the return status of a program executed using the ":!"
+ command?
+
+You can use the predefined Vim v:shell_error variable to get the return
+status of the last run shell command.
+
+For more information, read
+
+ :help v:shell_error
+
+
+25.23. How do I determine whether the current buffer is modified or not?
+
+You can check the value of the 'modified' option to determine whether the
+current buffer is modified:
+
+ :set modified?
+
+From a Vim script, you can check the value of the 'modified' option:
+
+ if &modified
+ echo "File is modified"
+ endif
+
+For more information, read
+
+ :help 'modified'
+
+
+25.24. I would like to use the carriage return character in a normal
+ command from a Vim script. How do I specify the carriage return
+ character?
+
+You can use the ":execute" command to specify the special (control)
+character in a normal mode command:
+
+ :execute "normal \<CR>"
+ :execute "normal ixxx\<Esc>"
+
+For more information, read
+
+ :help :execute
+ :help expr-quote
+
+
+25.25. How do I split long lines in a Vim script?
+
+You can split long lines in a Vim script by inserting the backslash
+character ("\") at the start of the next line. For example,
+
+For more information, read
+
+ :help line-continuation
+
+
+25.26. When I try to "execute" my function using the "execute 'echo
+ Myfunc()'" command, the cursor is moved to the top of the current
+ buffer. Why?
+
+The ":execute" command runs the normal mode command specified by the
+argument. In the case of the following command:
+
+ :execute "echo Myfunc()"
+
+The call to "echo Myfunc()" will return 0. The ":execute" command will run
+the normal mode command "0", which moves the cursor to the top of the file.
+To call a Vim function, you should use the ":call" command instead of the
+":execute" command:
+
+ :call Myfunc()
+
+For more information, read
+
+ :help :call
+ :help :execute
+ :help :echo
+ :help user-functions
+ :help 41.5
+ :help 41.6
+
+
+25.27. How do I source/execute the contents of a register?
+
+If you have yanked a set of Vim commands into a Vim register (for example
+register 'a'), then you can source the contents of the register using one
+of the following commands:
+
+ :@a
+or
+ :exe @a
+
+For more information, read
+
+ :help :@
+
+
+25.28. After calling a Vim function or a mapping, when I press the 'u'
+ key to undo the last change, Vim undoes all the changes made by
+ the mapping/function. Why?
+
+When you call a function or a mapping, all the operations performed by the
+function/mapping are treated as one single operation. When you undo the
+last operation by pressing 'u', all the changes made by the
+function/mapping are reversed.
+
+For more information, read
+
+ :help undo-redo
+ :help map-undo
+
+
+25.29. How can I call a function defined with s: (script local function)
+ from another script/plugin?
+
+The s: prefix for a Vim function name is used to create a script local
+function. A script local function can be called only from within that
+script and cannot be called from other scripts. To define a function in a
+script/plugin, so that it can be called from other plugins/scripts, define
+the function without the s: prefix.
+
+For more information, read
+
+ :help script-variable
+ :help script-local
+ :help :scriptnames
+
+
+25.30. Is it possible to un-source a sourced script? In otherwords, reverse
+ all the commands executed by sourcing a script.
+
+No. It is not possible to reverse or undo all the commands executed by
+sourcing a script.
+
+For more information, read
+
+ :help :source
+
+
+=============================================================================
+
+SECTION 26 - PLUGINS
+
+
+26.1. How do I set different options for different types of files?
+
+You can create filetype plugins to set different options for different
+types of files. You should first enable filetype plugins using the command:
+
+ :filetype plugin on
+
+A filetype plugin is a vim script that is loaded whenever Vim opens or
+creates a file of that type. For example, to ensure that the 'textwidth'
+option is set to 80 when editing a C program (filetype 'c'), create one of
+the following files:
+
+ ~/.vim/ftplugin/c.vim (Unix)
+ %HOME%\vimfiles\ftplugin\c.vim (Windows)
+
+with the following text in it:
+
+ setlocal textwidth=80
+
+You can also use autocommands to set specific options when editing specific
+type of files. For example, to set the 'textwidth' option to 75 for only
+*.txt files, you can use the following autocmd:
+
+ autocmd BufRead *.txt setlocal textwidth=80
+
+For more information, read
+
+ :help filetype-plugin
+ :help add-filetype-plugin
+ :help autocmd
+ :help 40.3
+
+
+26.2. I have downloaded a Vim plugin or a syntax file or a indent file, or
+ a color scheme or a filetype plugin from the web. Where should I copy
+ these files so that Vim will find them?
+
+You can place the Vim runtime files (plugins, syntax files, indent files,
+color schemes, filetype plugins, etc) under one of the directories
+specified in the 'runtimepath' option. To determine the current value of
+the 'runtimepath' option, use the following command:
+
+ :set runtimepath
+
+For Unix systems, this is usally the "$HOME/.vim" directory. For MS-Windows
+systems, this is usually the $VIM\vimfiles or $HOME\vimfiles directory.
+Depending on the type of the runtime file, you have to place it under a
+specific directory under the above runtime directory. The names of the
+directories are listed below:
+
+ colors/ - color scheme files
+ compiler/ - compiler files
+ doc/ - documentation
+ ftplugin/ - filetype plugins
+ indent/ - indent scripts
+ keymap/ - key mapping files
+ lang/ - menu translations
+ plugin/ - plugin scripts
+ syntax/ - syntax files
+ tutor/ - files for vimtutor
+
+For more information, read
+
+ :help your-runtime-dir
+ :help 'runtimepath'
+ :help :runtime
+
+
+26.3. How do I extend an existing filetype plugin?
+
+You can extend an existing filetype plugin by creating a file under either
+the $VIMRTUNTIME/after/ftplugin or the $VIMRTUNTIME/ftplugin directory. The
+name of the file should be the same as the name of the existing filetype
+plugin file. You can place your additions to the new file.
+
+If you placed the file in the after/ftplugin runtime directory, then Vim
+will first source the existing filetype plugin file and then will source
+the new file. If you placed the file in the $VIMRTUNTIME/ftplugin runtime
+directory, then Vim will first source the new file and then will source the
+existing filetype plugin file.
+
+For more information, read
+
+ :help ftplugin-overrule
+ :help filetype-plugin
+ :help add-filetype-plugin
+ :help 'runtimepath'
+
+
+26.4. How do I turn off loading the Vim plugins?
+
+You can reset the 'loadplugins' option to turn off loading the plugins:
+
+ :set noloadplugins
+
+You can also specify the "--noplugin" command line argument to stop loading
+the plugins:
+
+ $ vim --noplugin
+
+For more information, read
+
+ :help 'loadplugins'
+ :help --noplugin
+ :help load-plugins
+
+
+26.5. How do I turn on/off loading the filetype plugins?
+
+By default, Vim will not load the filetype plugins. You can configure Vim
+to load filetype plugins using the command:
+
+ filetype plugin on
+
+You can turn off loading the filetype plugins using:
+
+ filetype plugin off
+
+For more information, read
+
+ :help filetype-plugin-on
+ :help filetype-plugin-off
+ :help :filetype
+
+
+26.6. How do I override settings made in a file type plugin in the global
+ ftplugin directory for all the file types?
+
+You can use an autocommand triggered on the FileType event:
+
+ au Filetype * set formatoptions=xyz
+
+This should at least be after "filetype on" in your vimrc. Best is to put
+it in your "myfiletypefile" file, so that it's always last.
+
+If you want to override a setting for a particular filetype, then create a
+file with the same name as the original filetype plugin in the
+~/.vim/after/ftplugin directory For example, to override a setting in the
+c.vim filetype plugin, create a c.vim file in the ~/.vim/after/ftplugin
+directory and add your preferences in this file.
+
+For more information, read
+
+ :help ftplugin-overrule
+ :help ftplugins
+ :help myfiletypefile
+
+
+26.7. How do I disable the Vim directory browser plugin?
+
+To disable the directory browsing Vim plugin, add the following line to
+your .vimrc file:
+
+ let loaded_explorer = 1
+
+For more information, read
+
+ :help file-explorer
+
+
+26.8. How do I set the filetype option for files with names matching a
+ particular pattern or depending on the file extension?
+
+You can set the 'filetype' option for files with names matching a
+particular pattern using an autocmd. For example, to set the 'filetype'
+option to 'c' for all files with extension '.x', you can use the following
+autocmd:
+
+ autocmd! BufRead,BufNewFile *.x setfiletype c
+
+A better alternative to the above approach is to create a filetype.vim file
+in the ~/.vim directory (or in one of the directories specified in the
+'runtimepath' option) and add the following lines:
+
+ " my filetype file
+ if exists("did_load_filetypes")
+ finish
+ endif
+ augroup filetypedetect
+ au! BufRead,BufNewFile *.x setfiletype c
+ augroup END
+
+For more information, read
+
+ :help new-filetype
+ :help 43.2
+ :help :setfiletype
+
+
+=============================================================================
+
+SECTION 27 - EDITING PROGRAM FILES
+
+
+27.1. How do I enable automatic indentation for C/C++ files?
+
+You can enable file-type based indentation using:
+
+ :filetype indent on
+
+If you want to only enable automatic C indentation, then use:
+
+ :set cindent
+
+For more information, read
+
+ :help 'cindent'
+ :help C-indenting
+ :help filetype
+
+
+27.2. How do I configure the indentation used for C/C++ files?
+
+You can configure the Vim C indentation by modifying the value of the
+'cinoptions', 'cinkeys' and 'cinwords' options.
+
+For more information, read
+
+ :help 'cindent'
+ :help 'cinoptions'
+ :help 'cinkeys'
+ :help 'cinwords'
+ :help C-indenting
+ :help cinoptions-values
+ :help 'smartindent'
+
+
+27.3. How do I turn off the automatic indentation feature?
+
+By default, the automatic indentation is not turned on. You must have
+configured Vim to do automatic indentation in either .vimrc or .gvimrc
+files. You can disable automatic indentation using either,
+
+ :filetype indent off
+
+or
+
+ :set nocindent
+
+Also, check the setting for the following options:
+
+ :set autoindent?
+ :set smartindent?
+ :set indentexpr?
+
+For more information, read
+
+ :help 'cindent'
+ :help filetype-indent-off
+ :help 'autoindent'
+ :help 'smartindent'
+ :help 'indentexpr'
+
+
+27.4. How do I change the number of space characters used for the automatic
+ indentation?
+
+You can modify the 'shiftwidth' option to change the number of space
+characters used for the automatic indentation:
+
+ :set shiftwidth=4
+
+For more information, read
+
+ :help 'shiftwidth'
+
+
+27.5. I am editing a C program using Vim. How do I display the definition
+ of a macro or a variable?
+
+You can use the [d command to display the definition of a macro and the [i
+command to display the definition of a variable.
+
+For more information, read
+
+ :help [d
+ :help [i
+ :help include-search
+ :help 29.4
+ :help 29.5
+
+
+27.6. I am editing a C program using Vim. How do I jump to the beginning or
+ end of a code block from within the block?
+
+You can use '[{' command to jump to the beginning of the code block and ']}
+to jump to the end of the code block from inside the block.
+
+For more information, read
+
+ :help [{
+ :help ]}
+ :help various-motions
+
+
+27.7. Is there a way to turn off the "//" comment auto-insertion behavior
+ for C++ files? If I'm sitting on a line beginning with "//", then I
+ open a new line above or below it, Vim automatically inserts new "//"
+ chars.
+
+You can modify the value of the 'comments' option to stop Vim from
+inserting the C++ comment character ("//") automatically. For example:
+
+ :set comments=sr:/*,mb:*,el:*/
+
+For more information, read
+
+ :help 'comments'
+ :help format-comments
+
+
+27.8. How do I add the comment character '#' to a set of lines at the
+ beginning of each line?
+
+First, select the first character in all the lines using visual block mode
+(CTRL-V). Press 'I' to start inserting characters at the beginning of the
+line. Enter the comment character and then stop the insert mode by pressing
+<Esc>. Vim will automatically insert the entered characters at the
+beginning of all the selected lines.
+
+For more information, read
+
+ :help visual-block
+ :help blockwise-operators
+ :help v_b_I
+
+
+27.9. How do I edit a header file with the same name as the corresponding C
+ source file?
+
+You can use the following command to edit a header file with the same name
+as the corresponding C source file:
+
+ :e %:t:r.h
+
+You can use the following command to edit the file in a new split window:
+
+ :sp %:t:r.h
+
+In the above commands, the percent sign expands to the name of the current
+file. The ":t" modifier extracts the tail (last component) of the
+filename. The ":r" modifier extracts the root of the filename. The .h is
+appended to the resulting name to get the header filename.
+
+Another approach is to use the following command:
+
+ :sfind %:t:r.h
+
+This command will search for the header file in the directories specified
+in the 'path' option.
+
+For more information, read
+
+ :help cmdline-special
+ :help filename-modifiers
+ :help :sfind
+ :help 'path'
+
+
+27.10. How do I automatically insert comment leaders while typing comments?
+
+To automatically insert comment leaders while typing comments, add the 'r'
+and 'o' flags to the 'formatoptions' option.
+
+ :set formatoptions+=ro
+
+You may also want to add the 'c' flag to auto-wrap comments using the
+'textwidth' option setting and the 'q' flag to format comments with the
+"gq" command:
+
+ :set formatoptions=croq
+
+For more information, read
+
+ :help 30.6
+ :help format-comments
+ :help 'comments'
+ :help fo-table
+
+
+=============================================================================
+
+SECTION 28 - QUICKFIX
+
+
+28.1. How do I build programs from Vim?
+
+You can use the ":make" command to build programs from Vim. The ":make"
+command runs the program specified by the 'makeprg' option.
+
+For more information, read
+
+ :help 30.1
+ :help make_makeprg
+ :help 'makeprg'
+ :help 'makeef'
+ :help :make
+ :help quickfix
+
+
+28.2. When I run the make command in Vim I get the errors listed as the
+ compiler compiles the program. When it finishes this list disappears
+ and I have to use the :clist command to see the error message again.
+ Is there any other way to see these error messages?
+
+You can use the ":copen" or ":cwindow" command to open the quickfix window
+that contains the compiler output. You can select different error lines
+from this window and jump to the corresponding line in the source code.
+
+For more information, read
+
+ :help :copen
+ :help :cwindow
+ :help quickfix
+
+
+=============================================================================
+
+SECTION 29 - FOLDING
+
+
+29.1. How do I extend the Vim folding support?
+
+You can use the 'foldexpr' option to fold using an user specified function.
+For example, to fold subroutines of the following form into a single line:
+
+ sub foo {
+ my $barf;
+ $barf = 3;
+ return $barf;
+ }
+
+You can use the following commands:
+
+ set foldmethod=expr
+ set foldexpr=MyFoldExpr(v:lnum)
+ fun! MyFoldExpr(line)
+ let str = getline(a:line)
+ if str =~ '^sub\>'
+ return '1'
+ elseif str =~ '^}'
+ return '<1'
+ else
+ return foldlevel(a:line - 1)
+ endif
+ endfun
+
+For more information, read
+
+ :help 'foldexpr'
+ :help fold-expr
+
+
+29.2. When I enable folding by setting the 'foldmethod' option, all the
+ folds are closed. How do I prevent this?
+
+You can set the 'foldlevelstart' option to a particular value to close only
+folds above the specified value.
+
+ :set foldlevelstart=99
+
+For more information, read
+
+ :help 'foldlevelstart'
+ :help 'foldlevel'
+ :help fold-foldlevel
+
+
+29.3. How do I control how many folds will be opened when I start editing a
+ file?
+
+You can modify the 'foldlevelstart' option to control the number of folds
+that will be opened when you start editing a file. To start editing with
+all the folds closed:
+
+ :set foldlevelstart=0
+
+To start editing with all the folds opened, you can use
+
+ :set foldlevelstart=999
+
+For more information, read
+
+ :help 'foldlevelstart'
+
+
+29.4. How do I open and close folds using the mouse?
+
+You can click on the + and - characters displayed at the leftmost column to
+open and close fold. For this to work, you have to set the 'foldcolumn'
+to a value greater than zero:
+
+ :set foldcolumn=2
+
+For more information, read
+
+ :help 'foldcolumn'
+
+
+29.5. How do I change the text displayed for a closed fold?
+
+You can use the 'foldtext' option to change the text displayed for a closed
+fold.
+
+For more information, read
+
+ :help 'foldtext'
+ :help fold-foldtext
+ :help 'fillchars'
+
+
+29.6. How do I store and restore manually created folds across different
+ Vim invocations?
+
+You can use the ":mkview" command to store manually created folds. Later,
+you can use the ":loadview" command to restore the folds. For this to work,
+the 'viewoptions' must contain "folds".
+
+For more information, read
+
+ :help 28.4
+ :help :mkview
+ :help :loadview
+ :help 'viewoptions'
+ :help 'viewdir'
+ :help :mksession
+ :help 'sessionoptions'
+
+
+=============================================================================
+
+SECTION 30 - VIM WITH EXTERNAL APPLICATIONS
+
+
+30.1. Can I run a shell inside a Vim window?
+
+Currently Vim doesn't have support for running shell and other external
+commands inside a Vim window.
+
+For more information, read
+
+ :help shell-window
+
+Alternatively, you can try using the Unix "screen" utility or the 'splitvt'
+program.
+
+You can also use the vimsh plugin by Brian Sturk to run a shell in a Vim
+window. To use this you need to have Vim built with python support. For
+more information visit the following URL:
+
+ http://vim.sourceforge.net/scripts/script.php?script_id=165
+
+
+30.2. How do I pass the word under the cursor to an external command?
+
+You can use the special keyword <cword> to pass the word under the cursor
+to an external command. For example:
+
+ :!dict <cword>
+
+For more information, read
+
+ :help <cword>
+
+
+30.3. How do I get the output of a shell command into a Vim buffer?
+
+You can use the ":r !" command to get the output of a shell command into a
+Vim buffer. For example, to insert the output of the "ls" shell command,
+you can use the following command:
+
+ :r !ls
+
+To insert the output of the shell command above the first line use the
+following command:
+
+ :0r !ls
+
+For more information, read
+
+ :help :r!
+
+
+30.4. How do I pipe the contents of the current buffer to an external
+ command and replace the contents of the buffer with the output from
+ the command?
+
+You can use the :! command to pipe the contents of the current buffer to a
+external command and replace the contents of the buffer with the output
+from the command. For example, to sort the contents of the current buffer,
+using the Unix sort command, you can use the following command:
+
+ :%!sort
+
+To sort only lines 10-20, you can use the following command
+
+ :10,20!sort
+
+Also, if you want to pipe a buffer to an external command but not put the
+results back in the buffer, you can use
+
+ :w !sort
+
+The above command will pipe the entire buffer to the sort command. Note
+that the space between the 'w' and the '!' is critical. To pipe only a
+range of lines, you can use
+
+ :10,20w !sort
+
+The above command will pipe the lines 10-20 to the sort command.
+
+For more information, read
+
+ :help :range!
+ :help 10.9
+ :help :w_c
+
+
+30.5. How do I sort a section of my file?
+
+You can pipe a section of the file to the Unix "sort" utility to sort the
+file. For example:
+
+ :5,100!sort
+
+You can also use a visual block, and use the "!sort" command on the
+selected block.
+
+To sort using visual blocks (sort based on a column or sort just the column
+itself), read the following tip from the Vim online web page:
+
+http://vim.sourceforge.net/tips/tip.php?tip_id=588
+
+
+30.6. Is there a step-by-step guide for using Vim with slrn?
+
+Visit the following link to get information about using Vim with Slrn:
+
+ http://thingy.apana.org.au/~fun/slrn/
+
+
+30.7. How do I use Vim as a pager?
+
+You can use Vim as a pager using the $VIMRUNTIME/macros/less.sh shell
+script, supplied as part of the standard Vim distribution. This shell
+script uses the $VIMRUNTIME/macros/less.vim Vim script to provide less like
+key bindings.
+
+For more information, read
+
+ :help less
+
+
+30.8. How do I view Unix man pages from inside Vim?
+
+You can view Unix man pages, inside Vim, using the man.vim plugin supplied
+as part of the standard Vim distribution. To use this plugin, add the
+following line to your startup vimrc file:
+
+ runtime ftplugin/man.vim
+
+You can also press the K key to run the program specified by the
+'keywordprg' option with the keyword under the cursor. By default,
+'keywordprg' is set to run man on the keyword under the cursor.
+
+For more information, read
+
+ :help man-plugin
+ :help K
+ :help 'keywordprg'
+
+
+30.9. How do I change the diff command used by the Vim diff support?
+
+By default, the Vim diff support uses the 'diff' command. You can change
+this by changing the 'diffexpr' option.
+
+For more information, read
+
+ :help diff-diffexpr
+ :help 'diffexpr'
+
+
+30.10. How do I use the Vim diff mode without folding?
+
+You can use the following command-line to start Vim with two filenames
+and use the diff mode without folding:
+
+ $ vim -o file1 file2 "+windo set diff scrollbind scrollopt+=hor nowrap"
+
+If you like vertically split windows, then replace "-o" with "-O".
+
+For more information, read
+
+ :help vimdiff
+
+
+=============================================================================
+
+SECTION 31 - GUI VIM
+
+
+31.1. How do I create buffer specific menus?
+
+Adding support for buffer specific menus is in the Vim TODO list. In the
+mean time, you can try Michael Geddes's plugin, buffermenu.vim:
+
+ http://vim.sourceforge.net/scripts/script.php?script_id=246
+
+
+31.2. How do I change the font used by GUI Vim?
+
+You can change the 'guifont' option to change the font used by GUI Vim. To
+display the current value of this option, you can use
+
+ :set guifont?
+
+You can add the displayed font name to the .vimrc file to use the font
+across Vim sessions. For example, add the following line to the .vimrc file
+to use Andale Mono font.
+
+ set guifont=Andale_Mono:h10:cANSI
+
+For Win32, GTK and Photon version of Vim, you can use the following command
+to bringup a dialog which will help you in changing the guifont:
+
+ :set guifont=*
+
+You can also use the -font Vim command line option to specify the font used
+for normal text.
+
+For more information, read
+
+ :help 'guifont'
+ :help 'guifontset'
+ :help 'guifontwide'
+ :help font-sizes
+ :help -font
+ :help -boldfont
+ :help -italicfont
+ :help -menufont
+ :help -menufontset
+
+
+31.3. When starting GUI Vim, how do I specify the location of the GVIM
+ window?
+
+You can use the "-geometry" command line argument to specify the location
+of the GUI Vim window. For example:
+
+ $ gvim -geometry 80x25+100+300
+
+For more information, read
+
+ :help 31.4
+ :help -geom
+
+
+31.4. How do I add a horizontal scrollbar in GVim?
+
+You can enable the horizontal scrollbar by modifying the 'guioptions'
+option:
+
+ :set guioptions+=b
+
+For more information, read
+
+ :help 'guioptions'
+ :help gui-horiz-scroll
+
+
+31.5. How do I make the scrollbar appear in the left side by default?
+
+You can add the 'l' flag to the 'guioptions' option to make the scrollbar
+appear in the left side.
+
+ :set guioptions+=l
+ :set guioptions-=r
+
+For more information, read
+
+ :help 'guioptions'
+ :help gui-scrollbars
+
+
+31.6. How do I remove the Vim menubar?
+
+You can remove the Vim menubar by removing the 'm' flag from the
+'guioptions' option:
+
+ :set guioptions-=m
+
+For more information, read
+
+ :help 'guioptions'
+
+
+31.7. I am using GUI Vim. When I press the ALT key and a letter, the menu
+ starting with that letter is selected. I don't want this behavior as
+ I want to map the ALT-<key> combination. How do I do this?
+
+You can use the 'winaltkeys' option to disable the use of the ALT key to
+select a menu item:
+
+ :set winaltkeys=no
+
+For more information, read
+
+ :help 'winaltkeys'
+ :help :simalt
+
+
+31.8. Is it possible to scroll the text by dragging the scrollbar so that
+ the cursor stays in the original location?
+
+The way Vim is designed, the cursor position has to be in a visible spot in
+normal, visual, select and insert mode. This cannot be changed without
+modifying Vim. When the scrollbar is used, the cursor will be moved so that
+it is always visible. Another approach to solving this problem is to use
+the Vim marks. You can mark the current cursor position using ma. Then
+scroll to a different part of the text and jump back to the old position
+using `a. You can also try the following suggestion from the Vim Online
+website:
+
+ http://www.vim.org/tip_view.php?tip_id=320
+
+For more information, read
+
+ :help mark-motions
+
+
+31.9. How do I get gvim to start browsing files in a particular directory
+ when using the ":browse" command?
+
+You can set the 'browsedir' option to the default directory to use for the
+":browse" command.
+
+ :set browsedir='<your_dir>'
+
+For more information, read
+
+ :help 'browsedir'
+
+
+31.10. For some questions, like when a file is changed outside of Vim, Vim
+ displays a GUI dialog box. How do I replace this GUI dialog box with
+ a console dialog box?
+
+You can set the 'c' flag in the 'guioptions' option to configure Vim to use
+console dialogs instead of GUI dialogs:
+
+ :set guioptions+=c
+
+For more information, read
+
+ :help 'guioptions'
+
+
+31.11. I am trying to use GUI Vim as the editor for my xxx application.
+ When the xxx application launches GUI Vim to edit a file, the
+ control immediately returns to the xxx application. How do I start
+ GUI Vim, so that the control returns to the xxx application only
+ after I quit Vim?
+
+You have to start GUI Vim with the '-f' (foreground) command line option:
+
+ $ gvim -f
+
+By default, GUI Vim will disconnect from the program that started Vim. With
+the '-f' option, GUI Vim will not disconnect from the program that started
+it.
+
+For more information, read
+
+ :help gui-fork
+ :help -f
+
+
+31.12. Why does the "Select Font" dialog doesn't show all the fonts
+ installed in my system?
+
+Vim supports only fixed width (mono-spaced) fonts. Proportional fonts are
+not supported. In the "Select Font" dialog, only fixed width fonts will be
+displayed.
+
+For more information, read
+
+ :help font-sizes
+ :help 'guifont'
+
+
+31.13. How do I use the mouse in Vim command-line mode?
+
+You can set the 'c' flag in the 'mouse' option to use mouse in the Vim
+command-line mode:
+
+ :set mouse+=c
+
+For more information, read
+
+ :help mouse-using
+ :help gui-mouse
+ :help 09.2
+
+
+31.14. When I use the middle mouse button to scroll text, it pastes the
+ last copied text. How do I disable this behavior?
+
+You can map the middle mouse button to <Nop> to disable the middle mouse
+button:
+
+ :map <MiddleMouse> <Nop>
+ :map! <MiddleMouse> <Nop>
+
+For more information, read
+
+ :help gui-mouse-mapping
+ :help <Nop>
+
+
+31.15. How do I change the location and size of a GUI Vim window?
+
+You can use the "winpos" command to change the Vim window position. To
+change the size of the window, you can modify the "lines" and "columns"
+options.
+
+For example, the following commands will position the GUI Vim window at the
+X,Y co-ordinates 50,50 and set the number of lines to 50 and the number of
+columsn to 80.
+
+ :winpos 50 50
+ :set lines=50
+ :set columns=80
+
+The arguments to the 'winpos' command specify the pixel co-ordinates of the
+Vim window. The 'lines' and 'columns' options specify the number of lines
+and characters to use for the height and the width of the window
+respectively.
+
+For more information, read
+
+ :help 31.4
+ :help :winpos
+ :help 'lines'
+ :help 'columns'
+ :help GUIEnter
+
+
+=============================================================================
+
+SECTION 32 - VIM ON UNIX
+
+
+32.1. I am running Vim in a xterm. When I press the CTRL-S key, Vim
+ freezes. What should I do now?
+
+Many terminal emulators and real terminal drivers use the CTRL-S key to
+stop the data from arriving so that you can stop a fast scrolling display
+to look at it (also allowed older terminals to slow down the computer so
+that it did not get buffer overflows). You can start the output again by
+pressing the CTRL-Q key.
+
+When you press the CTRL-S key, the terminal driver will stop sending the
+output data. As a result of this, it will look like Vim is hung. If you
+press the CTRL-Q key, then everything will be back to normal.
+
+You can turn off the terminal driver flow control using the 'stty' command:
+
+ $ stty -ixon -ixoff
+
+or, you can change the keys used for the terminal flow control, using the
+following commands:
+
+ $ stty stop <char>
+ $ stty start <char>
+
+
+32.2. I am seeing weird screen update problems in Vim. What can I do to
+ solve this screen/display update problems?
+
+You have to use a proper terminal emulator like xterm with correct TERM
+settings (TERM=xterm) and a correct terminfo/termcap file.
+For more information, read
+
+ :help 'term'
+
+
+32.3. I am using the terminal/console version of Vim. In insertmode, When I
+ press the backspace key, the character before the cursor is not
+ erased. How do I configure Vim to do this?
+
+You have to make sure that Vim gets the correct keycode for the backpspace
+key. You can try using the command:
+
+ :fixdel
+
+Make sure the TERM environment variable is set to the correct terminal
+name. You can try using the 'stty' command:
+
+ $ stty erase ^H
+
+where, you have to enter the ^H character by pressing the CTRL-V key and
+then the CTRL-H key.
+
+For more information, read
+
+ :help :fixdel
+ :help Linux-backspace
+ :help NetBSD-backspace
+
+
+32.4. I am using Vim in a xterm. When I quit Vim, the screen contents are
+ restored back to the original contents. How do I disable this?
+
+The xterm has a capability called "alternate screen". If this capability
+is present, vim switches to that alternate screen upon startup and back on
+exit, thus restoring the original screen contents. To disable this
+feature, add the following line to your .vimrc file:
+
+ :set t_ti= t_te=
+
+For more information, read
+
+ :help restorescreen
+ :help xterm-screens
+
+
+32.5. When I start Vim, it takes quite a few seconds to start. How do I
+ minimize the startup time?
+
+This may be related to Vim opening the X display for setting the xterm
+title and using the X clipboard. Make sure the DISPLAY variable is set to
+point to the correct host. Try using the command line:
+
+ $ vim -X
+
+This will prevent Vim from opening the X display. With this command-line
+option, the X clipboard cannot be used and also Vim will not be able to
+change the xterm title.
+
+You can also set the 'clipboard' option to
+
+ :set clipboard=exclude:.*
+
+This has the same effect as using the -X command-line argument.
+
+For more information, read
+
+ :help -X
+ :help 'clipboard'
+
+
+32.6. How can I make the cursor in gvim in unix stop blinking?
+
+You can modify the 'guicursor' option, to stop the cursor from blinking.
+For example:
+
+ :set guicursor=a:blinkon0
+
+For more information, read
+
+ :help 'guicursor'
+
+
+32.7. How do I change the menu font on GTK Vim?
+
+You can modify the ~/.gtkrc file to change the menu font on GTK Vim. For
+example:
+
+ style "default"
+ { font ="smooth09" }
+ class "*" style "default"
+
+The last line changes the font of all widgets.
+
+For more information, read
+
+ :help gui-gtk
+
+
+32.8. How do I prevent <Ctrl-Z> from suspending Vim?
+
+You can map <Ctrl-Z> to prevent the suspending. Here are some suggestions:
+
+- Make <Ctrl-Z> do nothing:
+
+ :map <C-Z> <Nop>
+
+- Make <Ctrl-Z> start a shell:
+
+ :map <C-Z> :shell<CR>
+
+- Make <Ctrl-Z> give an error message:
+
+ :map <C-Z> :"suspending disabled<CR>
+
+For the last example, the double quote is necessary in order to keep the
+message on the status line.
+
+
+32.9. When I kill the xterm running Vim, the Vim process continues to run
+ and takes up a lot of CPU (99%) time. Why is this happening?
+
+When Vim is built with support for Python interface, you will have this
+problem. This is a known problem with the python thread library and Vim. To
+solve this problem, use a Vim binary built without the Python interface.
+
+For more information, read
+
+ :help +python
+ :help python
+
+
+32.10. How do I get the Vim syntax highlighting to work in a Unix terminal?
+
+The easiest and simplest way to get Vim syntax highlighting is to use the
+GUI version of Vim (GVIM). To get syntax highlighting to work in the
+console/terminal version of Vim, you have to run a terminal emulator (like
+Xfree86 xterm or rxvt or dtterm) that supports color. Note that if a
+terminal emulator supports changing the background and foreground colors,
+that does not mean that it also supports ANSI escape sequences for changing
+the color. You can download the latest version of Xfree86 xterm from
+http://dickey.his.com/xterm/xterm.html. You can download the latest version
+of rxvt from http://www.rxvt.org. You have to install the terminfo/termcap
+file that supports colors for the terminal emulator. Also, set the TERM
+environment variable to the correct name of the term that supports colors.
+
+You can use the colortest.vim script supplied with the Vim runtime
+package to test the color setup. To use this script, follow these steps:
+
+ :e $VIMRUNTIME/syntax/colortest.vim
+ :source %
+
+For more information, read
+
+ :help 06.2
+ :help terminal-colors
+ :help termcap-colors
+ :help startup-terminal
+ :help xterm-color
+ :help colortest.vim
+
+
+=============================================================================
+
+SECTION 33 - VIM ON MS-WINDOWS
+
+
+33.1. In MS-Windows, CTRL-V doesn't start the blockwise visual mode. What
+ happened?
+
+The mswin.vim script provides key mappings and options to make Vim behave
+like a MS-Windows application. One of the keys mapped is CTRL-V which is
+used for pasting text in MS-Windows applications. This will disable the use
+of CTRL-V to start the blockwise visual mode. The mswin.vim script maps
+CTRL-Q for staring the blockwise visual mode. So you can use CTRL-Q instead
+of CTRL-V.
+
+For more information, read
+
+ :help CTRL-V
+ :help CTRl-V-alternative
+ :help CTRL-Q
+ :help 10.5
+
+
+33.2. When I press the CTRL-Y key, it acts like the CTRL-R key. How do I
+ configure Vim to treat CTRL-Y as CTRL-Y?
+
+The mapping of the CTRL-Y key to the CTRL-R key is done by the mswin.vim
+script. The mswin.vim script maps CTRL-Y to make Vim behave like a standard
+MS-Windows application. This is explained in ":help CTRL-Y". You can either
+comment out the line in mswin.vim that maps the CTRL-Y key or you can
+remove the line in your .vimrc file that sources the mswin.vim script.
+
+
+33.3. How do I start GUI Vim in a maximized window always?
+
+You can use the "simalt" command to maximize the Vim window. You can use
+the GUIEnter autocmd to maximize the Vim window on startup:
+
+ autocmd GUIEnter * simalt ~x
+
+For more information, read
+
+ :help :simalt
+ :help GUIEnter
+ :help gui-win32-maximized
+
+
+33.4. After doing some editing operations, Vim freezes. The cursor becomes
+ an empty rectangle. I am not able enter any characters. What is
+ happening?
+
+Most probably, you used the mouse wheel to scroll the text in Vim. There is
+a known problem in using intellimouse mouse wheel with Vim. To avoid this
+problem, disable Universal scrolling support for Vim.
+
+For more information, read
+
+ :help intellimouse-wheel-problems
+
+
+33.5. I am using Windows XP, the display speed of maximized GVim is very
+ slow. What can I do to speed the display updates?
+
+This may be due to the fact that you have enabled 'Smooth edges of screen
+fonts' in the display properties. Try turning off font smoothing or try
+changing the smoothing method to "Standard".
+
+
+33.6. What are the recommended settings for using Vim with cygwin?
+
+You may want to set the following shell related Vim settings:
+
+ :set shellcmdflag=-c
+ :set shellquote=
+ :set shellslash " Use the forward slash for expansion.
+ :set shellxquote=\"
+ :set shell=d:\cygwin\bin\bash.exe " Use the bash shell
+ :set shellpipe=2>&1| tee
+ :set shellredir=>%s 2>&1
+
+
+33.7. I am trying to use GNU diff with Vim diff mode. When I run the diff
+ from command line, it works. When I try to use the diff with Vim it
+ doesn't work. What should I do now?
+
+There is a problem with using GNU diff with Vim. You can try using the
+GNU diff.exe built by Ron Aaron from the following link:
+
+ http://www.mossbayeng.com/~ron/vim/builds.html
+
+
+33.8. Is it possible to use Vim as an external editor for MS-Windows
+ Outlook email client?
+
+You can use the "cubiclevim" COM Add-In to use Vim as an external editor
+for MS-Windows Outlook email client. Visit the following URL for more
+information:
+
+ http://sourceforge.net/projects/cubiclevim
+
+Note that currently this works only with MS-Office 2000 and XP.
+
+
+33.9. I am using Vim to edit HTML files. How do I start internet explorer
+ with the current file to preview the HTML file?
+
+You can use the following command:
+
+ :!start c:\progra~1\intern~1\iexplore.exe file://%:p<CR>
+
+
+33.10. I would like to use Vim with Microsoft Visual Studio. How do I do
+ this?
+
+You have to download and use the OLE version of Vim (for example:
+gvim61ole.zip). This file also contains instructions on how to use Vim with
+Visual Studio.
+
+For more information, read
+
+ :help MSVisualStudio
+
+
+33.11. Where do I place the _vimrc and _gvimrc files?
+
+You can place the _vimrc and _gvimrc files under the directory pointed to
+by the VIM environment variable. If you are sharing this system with other
+users, then you can place the files in a directory and set the HOME
+environment variable to this directory.
+
+For more information, read
+
+ :help $HOME-use
+ :help _vimrc
+
+
+33.12. Everytime I save a file, Vim warns about the file being changed
+ outside of Vim. Why?
+
+If you get the following warning message, everytime you save a file:
+
+ WARNING: The file has been changed since reading it!!!
+ Do you really want to write to it (y/n)?
+
+then this problem could be related to a bug in MS-Windows on the day
+daylight saving time starts. Vim remembers the timestamp of the file after
+it was written. Just before the next write the timestamp is obtained again
+to check if the file was changed outside of Vim. This works correctly,
+except on the day daylight saving time starts.
+
+This problem will go away the next day after the day the daylight saving
+time starts.
+
+For more information, read
+
+ :help W11
+
+
+=============================================================================
+
+SECTION 34 - PRINTING
+
+
+34.1. How do I print a file along with line numbers for all the lines?
+
+You can set the 'printoptions' option and use the ":hardcopy" command to
+print your file:
+
+ :set printoptions=number:y
+ :hardcopy
+
+For more information, read
+
+ :help 'printoptions'
+ :help :hardcopy
+
+
+34.2. How do I print a file with the Vim syntax highlighting colors?
+
+You can use the ":hardcopy" command to print a file with the Vim syntax
+highlighting colors. You can also convert your file to a HTML file using
+the 2html.vim script and print the HTML file.
+
+For more information, read
+
+ :help syntax-printing
+ :help 2html.vim
+ :help :hardcopy
+ :help printing
+
+
+=============================================================================
+
+SECTION 35 - BUILDING VIM FROM SOURCE
+
+
+35.1. How do I build Vim from the sources on a Unix system?
+
+For a Unix system, follow these steps to build Vim from the sources:
+
+- Download the source and run-time files archive (vim-##.tar.bz2) from the
+ ftp://ftp.vim.org/pub/vim/unix directory.
+- Extract the archive using the bzip2 and tar utilities using the command:
+
+ $ bunzip2 -c <filename> | tar -xf -
+
+- Run the 'make' command to configure and build Vim with the default
+ configuration.
+- Run 'make install' command to install Vim in the default directory.
+
+To enable/disable various Vim features, before running the 'make' command
+you can run the 'configure' command with different flags to include/exclude
+the various Vim features. To list all the available options for the
+'configure' command, use:
+
+ $ configure -help
+
+For more information, read
+
+ :help install
+
+
+35.2. How do I install Vim in my home directory or a directory other
+ than the default installation directory in Unix?
+
+To install Vim in a directory other than the default installation
+directory, you have to specify the directory using the --prefix option
+while running the configure script.
+
+ $ ./configure --prefix=/users/xyz
+
+You can enable/disable various Vim feature by supplying different arguments
+to the configure script. For more information about all these options, run
+
+ $ ./configure --help
+
+For more information, read
+
+ :help install-home
+ :help install
+
+
+35.3. How do I build Vim from the sources on a MS-Windows system?
+
+For a MS-Windows system, Vim can be built using either the Visual C++
+compiler or the Borland C++ compiler or the Ming GCC compiler or the cygwin
+gcc compiler. Follow these steps to build Vim from the sources for
+MS-Windows:
+
+- Download the source (vim##src.zip), runtime (vim##rt.zip) and the extra
+ (vim-##-extra.tar.gz) archives from the ftp://ftp.vim.org/pub/vim/pc
+ directory.
+- Extract the archives into a directory (for example, c:\vimsrc)
+- Depending on the installed compiler, you can use the corresponding
+ makefile to build the Vim sources. For Visual C++ use the Make_mvc.mak
+ makefile, for borland C++ use the Make_bc5.mak makefile, for ming GCC use
+ the Make_ming.mak makefile, for cygwin gcc use the Make_cyg.mak makefile.
+
+Depending on whether you want to build the GUI version of Vim or the
+console version of Vim, you have to pass different arguments to the
+makefiles. After successfully building the sources, you can copy the
+vim.exe or gvim.exe file to the desired directory along with the files from
+the runtime archive.
+
+You can visit the following site for extensive information about building
+Vim on a MS-Windows system using the various compilers:
+
+ http://mywebpage.netscape.com/SharpPeople/vim/howto/index.html
+
+For more information, read
+
+ :help install
+
+
+35.4. The Vim help, syntax, indent files are missing from my Vim
+ installation. How do I install these files?
+
+The Vim help, syntax, indent and other runtime files are part of the Vim
+runtime package. You need to download and install the Vim runtime package.
+For example, for MS-Windows, the name of the Vim 6.1 runtime package is
+vim61rt.zip.
+
+For more information, read
+
+ :help install
+
+
+35.5. I have built Vim from the source and installed the Vim package using
+ "make install". Do I need to keep the Vim source directory?
+
+No. Once you have built and installed Vim in some directory other than the
+original source directory (for example, /usr/bin or /usr/local/bin), then
+you can remove the source directory.
+
+
+35.6. How do I determine the Vim features which are enabled at compile
+ time?
+
+You can use the ":version" command to determine the Vim features that are
+enabled at compile time. The features that are enabled will be prefixed
+with a "+". The features that are not enabled will be prefixed with a "-".
+
+If you want to test for a feature in a script, you can use the has()
+function:
+
+ if has("menu")
+ " Set up some menus
+ endif
+
+For more information, read
+
+ :help :version
+ :help +feature-list
+ :help has()
+
+
+35.7. Can I build Vim without the GUI support?
+
+Yes. You can build Vim by optionally enabling/disabling many of the
+features including GUI.
+
+For more information, read
+
+ :help install
+
+
+35.8. When building Vim on a Unix system, I am getting "undefined reference
+ to term_set_winsize' error. How do I resolve this error?
+
+You will get this error when the build process is not able to locate the
+termlib, termcap or ncurses library. You have to install the ncurses-dev
+package to resolve this error.
+
+
+35.9. Vim configure keeps complaining about the lack of gtk-config while
+ trying to use GTK 2.03. This is correct, since in GTK 2 they moved to
+ using the generic pkg-config. I can get pkg-config to list the
+ various includes and libs for gtk, but for some reason the configure
+ script still isn't picking this up.
+
+Use the following shell script named gtk-config:
+
+ #!/bin/sh
+ pkg-config gtk+-2.0 $1 $2
+
+
+=============================================================================
+
+SECTION 36 - VARIOUS
+
+
+36.1. How do I edit binary files with Vim?
+
+You can set the following options to edit binary files in Vim:
+
+ :set binary
+ :set display=uhex
+
+You can also use the "-b" command-line option to edit a binary file:
+
+ $ vim -b <binary_file_name>
+
+You can also use the xxd utility (part of the Vim distribution) to edit
+binary files.
+
+For more information, read
+
+ :help 23.4
+ :help edit-binary
+ :help hex-editing
+ :help -b
+ :help 'binary'
+ :help 'endofline'
+ :help 'display'
+
+
+36.2. How do I disable the visual error flash and the error beep?
+
+You can disable both the visual error flash and the error beep using the
+following command:
+
+ :set visualbell t_vb=
+
+For more information, read
+
+ :help 'visualbell'
+ :help 'errorbells'
+ :help t_vb
+
+
+36.3. How do I display the ascii value of a character displayed in a
+ buffer?
+
+You can use the 'ga' command to display the ascii value of a displayed
+character.
+
+For more information, read
+
+ :help ga
+ :help :ascii
+
+
+36.4. Can I use zero as a count for a Vim command?
+
+You cannot use zero as a count for a Vim command, as "0" is a command on
+its own, moving to the first column of the line.
+
+For more information, read
+
+ :help 0
+ :help count
+
+
+36.5. How do I disable the Vim welcome screen?
+
+You can disable the Vim welcome screen, by adding the 'I' flag to the
+'shortmess' option:
+
+ :set shortmess+=I
+
+For more information, read
+
+ :help :intro
+ :help 'shortmess'
+
+
+36.6. How do I avoid the "hit enter to continue" prompt?
+
+Vim will prompt you with the "hit enter to continue" prompt, if there are
+some messages on the screen for you to read and the screen is about to be
+redrawn. You can add the 'T' flag to the 'shortmess' option to truncate
+all messages. This will help in avoiding the hit-enter prompt:
+
+ :set shortmess+=T
+
+You can also increase the command height by setting the 'cmdheight' option:
+
+ :set cmdheight=2
+
+For more information, read
+
+ :help hit-enter
+ :help avoid-hit-enter
+ :help 'shortmess'
+ :help 'cmdheight'
+
+
+36.7. How do I invoke Vim from command line to run a group of commands on a
+ group of files?
+
+There are several ways to invoke Vim from command line to run a group of
+commands on a group of files. You can use a set of "-c" command line
+options to specify a group of commands:
+
+ $ vim -c "<ex_command_1>" -c "<ex_command_2>" *.txt
+
+Each of the ex-command specified with the "-c" command line option is
+executed one by one sequentially. You can also use a single "-c" command
+line option and the "|" character to separate the ex commands:
+
+ $ vim -c "<ex_command_1> | <ex_command_2>" *.txt
+
+In the above command, if an ex command fails, then all the remaining ex
+commands will not be executed.
+
+For example, to replace "ABC" with "DEF" in a file from the command-line,
+you can use the following command:
+
+ $ vim -c "%s/ABC/DEF/ge | update" myfile.txt
+
+To replace "ABC" with "DEF" in multiple files from the command-line,
+you can use the following command:
+
+ $ vim -c "argdo %s/ABC/DEF/ge | update" *.txt
+
+You can store the group of commands into a file and use the "-s" command
+line option to run the commands on a set of files. For example, if the
+group of commands are stored in the file mycmds.txt, then you can use the
+following command:
+
+ $ vim -s mycmds.txt *.pl
+
+For more information, read
+
+ :help -c
+ :help -s
+
+
+36.8. How do I use a normal mode command from insert mode without leaving
+ the insert mode?
+
+You can use a normal command from insert mode, without leaving the insert
+mode, by first pressing the CTRL-O key and then follow that with a single
+normal mode command.
+
+To execute more than one normal mode command, press the CTRL-L key,
+followed by any number of normal mode commands and then press <Esc> to get
+back to the insert mode.
+
+For more information, read
+
+ :help i_CTRL-O
+ :help i_CTRL-L
+
+
+36.9. How do I start Vim in insert mode?
+
+You can start Vim in insert mode using the ":startinsert" ex command.
+
+ $ vim +startinsert myfile.txt
+
+The above command will open the file "myfile.txt" and start insert mode
+with the cursor in front of the first character on the first line. To open
+the file and start appending after the last character on the last line,
+you can use the following command:
+
+ $ vim + +startinsert! myfile.txt
+
+For more information, read
+
+ :help :startinsert
+
+
+=============================================================================
+
+SECTION 37 - UNICODE
+Author: Tony Mechelynck <antoine.mechelynck AT belgacom.net>
+
+
+37.1. Is it possible to create Unicode files using Vim?
+
+Yes. It may be more or less complicated depending on the keyboard and fonts
+available to you, but it is always possible to encode any possible Unicode
+codepoint (and some illegal ones) into a file. To create a Unicode file
+using Vim, you should have compiled Vim with the "+multi_byte" compile-time
+option. You can get more information about Unicode from the following
+sites:
+
+ http://www.unicode.org
+ http://www.cl.cam.ac.uk/~mgk25/unicode.html
+
+For more information, read
+
+ :help multibyte
+ :help usr_45.txt
+
+
+37.2. Which Vim settings are particularly important for editing Unicode
+ files?
+
+The most important are the various "encoding" options, i.e., 'encoding',
+'fileencoding', 'fileencodings' and 'termencoding'. The boolean option
+'bomb' is also significant.
+
+For more information, read
+
+ :help 'encoding'
+ :help 'fileencoding'
+ :help 'fileencodings'
+ :help 'termencoding'
+ :help 'bomb'
+
+
+37.3. What is the 'encoding' option?
+
+Basically, the 'encoding' option defines how Vim will represent your data
+internally. However, all Unicode encodings are represented internally as
+utf-8 and converted (if necessary) when reading and writing.
+
+For more information, read
+
+ :help 'encoding'
+
+
+37.4. How does Vim name the various Unicode encodings?
+
+Utf-8 is called utf-8 or utf8; utf-16 is called ucs-2 or ucs2; utf-32 is
+called ucs-4 or ucs4. Also, you may specify endianness (except for utf-8
+which does not vary for endianness) by appending le for little-endian or be
+for big-endian. If you create a file with an encoding of ucs-2 or ucs-4
+without specifying endianness, Vim will use what is typical of your
+machine.
+
+For more information, read
+
+ :help encoding-names
+ :help encoding-values
+ :help encoding-table
+
+
+37.5. How does Vim specify the presence or absence of a byte-order mark?
+
+When reading a file, if the 'fileencodings' option includes "ucs-bom", Vim
+will check for a byte-order mark. When writing a file, if the 'bomb' option
+is set, Vim will write a byte-order mark on files whose encoding warrants
+it.
+
+For more information, read
+
+ :help 'fileencodings'
+ :help 'bomb'
+
+
+37.6. What is the 'fileencoding' option?
+
+The 'fileencoding' option defines the particular encoding which Vim will
+use to write a file. If empty, then the value of the 'encoding' option is
+the default.
+
+For more information, read
+
+ :help 'fileencoding'
+
+
+37.7. What is the 'fileencodings' option?
+
+The 'fileencodings' option defines the heuristics used by Vim when opening
+an existing file. It is a comma separated list of encodings. A special
+name, "ucs-bom" is used to indicate that Vim should check for the presence
+of a byte-order mark; however, it will not be recognised if it comes after
+"utf-8". Normally, "ucs-bom" (if present) should be first in the list.
+
+When Vim opens a file, it checks it against the encodings listed in
+'fileencodings'. The first one that matches is used. If there is no match,
+then Vim sets 'fileencoding' to the null string, i.e., the value of
+'encoding' will be used.
+
+For more information, read
+
+ :help 'fileencodings'
+ :help 'encoding'
+
+
+37.8. What is the 'termencoding' option?
+
+The 'termencoding' option defines how your keyboard encodes the data you
+type. If empty, Vim assumes that it has the same value as 'encoding'.
+Usually it should be set to something that matches your locale.
+
+For more information, read
+
+ :help 'termencoding'
+ :help locale
+
+
+37.9. What is the 'bomb' option?
+
+When reading a file with "ucs-bom" present in the 'fileencodings' option,
+Vim will set the 'bomb' option on or off depending on the presence or
+absence of a byte-order mark at the start of the file. When writing, Vim
+will write a byte-order mark if the 'bomb' option is set. You may set or
+unset it manually do make Vim write, or not write, the b.o.m.
+
+For more information, read
+
+ :help 'bomb'
+
+
+37.10. Where can I find an example of a typical use of all these options?
+
+There is a "tip", with explains them in different words with an example, at
+http://vim.sourceforge.net/tip_view.php?tip_id=246 .
+
+
+37.11. How can I insert Unicode characters into a file using Vim?
+
+Several methods are available:
+
+- Characters present on your keyboard can be typed in the usual way, even
+ those which require a "dead-key" prefix, like (for instance) the
+ circumflex on French keyboards.
+- Characters for which a digraph is defined can be typed as two characters
+ prefixed by <Ctrl-K>.
+- If you have set the 'digraph' option, you can enter the characters for
+ which a digrph is defined as <char1><BS><char2>.
+- Any character can be entered by using a <Ctrl-V> prefix (or <Ctrl-Q> if
+ <Ctrl-V> is remapped to paste from the clipboard).
+
+For more information, read
+
+ :help digraphs
+ :help 'digraph'
+ :help i_CTRL-V_digit
+
+
+37.12. How can I know which digraphs are defined and for which characters?
+
+First set the 'encoding' option properly (for instance, to utf-8), then use
+the :digraphs command to list the currently defined digraphs.
+
+For more information, read
+
+ :help :digraphs
+ :help 'encoding'
+
+
+=============================================================================
+
+Current Maintainer: Yegappan Lakshmanan
+Last updated on: 2 January 2005
+