diff --git a/_sass/2017/markdown/table.scss b/_sass/2017/markdown/table.scss
index dbb65fab3..c0ea3c0f0 100644
--- a/_sass/2017/markdown/table.scss
+++ b/_sass/2017/markdown/table.scss
@@ -26,6 +26,10 @@
text-align: right;
}
+ & td:first-child {
+ white-space: nowrap;
+ }
+
& td:first-child > code {
font-size: 0.86em;
color: #35a;
diff --git a/vim.md b/vim.md
index 1d0f8bca9..07202fac1 100644
--- a/vim.md
+++ b/vim.md
@@ -1,8 +1,240 @@
---
-title: vim
+title: Vim
category: Vim
+layout: 2017/sheet
---
+Getting started
+---------------
+{: .-three-column}
+
+### Navigating
+
+| Shortcut | Description |
+| --- | --- |
+| `h` `j` `k` `l` | Arrow keys |
+| `^u` _/_ `^d` | Page up/page down |
+| --- | --- |
+| `b` _/_ `w` | Previous/next word |
+| `e` _/_ `ge` | Previous/next end of word |
+| --- | --- |
+| `0` _(zero)_ | Start of line |
+| `^` | Start of line _(after whitespace)_ |
+| --- | --- |
+| `$` | End of line |
+| `gg` | First line |
+| `G` | Last line |
+{: .-shortcuts}
+
+### Entering insert mode
+
+| Shortcut | Description |
+| --- | --- |
+| `a` | Append |
+| `i` | Insert |
+| `o` | Next line |
+| `O` | Previous line |
+| --- | --- |
+| `s` | Delete char and insert |
+| `S` | Delete line and insert |
+| `C` | Delete until end of line and insert |
+| --- | --- |
+| `R` | Replace |
+{: .-shortcuts}
+
+### Exiting insert mode
+
+| Shortcut | Description |
+| --- | --- |
+| `Esc` _/_ `^[` | Exit insert mode |
+| `^c` | Exit insert mode, and abort current command |
+{: .-shortcuts}
+
+### Clipboard
+
+| Shortcut | Description |
+| --- | --- |
+| `x` | Delete character |
+| --- | --- |
+| `dd` | Delete line _(Cut)_ |
+| `yy` | Yank line _(Copy)_ |
+| --- | --- |
+| `p` | Paste |
+| `P` | Paste before |
+{: .-shortcuts}
+
+### Visual mode
+
+| Shortcut | Description |
+| --- | --- |
+| `v` | Enter visual mode |
+| `V` | Enter visual line mode |
+| `^v` | Enter visual block mode |
+| --- | --- |
+| `d` _/_ `x` | Delete selection |
+| `s` | Replace selection |
+| `y` | Yank selection _(Copy)_ |
+{: .-shortcuts}
+
+Text objects
+------------
+
+### Usage
+
+| Shortcut | Description |
+| --- | --- |
+| `vip` | Select paragraph |
+| `vipipipip` | Select more |
+| --- | --- |
+| `yip` | Yank inner paragraph |
+| `yap` | Yank paragraph (including newline) |
+| --- | --- |
+| `dip` | Delete inner paragraph |
+{: .-shortcuts}
+
+### Text objects
+
+| Shortcut | Description |
+| --- | --- |
+| `ap` | a paragraph |
+| `ip` | inner paragraph |
+| --- | --- |
+| `ap` `ip` | Paragraph |
+| `aw` `iw` | Word |
+| `as` `is` | Sentence |
+| --- | --- |
+| `a[` `a(` `a{` `a<` | A [], (), or {} block |
+| `a'` `a"` a`
| A quoted string |
+| --- | --- |
+| `ab` | A block [( |
+| `aB` | A block in [{ |
+| `at` | A XML tag block |
+{: .-shortcuts}
+
+### Navigation
+
+| Shortcut | Description |
+| --- | --- |
+| `[(` `[{` `[<` | previous `(` or `{` or `<` |
+| `])` | next |
+| --- | --- |
+| `[m` | previous method start |
+| `[M` | previous method end |
+{: .-shortcuts}
+
+
+Misc
+----
+
+### Folds
+
+| Shortcut | Description |
+| --- | --- |
+| `zo` _/_ `zO` | Open |
+| `zc` _/_ `zC` | Close |
+| `za` _/_ `zA` | Toggle |
+| --- | --- |
+| `zv` | Open folds for this line |
+| --- | --- |
+| `zM` | Close all |
+| `zR` | Open all |
+| --- | --- |
+| `zm` | Fold more _(foldlevel += 1)_ |
+| `zr` | Fold less _(foldlevel -= 1)_ |
+| --- | --- |
+| `zx` | Update folds |
+{: .-shortcuts}
+
+Uppercase ones are recursive (eg, `zO` is open recursively).
+
+### Jumping
+
+| Shortcut | Description |
+| --- | --- |
+| `^O` | Go back to previous location |
+| `^I` | Go forward |
+| --- | --- |
+| `gf` | go to file in cursor |
+{: .-shortcuts}
+
+### Counters
+
+| `^A` | increment number |
+| `^X` | decrement |
+
+### Windows
+
+| `z{height}` | Resize pane to `{height}` lines tall |
+
+### Tags
+
+| Shortcut | Description |
+| --- | --- |
+| `:tag Classname` | Jump to first definition of Classname |
+| --- | --- |
+| `^]` | Jump to definition |
+| `g]` | See all definitions |
+| `^t` | Go back to last tag |
+| `^o ^i` | Back/forward |
+| --- | --- |
+| `:tselect Classname` | Find definitions of Classname |
+| `:tjump Classname` | Find definitions of Classname (auto-select 1st) |
+{: .-shortcuts}
+
+### Case
+
+| Shortcut | Description |
+| --- | --- |
+| `~` | toggle case (Case => cASE) |
+| `gU` | uppercase |
+| `gu` | lowercase |
+| --- | --- |
+| `gUU` | uppercase current line (also `gUgU`) |
+| `guu` | lowercase current line (also `gugu`) |
+{: .-shortcuts}
+
+Do these in visual mode.
+
+### Marks
+
+| `^
| Last position of cursor in insert mode |
+| `.
| Last change |
+| ``
| Last jump |
+
+### Misc
+
+| Shortcut | Description |
+| --- | --- |
+| `.` | repeat last command |
+| `]p` | paste under the current indentation level |
+| --- | --- |
+| `zz` | Center this line |
+
+### Command line
+
+| Shortcut | Description |
+| --- | --- |
+| `` | insert current word into the command line |
+| `"` | paste from " register |
+
+### Text alignment
+
+ :center [width]
+ :right [width]
+ :left
+
+See `:help formatting`
+
+### Calculator
+
+ =128/2
+
+Do this in insert mode.
+
+Also see
+--------
+{: .-one-column}
+
* [Digraphs](vim-digraphs.html)
* [Help text](vim-help.html)
* [Vimscript](vimscript.html)
@@ -10,128 +242,3 @@ category: Vim
* [Vim-easyalign](vim-easyalign.html)
* [Vim-rails](vim-rails.html)
-Command line
-------------
-
- # insert current word into the command line
- " # paste from " register
-
-Text objects
-------------
-
- vip # Select paragraph
- vipipipip # Select more
-
- ap # a paragraph
- ip # inner paragraph
-
- ap, ip # Paragraph
- aw, iw # Word
- as, is # Sentence
-
- ab # A block [(
- aB # A block in [{
- at # A XML tag block
- a[ ( { < # A [], (), or {} block
- a' " ` # A quoted string
-
- [( [{ [< # previous ( or { or <
- ]) # next
-
- [m # previous method start
- [M # previous method end
-
-Example:
-
- yip # Yank inner paragraph
- yap # Yank paragraph (including newline)
-
-Folds
------
-
- zo # Open
- zO # Open, recursive
- zc # Close
- zC # Close, recursive
- za # Toggle
- zA # Toggle, recursive
-
- zv # Open folds for this line
-
- zM # Close all
- zR # Open all
-
- zm # Fold more (foldlevel += 1)
- zr # Fold less (foldlevel -= 1)
-
- zx # Update
-
-Jumping
--------
-
- ^O # Go back to previous location
- ^I # Go forward
-
- gf # go to file in cursor
-
-Misc
-----
-
- . # repeat last command
- ]p # paste under the current indentation level
-
- zz # Center this line
-
-Counters
---------
-
- ^A # increment number
- ^X # decrement
-
-Windows
--------
-
- z{height} # Resize pane to {height} lines tall
-
-Tags
-----
-
- :tag Classname # Jump to first definition of Classname
-
- ^] # Jump to definition
- g] # See all definitions
- C-t # Go back to last tag
- ^O ^I # Back/forward
-
- :tselect Classname # Find definitions of Classname
- :tjump Classname # Find definitions of Classname (auto-select 1st)
-
-Case
-----
-
- ~ # toggle case (Case => cASE)
- gU # uppercase
- gu # lowercase
-
- gUU # uppercase current line (also gUgU)
- guu # lowercase current line (also gugu)
-
-Marks
------
-
- `^ # Last position of cursor in insert mode
- `. # Last change
- `` # Last jump
-
-Text alignment
---------------
-
-See `:help formatting`
-
- :center [width]
- :right [width]
- :left
-
-### Calculator
-
- (Insert mode) =128/2