doc: 阅读vim register文档

This commit is contained in:
asahi
2025-08-01 13:00:19 +08:00
parent 088e0ead13
commit ed116d4bb7

View File

@@ -177,3 +177,60 @@ vim支持同时打开多个window并且`每一个window都包含了一个b
>
> 但是在非图形化系统如通过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中的内容。