98 lines
2.8 KiB
Markdown
98 lines
2.8 KiB
Markdown
---
|
|
title: Motions
|
|
---
|
|
|
|
# Vim Basic Motions
|
|
|
|
### Cursors motions
|
|
|
|
First in VIM we can use the arrow keys if we like to move around the text file, but it is not the best way to do so,
|
|
and we lost the advantage of combine commands that VIM provides.
|
|
|
|
Instead of that the default and best way to move throught the text is using the keys `h`(left), `j`(down), `k`(up) and `l`(right).
|
|
|
|
```
|
|
^
|
|
|
|
|
k
|
|
<- h l ->
|
|
j
|
|
|
|
|
v
|
|
```
|
|
The advantage in use this keys instead of the arrow keys, is you can combine motions with other commands, like:
|
|
|
|
|
|
- `d2j` -> delete 2 lines down
|
|
- `y10k` -> copy 10 lines up
|
|
- `10l` -> move 10 caracters right
|
|
- `2h` -> move 2 characters left
|
|
|
|
### Words Motions
|
|
|
|
A word consists of a sequence of letters, digits and underscores, or a
|
|
sequence of other non-blank characters, separated with white space (spaces,
|
|
tabs, end of line). An empty line is also considered to be a word.
|
|
|
|
It is possible move throught words with this commnads:
|
|
|
|
- `w` -> move to next word
|
|
- `W` -> move to next **WORD***
|
|
- `e` -> move to the end of the next word
|
|
- `E` -> move to the end of the next **WORD**
|
|
- `b` -> move to previous word
|
|
- `B` -> move to previous **WORD**
|
|
- `ge` -> move to the end of previous word
|
|
- `gE` -> move to the end of previous **WORD**
|
|
|
|
*A **WORD** consists of a sequence of non-blank characters, separated with white
|
|
space. An empty line is also considered to be a **WORD**, ie: `quux(foo,` `bar,` `foo);`
|
|
|
|
With this motions combined with other commands you can do things like:
|
|
|
|
- `dw` -> delete the word
|
|
- `5e` -> move to the end of the 5th word from here
|
|
|
|
### Search motions
|
|
|
|
Another way to move throught the position you like, is using the search motions, the search motions consists in the
|
|
motion + a character to search
|
|
|
|
- `fx` -> move to the next `x`
|
|
- `tx` -> move to first position before the next `x`
|
|
- `;` -> next x
|
|
- `Fx` -> move to the previous `x`
|
|
- `Tx` -> move to first position after the previous `x`
|
|
- `,` -> previous x
|
|
|
|
### Begin and End of lines
|
|
|
|
You can also move to begin or end of line with VIM, with this commands:
|
|
|
|
- `0` -> Begin of the line
|
|
- `^` -> First non-blank character of the line
|
|
- `$` -> End of the line
|
|
|
|
### File motions
|
|
|
|
In VIM you can move throught the file using this commands:
|
|
|
|
- `gg` -> move to the first line of the file
|
|
- `G` -> move to the last line of the file
|
|
- `<ctrl> + f` -> move one page down
|
|
- `<ctrl> + b` -> move one page up
|
|
- `/text` -> find `text`
|
|
- `n` -> move to the next occurrence of the `text` (previous command)
|
|
- `?text` -> find previous `text`
|
|
- `N` -> move to the previous occurrence of `text`
|
|
- `{` -> move one paragraph up
|
|
- `}` -> move one paragraph down
|
|
- `(` -> move one sentence up
|
|
- `)` -> move one sentece down
|
|
- `#` -> find word under cursor up
|
|
- `*` -> find word under cursor down
|
|
|
|
|
|
|
|
|