Bigger headings for better separation

This commit is contained in:
Marco Hinz 2016-07-14 01:07:09 +02:00
parent aa404e7d8b
commit 9518a934bd

196
README.md
View File

@ -10,7 +10,7 @@ My [vimrc](https://github.com/mhinz/dotfiles/blob/master/vim/vimrc).
---
#### [Intro](#intro-1)
## [Intro](#intro-1)
- [What is Vim?](#what-is-vim)
- [The Vim Philosophy](#the-vim-philosophy)
@ -19,7 +19,7 @@ My [vimrc](https://github.com/mhinz/dotfiles/blob/master/vim/vimrc).
- [What kind of Vim am I running?](#what-kind-of-vim-am-i-running)
- [Cheatsheets](#cheatsheets)
#### [Basics](#basics-1)
## [Basics](#basics-1)
- [Buffers, windows, tabs?](#buffers-windows-tabs)
- [Active, loaded, listed, named buffers?](#active-loaded-listed-named-buffers)
@ -41,7 +41,7 @@ My [vimrc](https://github.com/mhinz/dotfiles/blob/master/vim/vimrc).
- [Sessions?](#sessions)
- [Locality?](#locality)
#### [Usage](#usage-1)
## [Usage](#usage-1)
- [Getting help offline](#getting-help-offline)
- [Getting help offline (alternative)](#getting-help-offline-alternative)
@ -59,7 +59,7 @@ My [vimrc](https://github.com/mhinz/dotfiles/blob/master/vim/vimrc).
- [Cscope](#cscope)
- [MatchIt](#matchit)
#### [Tips](#tips-1)
## [Tips](#tips-1)
- [Saner behavior of n and N](#saner-behavior-of-n-and-n)
- [Saner command-line history](#saner-command-line-history)
@ -77,13 +77,13 @@ My [vimrc](https://github.com/mhinz/dotfiles/blob/master/vim/vimrc).
- [Faster keyword completion](#faster-keyword-completion)
- [Cosmetic changes to colorschemes](#cosmetic-changes-to-colorschemes)
#### [Commands](#commands-1)
## [Commands](#commands-1)
- [:global](#global) - Execute a command on all matching lines.
- [:normal and :execute](#normal-and-execute) - The scripting dream team.
- [:redir](#redir) - Redirect messages.
#### [Debugging](#debugging-1)
## [Debugging](#debugging-1)
- [General tips](#general-tips)
- [Verbosity](#verbosity)
@ -92,7 +92,7 @@ My [vimrc](https://github.com/mhinz/dotfiles/blob/master/vim/vimrc).
- [Debugging Vim scripts](#debugging-vim-scripts)
- [Debugging syntax files](#debugging-syntax-files)
#### [Miscellaneous](#miscellaneous-1)
## [Miscellaneous](#miscellaneous-1)
- [Additional resources](#additional-resources)
- [Vim distributions](#vim-distributions)
@ -101,7 +101,7 @@ My [vimrc](https://github.com/mhinz/dotfiles/blob/master/vim/vimrc).
- [Easter eggs](#easter-eggs)
- [Why hjkl for navigation?](#why-hjkl-for-navigation)
#### [Quirks](#quirks-1)
## [Quirks](#quirks-1)
- [Editing small files is slow](#editing-small-files-is-slow)
- [Editing huge files is slow](#editing-huge-files-is-slow)
@ -109,15 +109,15 @@ My [vimrc](https://github.com/mhinz/dotfiles/blob/master/vim/vimrc).
- [Bracketed paste (or why do I have to set 'paste' all the time?)](#bracketed-paste-or-why-do-i-have-to-set-paste-all-the-time)
- [Delays when using escape key in terminal](#delays-when-using-escape-key-in-terminal)
#### [List of colorschemes](#list-of-colorschemes-1)
## [List of colorschemes](#list-of-colorschemes-1)
#### [List of plugins](content/plugins.md)
## [List of plugins](content/plugins.md)
---
## Intro
# Intro
#### What is Vim?
## What is Vim?
[Vim](http://www.vim.org) is a text editor with a long line of ancestors that
goes back to [qed](https://en.wikipedia.org/wiki/QED_(text_editor)). [Bram
@ -139,7 +139,7 @@ Read [Why, oh WHY, do those #?@! nutheads use
vi?](http://www.viemu.com/a-why-vi-vim.html) to see common misconceptions about
Vim explained.
#### The Vim Philosophy
## The Vim Philosophy
Vim adheres to the modal editing philosophy. This means that it provides
multiple modes and the meaning of keys changes according to the mode. You
@ -165,7 +165,7 @@ over already. This reduces [cognitive
load](https://en.wikipedia.org/wiki/Cognitive_load) and helps to focus on the
actual task.
#### First steps
## First steps
Vim comes bundled with an interactive tutorial that teaches the most basic
things you need to know about. You can start it from the shell:
@ -201,7 +201,7 @@ One last advice: Please learn how to use Vim properly before starting to add all
kinds of hyped [plugins](#managing-plugins) that only implement features that
Vim already supports natively.
#### Minimal vimrc
## Minimal vimrc
The user vimrc can be put into `~/.vimrc` or for the sake of better separation
into `~/.vim/vimrc`. The latter makes it easy to put the entire configuration
@ -224,7 +224,7 @@ vimrc on Github (often in a repository called "vim-config" or "dotfiles"), so
whenever you find a plugin you like, look up its maintainer's Github page and
look through the repositories.
#### What kind of Vim am I running?
## What kind of Vim am I running?
Looking at `:version` will give you all the information you need to know about
how the currently running Vim binary was compiled.
@ -270,7 +270,7 @@ Related help:
:h has-patch
```
#### Cheatsheets
## Cheatsheets
- http://people.csail.mit.edu/vgod/vim/vim-cheat-sheet-en.png
- https://cdn.shopify.com/s/files/1/0165/4168/files/preview.png
@ -280,9 +280,9 @@ Related help:
Or quickly open a cheatsheet from within Vim: [vim-cheat40](https://github.com/lifepillar/vim-cheat40).
## Basics
# Basics
#### Buffers, windows, tabs?
## Buffers, windows, tabs?
Vim is a text editor. Every time text is shown, the text is part of a
**buffer**. Each file will be opened in its own buffer. Plugins show stuff in
@ -311,7 +311,7 @@ tab page that holds one window that shows one buffer.
By the way, the buffer list is global and you can access any buffer from any
tab.
#### Active, loaded, listed, named buffers?
## Active, loaded, listed, named buffers?
Run Vim like this `vim file1`. The file's content will be loaded into a buffer.
You have a **loaded buffer** now. The content of the buffer is only synchronized
@ -331,7 +331,7 @@ associated filename. E.g. `:enew` will create an unnamed scratch buffer. Add
some text and write it to disk via `:w /tmp/foo`, and it will become a named
buffer.
#### Argument list?
## Argument list?
The [global buffer list](#buffers-windows-tabs) is a Vim thing. Before that, in
vi, there only used to be the argument list, which is also available in Vim.
@ -362,7 +362,7 @@ from the current directory and below.
Related help: `:h argument-list`
#### Mappings?
## Mappings?
You can define your own mappings with the `:map` family of commands. Each
command of that family defines a mapping for a certain set of modes. Technically
@ -433,7 +433,7 @@ Related help:
:h mapping
:h 05.3
#### Mapleader?
## Mapleader?
The mapleader is simply a placeholder than can be used with custom mappings and
is set to `\` by default.
@ -460,7 +460,7 @@ already, so use it to double-check your mappings.
See `:h mapleader` and `:h maplocalleader` for more.
#### Registers?
## Registers?
Registers are slots that save text. Copying text into a register is called
**yanking** and extracting text from a register is called **pasting**.
@ -516,7 +516,7 @@ I suggest playing around with all these registers a bit and constantly checking
**Fun fact**: In Emacs "yanking" stands for pasting (or _reinserting previously
killed text_) not copying.
#### Ranges?
## Ranges?
Ranges are pretty easy to understand, but many Vimmers don't know about their
full potential.
@ -585,7 +585,7 @@ Related help:
:h 10.3
```
#### Marks?
## Marks?
You use marks to remember a position, that is line number and column, in a file.
@ -629,7 +629,7 @@ would get a range that denotes the visual selection.
Use `:marks` to list all marks. Read everything in `:h mark-motions`.
#### Completion?
## Completion?
Vim provides many kinds of insert mode completions. If there are multiple
matches, a popup menu will let you navigate to the match of your choice.
@ -681,7 +681,7 @@ Related help:
:h new-omni-completion
```
#### Motions? Operators? Text objects?
## Motions? Operators? Text objects?
**Motions** move the cursor. You all know `h`/`j`/`k`/`l`. Or `w` and `b`. Even
`/` is a motion. They also take a count. `2?the<cr>` jumps to the second last
@ -721,7 +721,7 @@ and everything in between.
See `:h text-objects` for all available text objects.
#### Autocmds?
## Autocmds?
On many occasions, Vim emits events. You hook into these events by using
autocmds.
@ -767,7 +767,7 @@ Putting it in a nutshell, Vim makes heavy use of events and autocmds but also
exposes a clean interface to hook into that event-driven system for
customization.
#### Changelist? Jumplist?
## Changelist? Jumplist?
The positions of the last 100 changes are kept in the **changelist**. Several
small changes on the same line will be merged together, but the position will be
@ -803,7 +803,7 @@ Related help:
:h jumplist
```
#### Undo tree?
## Undo tree?
The latest changes to the text state are remembered. You can use _undo_ to
revert changes and _redo_ to reapply previously reverted changes.
@ -876,7 +876,7 @@ Related help:
:h usr_32
```
#### Quickfix and location lists?
## Quickfix and location lists?
Every time an action has to return a list of locations, _quickfix_ or _location_
lists can be used. In this case a location is a file, a line number and
@ -921,7 +921,7 @@ list.
Assuming any files contained the string "foo", it should be shown now in the
quickfix window.
#### Macros?
## Macros?
Vim allows _recording_ typed characters into a [register](#registers). It's a
great way to automate certain tasks on the fly. (For more elaborate tasks, [Vim
@ -985,7 +985,7 @@ Related help:
:h 'lazyredraw'
```
#### Colorschemes?
## Colorschemes?
Colorschemes are the way to style your Vim. Vim consists of many components and
each of those can be customized with different colors for the foreground,
@ -1018,7 +1018,7 @@ Related:
- [List of colorschemes](#list-of-colorschemes-1)
- [Cosmetic changes to colorschemes](#cosmetic-changes-to-colorschemes)
#### Folding?
## Folding?
Every text (or source code) has a certain structure. If you have a structure, it
means you have regions of logically separated text. Folding allows to "fold"
@ -1048,7 +1048,7 @@ Related help:
:h folds
```
#### Sessions?
## Sessions?
If you save a **view** (`:h :mkview`), the current state of the window (and
options and mappings) gets saved for later use (`:h :loadview`).
@ -1087,7 +1087,7 @@ Related help:
:h v:this_session
```
#### Locality?
## Locality?
Many of the concepts mentioned above also have _local_ counterparts:
@ -1102,9 +1102,9 @@ Many of the concepts mentioned above also have _local_ counterparts:
Variables also sport different scopes, but will be explained in
[Vim scripting](#vim-scripting).
## Usage
# Usage
#### Getting help offline
## Getting help offline
Vim comes with great documentation in the form of single text files with a
special layout. Vim uses a system based on tags for accessing certain parts of
@ -1141,7 +1141,7 @@ jump to the next/previous match. Or use `:copen` to open the quickfix window,
navigate to an entry and hit `<cr>` to jump to that match. See `:h quickfix` for
the whole truth.
#### Getting help offline (alternative)
## Getting help offline (alternative)
This list was compiled by @chrisbra, one of the most active Vim developers, and
posted to [vim_dev](https://groups.google.com/forum/#!forum/vim_dev).
@ -1261,7 +1261,7 @@ from a user perspective and less detailed) will be mentioned at the top of help
pages if they are available. So `:h pattern.txt` mentions the user guide topics
`:h 03.9` and `:h usr_27`.
#### Getting help online
## Getting help online
If you have an issue you can't resolve or are in need of general guidance, see
the [vim_use](https://groups.google.com/forum/#!forum/vim_use) mailing list.
@ -1272,7 +1272,7 @@ Another great resource is using
If you want to report a Vim bug, use the
[vim_dev](https://groups.google.com/forum/#!forum/vim_dev) mailing list.
#### Autocmds in practice
## Autocmds in practice
You can trigger any event right now: `:doautocmd BufRead`.
@ -1331,7 +1331,7 @@ instead:
autocmd VimEnter * nested edit $MYVIMRC
```
#### Clipboard
## Clipboard
Required [features](#what-kind-of-vim-am-i-running): `+clipboard` and optionally
`+xterm_clipboard` if you want to use the `'clipboard'` option on a Unix system
@ -1348,7 +1348,7 @@ Related help:
Also see: [Bracketed paste (or why do I have to set 'paste' all the
time?)](#bracketed-paste-or-why-do-i-have-to-set-paste-all-the-time)
##### Clipboard usage (Windows, OSX)
### Clipboard usage (Windows, OSX)
Windows comes with a
[clipboard](https://msdn.microsoft.com/en-us/library/windows/desktop/ms649012(v=vs.85).aspx)
@ -1397,7 +1397,7 @@ Related help files:
:h 'go_a'
```
##### Clipboard usage (Linux, BSD, ...)
### Clipboard usage (Linux, BSD, ...)
If your OS uses [X](http://www.x.org/wiki), things work a bit different. X
implements the [X Window System
@ -1461,7 +1461,7 @@ Related help:
:h clipboard-unnamedplus
```
#### Restore cursor position when opening file
## Restore cursor position when opening file
Without this, you will always be at line 1 when opening a file. With this, you
will be at the position where you left off.
@ -1481,7 +1481,7 @@ it was altered by another program).
This requires the use of a viminfo file: `:h viminfo-'`.
#### Handling backup, swap, undo, and viminfo files
## Handling backup, swap, undo, and viminfo files
Depending on the options, Vim creates up to 4 kinds of working files.
@ -1577,7 +1577,7 @@ file already exists, it probably means that someone else is editing the file at
the moment. You lose this "feature" when you save your swap files in the home
directory.
#### Editing remote files
## Editing remote files
Vim comes with the netrw plugin that enables editing remote files. Actually it
transfers the remote file to a local temporary file via scp, opens a buffer
@ -1615,7 +1615,7 @@ Another possibility is using [sshfs](https://wiki.archlinux.org/index.php/Sshfs)
which uses [FUSE](https://en.wikipedia.org/wiki/Filesystem_in_Userspace) to
mount a remote filesystem into your local filesystem.
#### Managing plugins
## Managing plugins
[Pathogen](https://github.com/tpope/vim-pathogen) was the first popular tool for
managing plugins. Actually it just adjusts the _runtimepath_ (`:h 'rtp'`) to
@ -1633,7 +1633,7 @@ alphabetic sequence:
Plug is my favorite, but your mileage may vary.
#### Block insert
## Block insert
This is a technique to insert the same text on multiple consecutive lines at the
same time. See this
@ -1666,7 +1666,7 @@ but quickly becomes second nature.
If you want to get real fancy, have a look at
[multiple-cursors](https://github.com/terryma/vim-multiple-cursors).
#### Running external programs and using filters
## Running external programs and using filters
Disclaimer: Vim is single-threaded, so running an external program in the
foreground will block everything else. Sure, you can use one of Vim's
@ -1710,7 +1710,7 @@ which is fine for scripts, but when doing it on the fly, I find it easier to use
:h filter
:h :read!
#### Cscope
## Cscope
[Cscope](http://cscope.sourceforge.net/) does more things than
[ctags](http://ctags.sourceforge.net/), but only supports C (and C++ and Java to
@ -1730,7 +1730,7 @@ knows much more about your data:
- Where is this source file in the directory structure?
- What files include this header file?
##### 1. Build the database
### 1. Build the database
Do this in the root of your project:
@ -1749,7 +1749,7 @@ $ find . -name "*.java" > cscope.files
$ cscope -bq
```
##### 2. Add the database
### 2. Add the database
Open a connection to your freshly built database:
@ -1765,7 +1765,7 @@ Verify that the connection was made:
(Yes, you can add multiple connections.)
##### 3. Query the database
### 3. Query the database
```vim
:cs find <kind> <query>
@ -1804,7 +1804,7 @@ convenient if you already have tag-related mappings.
Related help: `:h cscope`
#### MatchIt
## MatchIt
Since Vim is written in C, a lot of features assume C-like syntax. By default,
if your cursor is on `{` or `#endif`, you can use `%` to jump to the
@ -1851,9 +1851,9 @@ Related help:
:h b:match_words
```
## Tips
# Tips
#### Saner behavior of n and N
## Saner behavior of n and N
The direction of `n` and `N` depends on whether `/` or `?` was used for
searching forward or backward respectively. This is pretty confusing to me.
@ -1865,7 +1865,7 @@ nnoremap <expr> n 'Nn'[v:searchforward]
nnoremap <expr> N 'nN'[v:searchforward]
```
#### Saner command-line history
## Saner command-line history
If you're anything like me, you're used to going to next and previous items via
`<c-n>` and `<c-p>` respectively. By default, this also works in the
@ -1884,7 +1884,7 @@ cnoremap <c-p> <up>
I depend on this behaviour several times a day.
#### Saner CTRL-L
## Saner CTRL-L
By default, `<c-l>` clears and redraws the screen (like `:redraw!`). The
following mapping does the same, plus de-highlighting the matches found via `/`,
@ -1896,7 +1896,7 @@ diff mode:
nnoremap <leader>l :nohlsearch<cr>:diffupdate<cr>:syntax sync fromstart<cr><c-l>
```
#### Disable audible and visual bells
## Disable audible and visual bells
```vim
set noerrorbells
@ -1906,7 +1906,7 @@ set t_vb=
See [Vim Wiki: Disable beeping](http://vim.wikia.com/wiki/Disable_beeping).
#### Quickly move current line
## Quickly move current line
Sometimes I need a quick way to move the current line above or below:
@ -1917,7 +1917,7 @@ nnoremap ]e :<c-u>execute 'move +'. v:count1<cr>
These mappings also take a count, so `2]e` moves the current line 2 lines below.
#### Quickly add empty lines
## Quickly add empty lines
```vim
nnoremap [<space> :<c-u>put! =repeat(nr2char(10), v:count1)<cr>'[
@ -1926,7 +1926,7 @@ nnoremap ]<space> :<c-u>put =repeat(nr2char(10), v:count1)<cr>
Now `5[<space>` inserts 5 blank lines above the current line.
#### Quickly edit your macros
## Quickly edit your macros
This is a real gem! The mapping takes a register (or `*` by default) and opens
it in the cmdline-window. Hit `<cr>` when you're done editing for setting the
@ -1943,7 +1943,7 @@ Use it like this `<leader>m` or `"q<leader>m`.
Notice the use of `<c-r><c-r>` to make sure that the `<c-r>` is inserted
literally. See `:h c_^R^R`.
#### Quickly jump to header or source file
## Quickly jump to header or source file
This technique can probably be applied to many filetypes. It sets _file marks_
(see `:h marks`) when leaving a source or header file, so you can quickly jump
@ -1957,7 +1957,7 @@ autocmd BufLeave *.h mark H
**NOTE**: The info is saved in the viminfo file, so make sure that `:set
viminfo?` includes `:h viminfo-'`.
#### Quickly change font size in GUI
## Quickly change font size in GUI
I think this was taken from tpope's config:
@ -1966,7 +1966,7 @@ command! Bigger :let &guifont = substitute(&guifont, '\d\+$', '\=submatch(0)+1'
command! Smaller :let &guifont = substitute(&guifont, '\d\+$', '\=submatch(0)-1', '')
```
#### Change cursor style dependent on mode
## Change cursor style dependent on mode
I like to use a block cursor in normal mode, i-beam cursor in insert mode, and
underline cursor in replace mode.
@ -1996,7 +1996,7 @@ even support different cursor styles. Check the documentation.
The example above works with iTerm2.
#### Don't lose selection when shifting sidewards
## Don't lose selection when shifting sidewards
If you select one or more lines, you can use `<` and `>` for shifting them
sidewards. Unfortunately you immediately lose the selection afterwards.
@ -2013,7 +2013,7 @@ Now you can use `>>>>>` on your visual selection without any problems.
**NOTE**: The same can be achieved using `.`, which repeats the last change.
#### Reload a file on saving
## Reload a file on saving
Using [autocmds](#autocmds) you can do anything on saving a file, e.g. sourcing
it in case of a dotfile or running a linter to check for syntactical errors in
@ -2024,7 +2024,7 @@ autocmd BufWritePost $MYVIMRC source $MYVIMRC
autocmd BufWritePost ~/.Xdefaults call system('xrdb ~/.Xdefaults')
```
#### Smarter cursorline
## Smarter cursorline
I love the cursorline, but I only want to use it in the current window and not
when being in insert mode:
@ -2034,7 +2034,7 @@ autocmd InsertLeave,WinEnter * set cursorline
autocmd InsertEnter,WinLeave * set nocursorline
```
#### Faster keyword completion
## Faster keyword completion
The keyword completion (`<c-n>`/`<c-p>`) tries completing whatever is listed in
the `'complete'` option. By default, this also includes tags (which can be
@ -2046,7 +2046,7 @@ set complete-=i " disable scanning included files
set complete-=t " disable searching tags
```
#### Cosmetic changes to colorschemes
## Cosmetic changes to colorschemes
Always use a dark gray statusline, no matter what colorscheme is chosen:
@ -2061,12 +2061,12 @@ color_name` which should be set by all valid colorschemes):
autocmd ColorScheme lucius highlight StatusLine ctermbg=darkgray cterm=NONE guibg=darkgray gui=NONE
```
## Commands
# Commands
Useful commands that are good to know. Use `:h :<command name>` to learn more
about them, e.g. `:h :global`.
#### :global
## :global
Execute a command on all matching lines. E.g. `:global /regexp/ print` will use
`:print` on all lines that contain "regexp".
@ -2084,7 +2084,7 @@ next blank line (matched by the regular expression `^$`) that contain "foo":
:,/^$/g/foo/d
```
#### :normal and :execute
## :normal and :execute
These commands are commonly used in Vim scripts.
@ -2110,7 +2110,7 @@ down "n" lines:
:execute 'normal!' n . 'j'
```
#### :redir
## :redir
Many commands print messages and `:redir` allows to redirect that output. You
can redirect to files, [registers](#registers) or variables.
@ -2126,9 +2126,9 @@ can redirect to files, [registers](#registers) or variables.
Related help: `:h :redir`
## Debugging
# Debugging
#### General tips
## General tips
If you encounter a strange behaviour, try reproducing it like this:
@ -2163,7 +2163,7 @@ the active upper half. Move the `:finish` to the middle of _that_ half.
Otherwise, the issue is in the inactive lower half. Move the `:finish` to the
middle of _that_ half. And so on.
#### Verbosity
## Verbosity
Another useful way for observing what Vim is currently doing is increasing the
verbosity level. Currently Vim supports 9 different levels. See `:h 'verbose'`
@ -2208,7 +2208,7 @@ fear no more, you can simply redirect the output to a file:
You can also enable verbosity at starting time, with the `-V` option. It
defaults to verbosity level 10. E.g. `vim -V5`.
#### Profiling startup time
## Profiling startup time
Vim startup feels slow? Time to crunch some numbers:
@ -2220,7 +2220,7 @@ The first column is the most important as it shows the elapsed absolute time. If
there is a big jump in time between two lines, the second line is either a very
big file or a file with faulty VimL code that is worth investigating.
#### Profiling at runtime
## Profiling at runtime
Required [feature](#what-kind-of-vim-am-i-running): `+profile`
@ -2252,7 +2252,7 @@ two different sections `FUNCTIONS SORTED ON TOTAL TIME` and `FUNCTIONS SORTED ON
SELF TIME` that are worth gold. At a quick glance you can see, if a certain
function is taking too long.
#### Debugging Vim scripts
## Debugging Vim scripts
If you ever used a command-line debugger before, `:debug` will quickly feel
familiar.
@ -2305,7 +2305,7 @@ this case.
`:debug` can be used in combination with the [verbose](#verbosity) option.
#### Debugging syntax files
## Debugging syntax files
Syntax files are often the cause for slowdowns due to wrong and/or complex
regular expressions. If the `+profile` [feature](#what-kind-of-vim-am-i-running)
@ -2324,9 +2324,9 @@ even match.
See `:h :syntime`.
## Miscellaneous
# Miscellaneous
#### Additional resources
## Additional resources
| Resource | Description |
|----------|-------------|
@ -2339,7 +2339,7 @@ See `:h :syntime`.
| [Why, oh WHY, do those #?@! nutheads use vi?](http://www.viemu.com/a-why-vi-vim.html) | Common misconceptions explained. |
| [Your problem with Vim is that you don't grok vi](http://stackoverflow.com/a/1220118) | Concise, informative and correct. A real gem. |
#### Vim distributions
## Vim distributions
Vim distributions are Vim + custom settings + custom plugins from certain
authors and are therefore very opinionated.
@ -2370,7 +2370,7 @@ looking at some distributions:
- [janus](https://github.com/carlhuda/janus.git)
- [spf13](https://github.com/spf13/spf13-vim)
#### Standard plugins
## Standard plugins
Surprising to many people, Vim comes with a handful of plugins on its own that
all get loaded by default. Check `:scriptnames` after starting Vim to see all
@ -2394,7 +2394,7 @@ bails out. No further code (mappings, commands, logic) will be processed.
| vimball | `let g:loaded_vimballPlugin = 1` | `:h pi_vimball` |
| zip | `let g:loaded_zipPlugin = 1` | `:h pi_zip` |
#### Map CapsLock to Control
## Map CapsLock to Control
CapsLock belongs to the most useless keys on your keyboard, but it's much easier
to reach than the Control key, since it lies on your [home
@ -2427,7 +2427,7 @@ An alternative would be using [xcape](https://github.com/alols/xcape).
See [superuser.com: Map Caps-Lock to Control in Windows
8.1](http://superuser.com/questions/764782/map-caps-lock-to-control-in-windows-8-1).
#### Easter eggs
## Easter eggs
| Command | Message |
|-----------|---------|
@ -2441,9 +2441,9 @@ See [superuser.com: Map Caps-Lock to Control in Windows
| `:help!` | `E478: Don't panic!` (Glitch? When used in a help buffer (`buftype=help`) this works like `:h help.txt` instead.) |
| `:smile` | Try it out yourself. ;-) Added in 7.4.1005. |
#### Standard plugins
## Standard plugins
#### Why hjkl for navigation?
## Why hjkl for navigation?
When [Bill Joy](https://en.wikipedia.org/wiki/Bill_Joy) created
[vi](https://en.wikipedia.org/wiki/Vi), a predecessor of Vim, he did it on a
@ -2454,9 +2454,9 @@ Keyboard layout: [click](https://raw.githubusercontent.com/mhinz/vim-galore/mast
This also shows why `~` is used to denote the home directory on Unix systems.
## Quirks
# Quirks
#### Editing small files is slow
## Editing small files is slow
There are two things which can have a huge impact on performance:
@ -2476,7 +2476,7 @@ There are two things which can have a huge impact on performance:
**NOTE**: You only need to do this if you experience actual performance
drawbacks. In most cases using the things mentioned above is absolutely fine.
#### Editing huge files is slow
## Editing huge files is slow
The biggest issue with big files is, that Vim reads the whole file at once. This
is done due to how buffers are represented internally.
@ -2501,14 +2501,14 @@ $ vim -n -u NONE -i NONE -N
Putting it in a nutshell, try to avoid using Vim when intending to write really
huge files. :\
#### Newline used for NUL
## Newline used for NUL
NUL characters (`\0`) in a file, are stored as newline (`\n`) in memory and
displayed in a buffer as `^@`.
See `man 7 ascii` and `:h NL-used-for-Nul` for more information.
#### Bracketed paste (or why do I have to set 'paste' all the time?)
## Bracketed paste (or why do I have to set 'paste' all the time?)
Bracketed paste mode allows terminal emulators to distinguish between typed text
and pasted text.
@ -2537,7 +2537,7 @@ Additional read from the same author as the plugin:
**Neovim**: Neovim tries to make all of this much more seamless and sets
bracketed paste mode automatically if the terminal emulator supports it.
#### Delays when using escape key in terminal
## Delays when using escape key in terminal
If you live in the command-line, you probably use a so-called _terminal
emulator_ like xterm, gnome-terminal, iTerm2, etc. (opposed to a real
@ -2600,7 +2600,7 @@ your `~/.tmux.conf`:
set -sg escape-time 0
```
## List of colorschemes
# List of colorschemes
Here's a list of commonly used colorschemes: