# Vim - Text Editor

<http://www.viemu.com/a-why-vi-vim.html>\
And also this classic answer: <https://stackoverflow.com/questions/1218390/what-is-your-most-productive-shortcut-with-vim>

### Core concepts <a href="#core-concepts" id="core-concepts"></a>

In vim you have the concept of buffers.

```bash
# List buffers
:buffers

# Switch buffer
# By number
b1
b2
# By name
b [name]


# Close/delete a buffer
:bdelete
:bd
```

### Movement - Motion commands <a href="#movement---motion-commands" id="movement---motion-commands"></a>

**Left,up,down,right**

`hjkl`

**start of line**

`0` (zero)

**end of line**

`$`

**beginning of next word**

`w`

**beginning of next word, defined by white space**

`W`

**end of the next word**

`e`

**end of the next word, defined by white space**

`E`

**back to the beginning of previous word**

`b`

**back to the end of previous word**

`B`

**go to next character of your choice**

If you want to go to the next comma

`f,`

**start of file**

`gg`

**end of file**

`G`

### Operators <a href="#operators" id="operators"></a>

Operators are commands that do things. Like delete, change or copy.

`c` - change\
`ce` - change until end of the word.\
`c$` - change until end of line.

### Combining Motions and Operators <a href="#combining-motions-and-operators" id="combining-motions-and-operators"></a>

Now that you know some motion commands and operator commands. You can start combining them.

`dw` - delete word\
`d$` - delete to the end of the line

### Count - Numbers <a href="#count---numbers" id="count---numbers"></a>

You can add numbers before motion commands. To move faster.

`4w` - move cursor three words forward\
`0` - move curso to the start of the line

You can use numbers to perform operations.\
`d3w` - delete three words

`3dd` - delete three lines

### Replace <a href="#replace" id="replace"></a>

If you need to replace a character, there is no need to enter insert-mode. You can just use replace

Go to a character and the press `r` followed by the character you want instead.

`rp` if you want to replace p.

`R`

### Clipboard <a href="#clipboard" id="clipboard"></a>

In order to copy something FROM vim to the OS-clipboard you can do this:

The `"` means that we are not entering a registry. And the `*` means the OS-clipboard. So we are yanking something and putting it in the OS-clipboard registry.

```
"*y
```

### Substitute - Search and replace <a href="#substitute---search-and-replace" id="substitute---search-and-replace"></a>

:s/thee/the/g

### Entering insert-mode <a href="#entering-insert-mode" id="entering-insert-mode"></a>

`i` - current character\
`o` - next line\
`O` - line before\
`a` - end of word\
`A` - end of line

### .vimrc <a href="#vimrc" id="vimrc"></a>

Here is all your vim-configuration.

### Plugins <a href="#plugins" id="plugins"></a>

Install vundle here\
<https://github.com/VundleVim/Vundle.vim>

**Add plugin**

Add plugin to your .vimrc-file and then open vim and write

`:PluginInstall`
