mirror of
https://github.com/mhinz/vim-galore.git
synced 2025-04-10 23:19:29 +08:00
Markdown formatting and typos
This commit is contained in:
parent
76e0d385cc
commit
08bcf1b11e
56
README.md
56
README.md
@ -9,6 +9,7 @@ added every day. Things about to be added can be found here:
|
|||||||
---
|
---
|
||||||
|
|
||||||
#### [Basics](#basics-1)
|
#### [Basics](#basics-1)
|
||||||
|
|
||||||
- [Buffers, windows, tabs?](#buffers-windows-tabs)
|
- [Buffers, windows, tabs?](#buffers-windows-tabs)
|
||||||
- [Active, loaded, listed, named buffers?](#active-loaded-listed-named-buffers)
|
- [Active, loaded, listed, named buffers?](#active-loaded-listed-named-buffers)
|
||||||
- [Mappings?](#mappings)
|
- [Mappings?](#mappings)
|
||||||
@ -19,12 +20,14 @@ added every day. Things about to be added can be found here:
|
|||||||
- [Colorschemes?](#colorschemes)
|
- [Colorschemes?](#colorschemes)
|
||||||
|
|
||||||
#### [Usage](#usage-1)
|
#### [Usage](#usage-1)
|
||||||
|
|
||||||
- [Getting help offline](#getting-help-offline)
|
- [Getting help offline](#getting-help-offline)
|
||||||
- [Getting help online](#getting-help-online)
|
- [Getting help online](#getting-help-online)
|
||||||
- [Managing plugins](#managing-plugins)
|
- [Managing plugins](#managing-plugins)
|
||||||
- [Block insert](#block-insert)
|
- [Block insert](#block-insert)
|
||||||
|
|
||||||
#### [Tips](#tips-1)
|
#### [Tips](#tips-1)
|
||||||
|
|
||||||
- [Saner behavior of n and N](#saner-behavior-of-n-and-n)
|
- [Saner behavior of n and N](#saner-behavior-of-n-and-n)
|
||||||
- [Quickly move current line](#quickly-move-current-line)
|
- [Quickly move current line](#quickly-move-current-line)
|
||||||
- [Quickly add empty lines](#quickly-add-empty-lines)
|
- [Quickly add empty lines](#quickly-add-empty-lines)
|
||||||
@ -35,20 +38,24 @@ added every day. Things about to be added can be found here:
|
|||||||
- [Don't lose selection when shifting sidewards](#dont-lose-selection-when-shifting-sidewards)
|
- [Don't lose selection when shifting sidewards](#dont-lose-selection-when-shifting-sidewards)
|
||||||
|
|
||||||
#### [Debugging](#debugging-1)
|
#### [Debugging](#debugging-1)
|
||||||
|
|
||||||
- [General tips](#general-tips)
|
- [General tips](#general-tips)
|
||||||
- [Profiling startup time](#profiling-startup-time)
|
- [Profiling startup time](#profiling-startup-time)
|
||||||
- [Profiling at runtime](#profiling-at-runtime)
|
- [Profiling at runtime](#profiling-at-runtime)
|
||||||
|
|
||||||
#### [Miscellaneous](#miscellaneous-1)
|
#### [Miscellaneous](#miscellaneous-1)
|
||||||
|
|
||||||
- [Vim distributions](#vim-distributions)
|
- [Vim distributions](#vim-distributions)
|
||||||
|
|
||||||
#### [Quirks](#quirks-1)
|
#### [Quirks](#quirks-1)
|
||||||
|
|
||||||
- [Newline used for NUL](#newline-used-for-nul)
|
- [Newline used for NUL](#newline-used-for-nul)
|
||||||
- [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 (or why do I have to set 'paste' all the time?)](#bracketed-paste-or-why-do-i-have-to-set-paste-all-the-time)
|
||||||
|
|
||||||
#### [List of colorschemes](#list-of-colorschemes-1)
|
#### [List of colorschemes](#list-of-colorschemes-1)
|
||||||
|
|
||||||
#### [List of plugins](#list-of-plugins-1)
|
#### [List of plugins](#list-of-plugins-1)
|
||||||
|
|
||||||
- [Alignment](#alignment)
|
- [Alignment](#alignment)
|
||||||
- [Code completion](#code-completion)
|
- [Code completion](#code-completion)
|
||||||
- [Commenters](#commenters)
|
- [Commenters](#commenters)
|
||||||
@ -172,9 +179,11 @@ Putting it in a nutshell, this solves our problem:
|
|||||||
|
|
||||||
The mapleader is simply a placeholder than can be used with custom mappings and
|
The mapleader is simply a placeholder than can be used with custom mappings and
|
||||||
is set to `\` by default.
|
is set to `\` by default.
|
||||||
|
|
||||||
```viml
|
```viml
|
||||||
nnoremap <leader>h :helpgrep<right>
|
nnoremap <leader>h :helpgrep<right>
|
||||||
```
|
```
|
||||||
|
|
||||||
This mapping is triggered by `\h`.
|
This mapping is triggered by `\h`.
|
||||||
|
|
||||||
You can change the mapleader like this:
|
You can change the mapleader like this:
|
||||||
@ -201,18 +210,18 @@ Vim provides 10 types of registers:
|
|||||||
|
|
||||||
| Type | Character | Filled | Contains text from.. |
|
| Type | Character | Filled | Contains text from.. |
|
||||||
|------|-----------|--------|----------------------|
|
|------|-----------|--------|----------------------|
|
||||||
| Unnamed | `"` | implicitely | Last yank or deletion. (`d`, `c`, `s`, `x`, `y`) |
|
| Unnamed | `"` | implicitly | Last yank or deletion. (`d`, `c`, `s`, `x`, `y`) |
|
||||||
| Numbered | `0` to `9` | implicitly | Register `0`: Last yank. Registers `1`: Last deletion. Register `2`: Second last deletion. And so on. Think of registers `1`-`9` as a read-only [queue](https://en.wikipedia.org/wiki/Queue_(abstract_data_type)) with 9 elements. |
|
| Numbered | `0` to `9` | implicitly | Register `0`: Last yank. Registers `1`: Last deletion. Register `2`: Second last deletion. And so on. Think of registers `1`-`9` as a read-only [queue](https://en.wikipedia.org/wiki/Queue_(abstract_data_type)) with 9 elements. |
|
||||||
| Small delete | `-` | implicitely | Last deletion that was less than one line. |
|
| Small delete | `-` | implicitly | Last deletion that was less than one line. |
|
||||||
| Named | `a` to `z`, `A` to `Z` | explicitely | For your own use. If you yank to register `a`, you replace its text. If you yank to register `A`, you append to the text in register `a`. |
|
| Named | `a` to `z`, `A` to `Z` | explicitly | For your own use. If you yank to register `a`, you replace its text. If you yank to register `A`, you append to the text in register `a`. |
|
||||||
| Read-only | `:`, `.`, `%` | implicitely | Register `:`: Last command. Register `.`: Last inserted text. Register `%`: Current filename. |
|
| Read-only | `:`, `.`, `%` | implicitly | Register `:`: Last command. Register `.`: Last inserted text. Register `%`: Current filename. |
|
||||||
| Alternate buffer | `#` | implicitely | Most of the time the previously visited buffer of the current window. See `:h alternate-file` |
|
| Alternate buffer | `#` | implicitly | Most of the time the previously visited buffer of the current window. See `:h alternate-file` |
|
||||||
| Expression | `=` | explicitely | Evaluation of the VimL expression that was yanked. E.g. do this in insert mode: `<c-r>=5+5<cr>` and "10" will be inserted in the buffer. |
|
| Expression | `=` | explicitly | Evaluation of the VimL expression that was yanked. E.g. do this in insert mode: `<c-r>=5+5<cr>` and "10" will be inserted in the buffer. |
|
||||||
| Selection and Drop | `+`, `*`, `~` | implicitely | `*` and `+` are the [clipboard](#clipboard) registers. Register `~`: From last drag'n'drop. |
|
| Selection and Drop | `+`, `*`, `~` | implicitly | `*` and `+` are the [clipboard](#clipboard) registers. Register `~`: From last drag'n'drop. |
|
||||||
| Black hole | `_` | explicitely | Use this register if you don't want any other registers implicitely affected. E.g. `"_dd` deletes the current line without affecting registers `"`, `1`, `+`, `*`. |
|
| Black hole | `_` | explicitly | Use this register if you don't want any other registers implicitly affected. E.g. `"_dd` deletes the current line without affecting registers `"`, `1`, `+`, `*`. |
|
||||||
| Last search pattern | `/` | implicitely | Last pattern used with `/`, `?`, `:global`, etc. |
|
| Last search pattern | `/` | implicitly | Last pattern used with `/`, `?`, `:global`, etc. |
|
||||||
|
|
||||||
There are numerous exceptions when registers get implicitely filled, so be sure
|
There are numerous exceptions when registers get implicitly filled, so be sure
|
||||||
to read `:h registers`.
|
to read `:h registers`.
|
||||||
|
|
||||||
Yank with `y` and paste with `p`/`P`.
|
Yank with `y` and paste with `p`/`P`.
|
||||||
@ -253,9 +262,11 @@ See `:h {event}` for a quick overview of all available events and `:h
|
|||||||
autocmd-events-abc` for more details.
|
autocmd-events-abc` for more details.
|
||||||
|
|
||||||
A typical example would be setting filetype-specific settings:
|
A typical example would be setting filetype-specific settings:
|
||||||
|
|
||||||
```viml
|
```viml
|
||||||
autocmd FileType ruby setlocal shiftwidth=2 softtabstop=2 comments-=:#
|
autocmd FileType ruby setlocal shiftwidth=2 softtabstop=2 comments-=:#
|
||||||
```
|
```
|
||||||
|
|
||||||
But how does a buffer even know that it contains Ruby code? Because another
|
But how does a buffer even know that it contains Ruby code? Because another
|
||||||
autocmd detected it as that and set the filetype accordingly which again
|
autocmd detected it as that and set the filetype accordingly which again
|
||||||
triggered the `FileType` event.
|
triggered the `FileType` event.
|
||||||
@ -267,9 +278,11 @@ filetypes under the sun.
|
|||||||
If you're brave enough, have a look at it: `:e $VIMRUNTIME/filetype.vim`. Search
|
If you're brave enough, have a look at it: `:e $VIMRUNTIME/filetype.vim`. Search
|
||||||
for "Ruby" and you'll find that Vim simply uses the file extension `.rb` to
|
for "Ruby" and you'll find that Vim simply uses the file extension `.rb` to
|
||||||
detect Ruby files:
|
detect Ruby files:
|
||||||
|
|
||||||
```viml
|
```viml
|
||||||
au BufNewFile,BufRead *.rb,*.rbw setf ruby
|
au BufNewFile,BufRead *.rb,*.rbw setf ruby
|
||||||
```
|
```
|
||||||
|
|
||||||
The `BufNewFile` and `BufRead` events in this case are hardcoded in the C
|
The `BufNewFile` and `BufRead` events in this case are hardcoded in the C
|
||||||
sources of Vim and get emitted everytime you open a file via `:e` and similar
|
sources of Vim and get emitted everytime you open a file via `:e` and similar
|
||||||
commands. Afterwards all the hundreds of filetypes from `filetype.vim` are
|
commands. Afterwards all the hundreds of filetypes from `filetype.vim` are
|
||||||
@ -281,7 +294,7 @@ customization.
|
|||||||
|
|
||||||
#### Quickfix and location lists?
|
#### Quickfix and location lists?
|
||||||
|
|
||||||
Everytime an action has to return a list of locations, _quickfix_ or _location_
|
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
|
lists can be used. In this case a location is a file, a line number and
|
||||||
optionally a column.
|
optionally a column.
|
||||||
|
|
||||||
@ -292,7 +305,7 @@ The big advantage over just putting that stuff in an empty buffer is that you
|
|||||||
get a nice uniform interface for browsing the entries.
|
get a nice uniform interface for browsing the entries.
|
||||||
|
|
||||||
At all time there's only one quickfix list, but every window can has its own
|
At all time there's only one quickfix list, but every window can has its own
|
||||||
location list. Both type of lists _feel_ the same, but use slighly different
|
location list. Both type of lists _feel_ the same, but use slightly different
|
||||||
commands for navigation.
|
commands for navigation.
|
||||||
|
|
||||||
Most common commands:
|
Most common commands:
|
||||||
@ -330,9 +343,11 @@ 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,
|
each of those can be customized with different colors for the foreground,
|
||||||
background and a few other attributes like bold text etc. They can be set like
|
background and a few other attributes like bold text etc. They can be set like
|
||||||
this:
|
this:
|
||||||
|
|
||||||
```viml
|
```viml
|
||||||
:highlight Normal ctermbg=1 guibg=red
|
:highlight Normal ctermbg=1 guibg=red
|
||||||
```
|
```
|
||||||
|
|
||||||
This would paint the background of the editor red. See `:h :highlight` for more
|
This would paint the background of the editor red. See `:h :highlight` for more
|
||||||
information.
|
information.
|
||||||
|
|
||||||
@ -341,7 +356,7 @@ So, colorschemes are mostly a collection of `:highlight` commands.
|
|||||||
Actually, most colorschemes are really 2 colorschemes! The example above sets
|
Actually, most colorschemes are really 2 colorschemes! The example above sets
|
||||||
colors via `ctermbg` and `guibg`. The former definition will only be used if Vim
|
colors via `ctermbg` and `guibg`. The former definition will only be used if Vim
|
||||||
was started in a terminal emulator, e.g. xterm. The latter will be used in
|
was started in a terminal emulator, e.g. xterm. The latter will be used in
|
||||||
graphical environements like gVim.
|
graphical environments like gVim.
|
||||||
|
|
||||||
If you ever happen to use a certain colorscheme in Vim running in a terminal
|
If you ever happen to use a certain colorscheme in Vim running in a terminal
|
||||||
emulator and the colors don't look like the colors in the screenshot at all,
|
emulator and the colors don't look like the colors in the screenshot at all,
|
||||||
@ -440,9 +455,11 @@ after the end of each line, do this: `<c-v>3j$Atext<esc>`.
|
|||||||
|
|
||||||
Sometime you need to place the cursor somewhere after the end of the current
|
Sometime you need to place the cursor somewhere after the end of the current
|
||||||
line. You can't do that by default, but you can set the `virtualedit` option:
|
line. You can't do that by default, but you can set the `virtualedit` option:
|
||||||
|
|
||||||
```viml
|
```viml
|
||||||
set virtualedit=all
|
set virtualedit=all
|
||||||
```
|
```
|
||||||
|
|
||||||
Afterwards `$10l` or `90|` work even after the end of the line.
|
Afterwards `$10l` or `90|` work even after the end of the line.
|
||||||
|
|
||||||
See `:h blockwise-examples` for more info. It might seem complicated at first,
|
See `:h blockwise-examples` for more info. It might seem complicated at first,
|
||||||
@ -459,6 +476,7 @@ The direction of `n` and `N` depends on whether `/` or `?` was used for
|
|||||||
searching forward or backward respectively. This is pretty confusing to me.
|
searching forward or backward respectively. This is pretty confusing to me.
|
||||||
|
|
||||||
If you want `n` to always search forward and `N` backward, use this:
|
If you want `n` to always search forward and `N` backward, use this:
|
||||||
|
|
||||||
```viml
|
```viml
|
||||||
nnoremap <expr> n 'Nn'[v:searchforward]
|
nnoremap <expr> n 'Nn'[v:searchforward]
|
||||||
nnoremap <expr> N 'nN'[v:searchforward]
|
nnoremap <expr> N 'nN'[v:searchforward]
|
||||||
@ -467,16 +485,19 @@ nnoremap <expr> N 'nN'[v:searchforward]
|
|||||||
#### Quickly move current line
|
#### Quickly move current line
|
||||||
|
|
||||||
Sometimes I need a quick way to move the current line above or below:
|
Sometimes I need a quick way to move the current line above or below:
|
||||||
|
|
||||||
```viml
|
```viml
|
||||||
nnoremap [e :<c-u>execute 'move -1-'. v:count1<cr>
|
nnoremap [e :<c-u>execute 'move -1-'. v:count1<cr>
|
||||||
nnoremap ]e :<c-u>execute 'move +'. v:count1<cr>
|
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.
|
These mappings also take a count, so `2]e` moves the current line 2 lines below.
|
||||||
|
|
||||||
#### Quickly add empty lines
|
#### Quickly add empty lines
|
||||||
|
|
||||||
This is surely no must-have, but I prefer the following mappings over
|
This is surely no must-have, but I prefer the following mappings over
|
||||||
`o<esc>`/`O<esc>`:
|
`o<esc>`/`O<esc>`:
|
||||||
|
|
||||||
```viml
|
```viml
|
||||||
nnoremap [<space> :put! =''<cr>
|
nnoremap [<space> :put! =''<cr>
|
||||||
nnoremap ]<space> :put =''<cr>
|
nnoremap ]<space> :put =''<cr>
|
||||||
@ -489,9 +510,11 @@ it in the cmdline-window. Hit `<cr>` when you're done editing for setting the
|
|||||||
register.
|
register.
|
||||||
|
|
||||||
I often use this to correct typos I did while recording a macro.
|
I often use this to correct typos I did while recording a macro.
|
||||||
|
|
||||||
```viml
|
```viml
|
||||||
nnoremap <leader>m :<c-u><c-r>='let @'. v:register .' = '. string(getreg(v:register))<cr><c-f><left>
|
nnoremap <leader>m :<c-u><c-r>='let @'. v:register .' = '. string(getreg(v:register))<cr><c-f><left>
|
||||||
```
|
```
|
||||||
|
|
||||||
Use it like this `<leader>m` or `"q<leader>m`.
|
Use it like this `<leader>m` or `"q<leader>m`.
|
||||||
|
|
||||||
#### Quickly jump to header or source file
|
#### Quickly jump to header or source file
|
||||||
@ -499,6 +522,7 @@ Use it like this `<leader>m` or `"q<leader>m`.
|
|||||||
This technique can probably be applied to many filetypes. It sets _file marks_
|
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
|
(see `:h marks`) when leaving a source or header file, so you can quickly jump
|
||||||
back to the last accessed one by using `'C` or `'H` (see `:h 'A`).
|
back to the last accessed one by using `'C` or `'H` (see `:h 'A`).
|
||||||
|
|
||||||
```viml
|
```viml
|
||||||
autocmd BufLeave *.{c,cpp} mark C
|
autocmd BufLeave *.{c,cpp} mark C
|
||||||
autocmd BufLeave *.h mark H
|
autocmd BufLeave *.h mark H
|
||||||
@ -510,6 +534,7 @@ 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:
|
I think this was taken from tpope's config:
|
||||||
|
|
||||||
```viml
|
```viml
|
||||||
command! Bigger :let &guifont = substitute(&guifont, '\d\+$', '\=submatch(0)+1', '')
|
command! Bigger :let &guifont = substitute(&guifont, '\d\+$', '\=submatch(0)+1', '')
|
||||||
command! Smaller :let &guifont = substitute(&guifont, '\d\+$', '\=submatch(0)-1', '')
|
command! Smaller :let &guifont = substitute(&guifont, '\d\+$', '\=submatch(0)-1', '')
|
||||||
@ -519,6 +544,7 @@ command! Smaller :let &guifont = substitute(&guifont, '\d\+$', '\=submatch(0)-1'
|
|||||||
|
|
||||||
I like to use a block cursor in normal mode and i-beam cursor in insert mode.
|
I like to use a block cursor in normal mode and i-beam cursor in insert mode.
|
||||||
Also when using tmux in the middle.
|
Also when using tmux in the middle.
|
||||||
|
|
||||||
```viml
|
```viml
|
||||||
if empty($TMUX)
|
if empty($TMUX)
|
||||||
let &t_SI = "\<Esc>]50;CursorShape=1\x7"
|
let &t_SI = "\<Esc>]50;CursorShape=1\x7"
|
||||||
@ -528,6 +554,7 @@ else
|
|||||||
let &t_EI = "\<Esc>Ptmux;\<Esc>\<Esc>]50;CursorShape=0\x7\<Esc>\\"
|
let &t_EI = "\<Esc>Ptmux;\<Esc>\<Esc>]50;CursorShape=0\x7\<Esc>\\"
|
||||||
endif
|
endif
|
||||||
```
|
```
|
||||||
|
|
||||||
This simply tells Vim to print a certain sequence of characters ([escape
|
This simply tells Vim to print a certain sequence of characters ([escape
|
||||||
sequence](https://en.wikipedia.org/wiki/Escape_sequence)) when entering/leaving
|
sequence](https://en.wikipedia.org/wiki/Escape_sequence)) when entering/leaving
|
||||||
insert mode. The underlying terminal will process and evaluate it.
|
insert mode. The underlying terminal will process and evaluate it.
|
||||||
@ -546,10 +573,12 @@ sidewards. Unfortunately you immediately lose the selection afterwards.
|
|||||||
|
|
||||||
You can use `gv` to reselect the last selection (see `:h gv`), thus you can work
|
You can use `gv` to reselect the last selection (see `:h gv`), thus you can work
|
||||||
around it like this:
|
around it like this:
|
||||||
|
|
||||||
```viml
|
```viml
|
||||||
xnoremap < <gv
|
xnoremap < <gv
|
||||||
xnoremap > >gv
|
xnoremap > >gv
|
||||||
```
|
```
|
||||||
|
|
||||||
Now you can use `>>>>>` on your visual selection without any problems.
|
Now you can use `>>>>>` on your visual selection without any problems.
|
||||||
|
|
||||||
**NOTE**: The same can be achieved using `.`, which repeats the last change.
|
**NOTE**: The same can be achieved using `.`, which repeats the last change.
|
||||||
@ -825,3 +854,4 @@ Also see [fuzzy finders](#fuzzy-finders).
|
|||||||
- [startify](https://github.com/mhinz/vim-startify)
|
- [startify](https://github.com/mhinz/vim-startify)
|
||||||
- [surround](https://github.com/tpope/vim-surround)
|
- [surround](https://github.com/tpope/vim-surround)
|
||||||
- [unicode.vim](https://github.com/chrisbra/unicode.vim)
|
- [unicode.vim](https://github.com/chrisbra/unicode.vim)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user