Vim实用技巧
这本书应该反复看、反复看、反复看!
basic
首先你需要会一些基础性的操作
技巧1
使用.命令来重复
技巧2
很多Vim的单键命令都可以被看成两个或多个其他命令的组合
技巧3
f查找,s删除,分号会继续查找
技巧4
| 目的 | 操作 | 重复 | 回退 |
|---|---|---|---|
| 做出一个修改 | {edit} | . | u |
| 在行内查找下一指定字符 | f{char}/t{char} | ; | , |
| 在行内查找上一指定字符 | F{char}/T{char} | ; | , |
| 在文档中查找下一处匹配项 | /pattern | n | N |
| 在文档中查找上一处匹配项 | ?pattern | n | N |
| 执行替换 | :s/target/replacement | & | u |
| 执行一系列修改 | qx{changes}q | @x | u |
技巧5
按*搜索,c是修改
Vim 从入门到精通
vim哲学
减少认识负荷并帮助人们专注于实际任务
缓冲区,窗口,标签
缓冲区是工作的地方,窗口是缓冲区的视窗,标签是窗口的集合。
已激活、已载入、已列出、已命名的缓冲区
用类似 vim file1 的命令启动 Vim 。这个文件的内容将会被加载到缓冲区中,你现在有一个已载入的缓冲区。如果你在 Vim 中保存这个文件,缓冲区内容将会被同步到磁盘上(写回文件中)。
由于这个缓冲区也在一个窗口上显示,所以他也是一个已激活的缓冲区。如果你现在通过 :e file2 命令加载另一个文件,file1 将会变成一个隐藏的缓冲区,并且 file2 变成已激活缓冲区。
使用 :ls 我们能够列出所有可以列出的缓冲区。插件缓冲区和帮助缓冲区通常被标记为不可以列出的缓冲区,因为那并不是你经常需要在编辑器中编辑的常规文件。通过 :ls! 命令可以显示被放入缓冲区列表的和未被放入列表的缓冲区。
未命名的缓冲区是一种没有关联特定文件的缓冲区,这种缓冲区经常被插件使用。比如 :enew 将会创建一个无名临时缓冲区。添加一些文本然后使用 :w /tmp/foo 将他写入到磁盘,这样这个缓冲区就会变成一个已命名的缓冲区。
寄存器
| 类型 | 标识 | 读写者 | 是否为只读 | 包含的字符来源 |
|---|---|---|---|---|
| Unnamed | " | vim | 否 | 最近一次的复制或删除操作 (d, c, s, x, y) |
| Numbered | 0至9 | vim | 否 | 寄存器 0: 最近一次复制。寄存器 1: 最近一次删除。寄存器 2: 倒数第二次删除,以此类推。对于寄存器 1 至 9,他们其实是只读的最多包含 9 个元素的队列。这里的队列即为数据类型 queue |
| Small delete | - | vim | 否 | 最近一次行内删除 |
| Named | a至z, A至Z | 用户 | 否 | 如果你通过复制操作存储文本至寄存器 a,那么 a 中的文本就会被完全覆盖。如果你存储至 A,那么会将文本添加给寄存器 a,不会覆盖之前已有的文本 |
| Read-only | :与.和% | vim | 是 | :: 最近一次使用的命令,.: 最近一次添加的文本,%: 当前的文件名 |
| Alternate buffer | # | vim | 否 | 大部分情况下,这个寄存器是当前窗口中,上一次访问的缓冲区。请参阅 :h alternate-file 来获取更多帮助 |
| Expression | = | 用户 | 否 | 复制 VimL 代码时,这个寄存器用于存储代码片段的执行结果。比如,在插入模式下复制 <c-r>=5+5<cr>,那么这个寄存器就会存入 10 |
| Selection | +和* | vim | 否 | * 和 + 是 剪贴板 寄存器 |
| Drop | ~ | vim | 是 | 最后一次拖拽添加至 Vim 的文本(需要 “+dnd” 支持,暂时只支持 GTK GUI。请参阅 :help dnd 及 :help quote~) |
| Black hole | _ | vim | 否 | 一般称为黑洞寄存器。对于当前操作,如果你不希望在其他寄存器中保留文本,那就在命令前加上 _。比如,"_dd 命令不会将文本放到寄存器 "、1、+ 或 * 中 |
| Last search pattern | / | vim | 否 | 最近一次通过 /、? 或 :global 等命令调用的匹配条件 |
| 十分有用!!! |
范围
熟练使用范围,可以操作得很快
比如逗号分号表示的范围。
补全
ctrl+x