post:细化一些VIM tips种的内容。

This commit is contained in:
徐涛 2021-05-11 16:20:38 +08:00
parent ef1a8b7f7c
commit 1cf2d775d0

View File

@ -25,16 +25,16 @@ VIM是Linux系统中最常用的命令行编辑器但是大多数人都会觉
| 快捷键 | 进入的模式 | 助记词 |
|---|---|---|
| `i` | 在光标所在的字符之前的位置进入插入模式。 | `insert before` |
| `i` | 在光标所在的字符之前的位置进入插入模式。 | `insert` |
| `I` | 在光标所在行的行首进入插入模式。 | `Insert` |
| `a` | 在光标所在的字符之后的位置进入插入模式。 | `append after` |
| `a` | 在光标所在的字符之后的位置进入插入模式。 | `append` |
| `A` | 在光标所在行的行尾进入插入模式。 | `Append` |
| `o` | 在光标所在行的下方新建一行进入插入模式。 | |
| `O` | 在光标所在行的上方新建一行进入插入模式。 | |
| `R` | 在光标所在的字符位置进入替换模式,新的输入将从光标所在的字符开始替换。 | `Replace` |
| `c` | 执行删除操作以后进入插入模式要删除的内容由其后跟随的Text Object或者Motion确定。 | `change` |
| `v` | 在光标所在的位置进入可视模式,光标所在的字符不在被选中的块中。 | `visual` |
| `V` | 在光标所在的行进入行可视模式,每次移动光标的时候,都以进入行为起点,光标所在的行为终点,选中中间所有行。 | `Visual Block` |
| `V` | 在光标所在的行进入行可视模式,以进入行为起点,光标所在的行为终点,选中中间所有行。 | `Visual` |
| `:` | 进入命令行模式。 | |
## 命令格式
@ -42,7 +42,7 @@ VIM是Linux系统中最常用的命令行编辑器但是大多数人都会觉
VIM中的命令格式其实是有固定格式的所以用起来并不难。几乎VIM中的所有命令都是遵循以下命令格式。
!!! info "VIM命令格式"
`<number><command><text object|motion>`
`[prefix][number]<command>[text object|motion]`
这个命令格式中开头的数字表示命令的重复次数,例如`2x`表示删除两个字符。在默认情况下VIM的命令都是以字符为单位进行操作的如果要以行为单位进行操作则需要使用以下公式。
@ -50,15 +50,17 @@ VIM中的命令格式其实是有固定格式的所以用起来并不难。
例如使用`d3j`并不会直接删除3行内容而是会删除这3行中光标移动范围内的所有字符。
!!! info "VIM行操作命令格式"
`<command><number><command>`
`[prefix]<command>[number]<command>`
在这个命令格式中,前后两个`command`均为同一个命令中间的数字如果为1的话则可以省略。例如要删除3行内容则可以用`d3d`来完成。
所有VIM命令中的`prefix`内容一般都是由VIM自身或者插件定义使用的通常采用的`prefix`都是`<leader>`键或者是`<leader>`键与其他字符的组合。
> 大部分的VIM命令都十分简单易记在不考虑重新映射键位的情况下命令和动作都是相应单词的首字母例如`d2w`就是`delete 2 words`的缩写,
### 光标移动
从命令格式可以看出平时使用的HJKL快捷键实际上都是Motion。所以在移动光标的时候不要再狂按HJKL四个键了。
从命令格式可以看出平时使用的HJKL快捷键实际上都是Motion。所以在移动光标的时候不要再狂按HJKL四个键了。
> 我承认我一直也是这么狂按来着。
@ -303,7 +305,7 @@ Surround插件的使用一般需要结合Motion或者是Text Object来使用
| 操作快捷键 | 功能 | 助记词 |
|---|---|---|
| `ys<motion><desired>` | 将`desired`添加到Motion定义的位置。 | |
| `ys<text object\|motion><desired>` | 将`desired`添加到Text Object或Motion定义的位置。 | |
| `yss<desired>` | 为当前行添加`desired`包裹。 | |
| `ds<exist>` | 将`exist`删除。 | `delete` |
| `cs<exist><desired>` | 将`exist`替换成`desired`。 | `change` |