---
# System prepended metadata

title: Vim Sharing
tags: [cheet sheet, public, vim]

---

# Vim Sharing

## History & Pronounced

- Vi ( Visual ) -> Bill Joy 
- Vim /vim/ -> Bram Moolenaar

> Vim is pronounced as one word, like Jim, not vi-ai-em.  It's written with a
    capital, since it's a name, again like Jim.
    
## Learning curve
    
![](https://i.imgur.com/jVDzsME.png)


## Preparation


| Name                                                                                                                             | Role           | Note                          |
|:-------------------------------------------------------------------------------------------------------------------------------- | -------------- |:----------------------------- |
| [vscode](https://code.visualstudio.com/)                                                                                         | editor         | required                      |
| [vscodevim.vim](https://marketplace.visualstudio.com/items?itemName=vscodevim.vim)                                               | vscode plugin  | required                      |
| [extr0py.vscode-relative-line-numbers](https://marketplace.visualstudio.com/items?itemName=extr0py.vscode-relative-line-numbers) | vscode plugin  | optional                      |
| [sburg.vscode-javascirpt-booster](https://marketplace.visualstudio.com/items?itemName=sburg.vscode-javascript-booster)           | vscode plugin  | optional [suggested:frontend] |
| [wix.glean](https://marketplace.visualstudio.com/items?itemName=wix.glean)                                                       | vscode plugin  | optional [suggested:frontend] |
| [vimium](https://chrome.google.com/webstore/detail/vimium/dbepggeogbaibhgnhhndojpepiihcmeb)                                      | browser plugin | optional [suggested:all]      |
| [hackmd](https://hackmd.io)                                                                                                      | online notes   | optional [suggested:all]      |


## Suggested vscode vim Configuration
```json=
{
	"vim.hlsearch": true,
	"vim.foldfix": true,
	"vim.useSystemClipboard": true,
	"editor.cursorSurroundingLines": 15, 
	"vim.surround": true,
	"vim.easymotion": true,
}
```

## Switch Between Modes

- normal mode
  - switch on
      - `<ESC>` / `<C-c>` / `<C-[>` [suggested]
  - switch off
      - `i` / `o` / `a` / `s` / `c`
- visual mode
  - switch on
      - `v` / `<C-v>`
  - switch off
      - `<ESC>` / `<C-c>` / `<C-[>` [suggested]
- insert mode
  - switch on 
      - `i` / `o` / `a` / `s` / `c`
  - switch off
      - `<ESC>` / `<C-c>` / `<C-[>` [suggested]
- command mode
  - switch on 
      - `:`
  - switch off
      - `<ESC>` / `<C-c>` / `<C-[>` [suggested]
      

### edit action

| key | name       | intention                    | using with text object | notes                           |
| --- | ---------- |:---------------------------- |:----------------------:|:------------------------------- |
| v   | visual     | select                       |           O            | `u` casing `~` toggle casing    |
| y   | yank       | copy selection               |           O            |                                 |
| d   | delete     | delete selection with scope  |           O            |                                 |
| c   | change     | delete and insert with scope |           O            |                                 |
| i   | insert     | insert chars before cursor   |           X            |                                 |
| a   | append     | append chars after cursor    |           X            |                                 |
| x   | delete     | delete selection             |           X            |                                 |
| o   | open       | open a new line              |           X            |                                 |
| s   | substitute | delete selection and insert  |           X            |                                 |
| p   | paste      | paste the copy in clipboard  |           X            |                                 |
| u   | undo       | undo action                  |           X            |                                 |
| r   | replace    | replace a char               |           X            |                                 |

### navigation action 

| key | name   | intention                  | using with text object | notes                                               |
| --- | ------ |:-------------------------- |:----------------------:|:--------------------------------------------------- |
| f   | find   | find char                  |           X            |                                                     |
| g   | go     | go to                      |           X            | `d` definition `gg` top `G` end `<C-o>` back cursor |
| b   | back   | back to word start         |           X            |                                                     |
| e   | end    | forward to word end        |           X            |                                                     |
| w   | word   | forward to next word start |           X            |                                                     |
| %   | pairs  | jump between pairs         |           X            |                                                     |
| /   | search | search a word with regex   |           X            | `<C-n>` next `<C-N>` previous                       |
| {   | block  | search a word with regex   |           X            | `<C-n>` next `<C-N>` previous                       |


### Suggested vscode vim navigation Configuration
```json=
{
   "vim.normalModeKeyBindingsNonRecursive": [
        {
            "before": ["z", "n"],
            "commands": ["editor.action.marker.next"]
        },
        {
            "before": ["z", "p"],
            "commands": ["editor.action.marker.prev"]
        },
    ], 
}
```

### commands

- stream editor (sed)
- split
- switch buffer `<C-w> direction` `<C-w>*2`


## Text Object ( Scope + Noun )

### scope

| key | name   | intention    |
| --- | ------ |:------------ |
| i   | inner | inner scope |
| a   | around | around scope |


### Noun

| key | name            |
| --- |:--------------- |
| w   | word            |
| p   | paragraph       |
| b   | block           |
| i   | indentation     |
| {   | curly brackets  |
| [   | square brackets |
| (   | round brackets  |
| '   | quotation mark  |
| `   | back tick       |


## cheet sheet
![](https://external-preview.redd.it/YR2lVxHjzKwIIoRqFeusj3182IxUILqM2zjMSI0g654.png?auto=webp&s=f4202aed992ff7223a513e67047ca33b9f41bbc8)



