m-chrzan.xyz
aboutsummaryrefslogtreecommitdiff
path: root/vim.md
blob: 049490b191a1c71e95d662a399ba6434c08ced3f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# Vim tricks

## Navigating help

| prefix | example       | context                                          |
| ------ | ------------- | ------------------------------------------------ |
| `:`    | `:h :r`       | ex command (command starting with a colon)       |
| `none` | `:h r`        | normal mode                                      |
| `v_`   | `:h v_r`      | visual mode                                      |
| `i_`   | `:h i_CTRL-W` | insert mode                                      |
| `c_`   | `:h c_CTRL-R` | ex command line                                  |
| `/`    | `:h /\r`      | search pattern (in this case, `:h \r` also works |
| `'`    | `:h 'ro'`     | option                                           |
| `-`    | `:h -r`       | Vim argument (starting Vim)                      |

## Registers

: is the "last command" register. @: reruns the last command.

## Marks

mA - capital letters are global, will jump to file
`a - jumps to line and column of mark, not just line

## v/V/<c-v> as operators

Most commands act line-wise (d2j deletes two lines). v makes things
character-wise, <c-v> makes them block-wise.

## Ranges

    g/regex/command # executes command on each line matching regex
    v/regex/command # executes command on each line not matching regex

## Ex commands

    :norm abc # runs the keys abc on each line in range
    :g/abc/norm dt; # deletes until semicolon on each line with "abc"

    :co <location> # copies range to location (can be ., +n, 'a)
    :mv <location> # same but moves

## Visual mode

gv - selects the previous visual
g<c-a/x> - increment/decrement by 1 more on each selected line

    0          1            1
    0 <c-a> -> 1  g<c-a> -> 2
    0          1            3

## Using vim as a hex editor?

    :%!xxd
    :%!xxd -r

## Spellcheck

    :setlocal spell spelllang=en_us
    [/]s - previous/next marked word
    [/]S - previous/next bad word