m-chrzan.xyz
aboutsummaryrefslogtreecommitdiff
path: root/vim.md
diff options
context:
space:
mode:
authorMarcin Chrzanowski <marcin.j.chrzanowski@gmail.com>2019-07-27 17:32:02 -0700
committerMarcin Chrzanowski <marcin.j.chrzanowski@gmail.com>2019-07-27 17:32:02 -0700
commit19bc10c03a2f2de8e7f0968a4a59f9289c6be854 (patch)
tree3de71dab5cbbbec96c8b4616ba4837c916adc7c9 /vim.md
parent707e8ab96e00d8110e4c6e0790e984184b6fc2ca (diff)
Add some fresh vim tips
Diffstat (limited to 'vim.md')
-rw-r--r--vim.md36
1 files changed, 36 insertions, 0 deletions
diff --git a/vim.md b/vim.md
index c69b9c4..f652188 100644
--- a/vim.md
+++ b/vim.md
@@ -13,6 +13,42 @@
| `'` | `: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