aboutsummaryrefslogtreecommitdiff
path: root/dotfiles/cheat/vim
blob: 5c14daef967012b191428b9c5b67d1d81dd70c41 (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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# File management

:e              reload file
:q              quit
:q!             quit without saving changes
:w              write file
:w {file}       write new file
:x              write file and exit

# Movement

    k
  h   l         basic motion
    j

w               next start of word
W               next start of whitespace-delimited word
e               next end of word
E               next end of whitespace-delimited word
b               previous start of word
B               previous start of whitespace-delimited word
0               start of line
$               end of line
gg              go to first line in file
G               go to end of file
gk		move down one displayed line
gj		move up one displayed line

# Insertion
#   To exit from insert mode use Esc or Ctrl-C
#   Enter insertion mode and:

a               append after the cursor
A               append at the end of the line
i               insert before the cursor
I               insert at the beginning of the line
o               create a new line under the cursor
O               create a new line above the cursor
R               enter insert mode but replace instead of inserting chars
:r {file}       insert from file

# Editing

u               undo
yy              yank (copy) a line
y{motion}       yank text that {motion} moves over
p               paste after cursor
P               paste before cursor
<Del> or x      delete a character
dd              delete a line
d{motion}       delete text that {motion} moves over

# Search and replace with the `:substitute` (aka `:s`) command

:s/foo/bar/	replace the first match of 'foo' with 'bar' on the current line only
:s/foo/bar/g	replace all matches (`g` flag) of 'foo' with 'bar' on the current line only
:%s/foo/bar/g	replace all matches of 'foo' with 'bar' in the entire file (`:%s`)
:%s/foo/bar/gc	ask to manually confirm (`c` flag) each replacement 

# Preceding a motion or edition with a number repeats it 'n' times
# Examples:
50k         moves 50 lines up
2dw         deletes 2 words
5yy         copies 5 lines
42G         go to line 42

# Multi line select and edit
1. Press Esc to enter 'command mode'
2. Use Ctrl + V to enter visual block mode.
3. Move Up / Down to select the columns of text in the lines you want to comment.
4. Then hit Shift + i and type the text you want to insert.
5. Then hit Esc , wait 1 second and the inserted text will appear on every line.

# Use normal copy pase
`"`; `+` ; `y` <= yank
`"`; `+` ; `p` <= paste

# SimpleWorkspaces.vim
To add the current dir in a Workspace: `:WorkspaceInit`
And save it in a better name: `:WorkspaceSave {name}`

# folding
# (collapse or no)

:set foldmethod=indent foldlevel=1
za # toggle indent

# spellchecking
`:set spell`
``:set spelllang=fr`
`:spell`
Then select with `z=`