doc: 阅读vim register文档
This commit is contained in:
57
vim/vim.md
57
vim/vim.md
@@ -177,3 +177,60 @@ vim支持同时打开多个window,并且,`每一个window都包含了一个b
|
|||||||
>
|
>
|
||||||
> 但是,在非图形化系统(如通过ssh访问服务器),此时在服务端未提供图形支持的前提下,可以使用vim tab来实现多tab打开。
|
> 但是,在非图形化系统(如通过ssh访问服务器),此时在服务端未提供图形支持的前提下,可以使用vim tab来实现多tab打开。
|
||||||
|
|
||||||
|
## Registers
|
||||||
|
### Register Types
|
||||||
|
vim中拥有如下10中register类型:
|
||||||
|
- `unnamed register`: `""`
|
||||||
|
- `numbered register`: `"0-9`
|
||||||
|
- `small delete register`: `"-`
|
||||||
|
- `named register`: `"a-z`
|
||||||
|
- `read only register`: `":`, `".`, `"%`
|
||||||
|
- `alternate file register`: `"#`
|
||||||
|
- `expression register`: `"=`
|
||||||
|
- `selection register`: `"*`, `"+`
|
||||||
|
- `black hole register`: `"_`
|
||||||
|
- `last search pattern register`: `"/`
|
||||||
|
|
||||||
|
### register operators
|
||||||
|
在使用register之前,必须通过操作向register中存储值。可以通过如下操作向register中存值:
|
||||||
|
- `y`: `yank(copy)`
|
||||||
|
- `c`: `delete text and start isnert mode`
|
||||||
|
- `d`: `delete text`
|
||||||
|
|
||||||
|
通常,在操作删除文本时,都会将文本保存在register中。
|
||||||
|
|
||||||
|
为了粘贴存储在register中的文本,可以使用如下方式:
|
||||||
|
- `p`: 在cursor之后粘贴文本内容
|
||||||
|
- `P`: 在cursor之前粘贴文本内容
|
||||||
|
|
||||||
|
`p`和`P`都接收一个`count`和`register symbol`作为参数,例如,
|
||||||
|
- `10p`: 将register中的文本粘贴10次
|
||||||
|
- `"ap`: 从`register a`中粘贴文本
|
||||||
|
- `10"ap`:从`register a`中获取文本并粘贴10次
|
||||||
|
|
||||||
|
### Calling register from insert mode
|
||||||
|
当处于insert mode,并且需要从指定register中粘贴时,可以使用如下方式:
|
||||||
|
- `Ctrl + R a`:其会将`register a`中的内容粘贴到cursor之后
|
||||||
|
|
||||||
|
### unnamed register
|
||||||
|
在unnamed register中,存储着最后一次`delete`, `yank`, `change`的内容,可以通过`""p`。
|
||||||
|
|
||||||
|
如果做了多次yank/delete/change操作,那么新操作的text会自动覆盖旧操作的text。
|
||||||
|
|
||||||
|
默认情况下,`p/P`命令会默认关联unnamed register。
|
||||||
|
|
||||||
|
### numbered register
|
||||||
|
numbered register会自动按照升序对其自身进行填充,存在两种不同类型的numbered register,
|
||||||
|
- `yanked register`: `0`
|
||||||
|
- `numbered register 1-9`: `1-9`
|
||||||
|
|
||||||
|
#### yanked register
|
||||||
|
如果通过`yy`进行了整行复制,那么vim实际会将文本保存在两个regiser中:
|
||||||
|
- unnamed register:通过`p`粘贴
|
||||||
|
- yanked register:通过`"0p`粘贴
|
||||||
|
|
||||||
|
`当之后再次yank一个不同text时,vim会对yanked register和unnamed register都随之变化。`
|
||||||
|
|
||||||
|
除了yank之外的操作都不会被存储到register 0。`故而,即使yank操作后发生了delete/change操作,register 0中的内容也不会被修改`。
|
||||||
|
|
||||||
|
当处于insert mode时,可以通过`ctrl + R 0`来快速粘贴register 0中的内容。
|
||||||
|
|||||||
Reference in New Issue
Block a user