*tips: *
移动光标(命令模式下)
上下左右
- hjkl: 左下上右
- 可以在hjkl前加数字
- 5j: 下移5行
- 5h: 左移5个字符
基于单词移动
- w:正向移动到下一单词的开头
- b:反向移动到当前单词/上一单词的开头
- e:正向移动到当前单词/下一单词的结尾
- ge:方向移动到上衣单词的结尾
对行内字符进行查找并移动光标
f{char}
: 正向移动到下一个char所在之处F{char}
: 反向…t{char}
: 正向移动到下一个char所在之处的前一个字符上T{char}
: 方向移动…- 用t找标点
;
: 重复上次字符查找命令,
: 反转方向查找上次字符查找命令
移动多行
{ }: 移动到前一个/后一个 段落的开头
( ): 移动到前一个/后一个 句子的开头
[m ]m: 移动到前一个/后一个 函数的开始
ctrl + f: 下翻页
ctrl + b: 上翻页
ctrl + d: 下翻半页
ctrl + u: 上翻本页
设置标记,快速回跳
- m{mark}
- `{mark}
文本对象的选择(可视模式)
分隔符文本对象
a + ) / ] / } / > ‘ / “ / `
- a – around
- 选中分隔符及其内的文本
i + ) / ] / } / > ‘ / “ / `
- insert
- 选中分隔符内的文本, 不包括分隔符
a/i + b == a/i + )
a/i + t: 选中xml标签
范围文本对象
- iw: 选中当前单词
- aw: 选中当前单词及其后的空格
- i/a + w: 选字符串
- i/a + s: 选句子
- i/a + p: 选段落
操作符待决模式{motion}
{motion}:分隔符文本对象和范围文本对象
- d{motion} : 删除模式
- c{motion} : 修改模式
- y{motion} : 复制模式
- v{motion} : 可视模式
寄存器
寄存器是vim保存临时数据的地方。
查看寄存器
- :reg
- :reg registerName
取寄存器的值
- “registerName
+ registerName
寄存器分类
无名寄存器(“)
- 默认寄存器,x,s,d,c,y的数据都会存入到改寄存器
数字寄存器(0-9)
- 0:复制专用寄存器(y操作)
- 1-9:逐级临时缓存寄存器
- 所有不带范围(‘(’,‘)’,‘{’,‘}’)、操作涉及1行以上的删除修改操作(x、s、d、c)的数据都会复制到逐级临时缓存寄存器
- 新的数据加入时,逐级先后推移。
黑洞寄存器(_)
- 数据到该寄存器会消失掉。所有对于一些不需要的记录的数据,可以指定到该寄存器。
系统剪切板(+ *)
- +: copy了的数据
- *: 选中的但为copy的数据
表达式寄存器(=)
- 用于计算表达式
其他寄存器
- %:记录当前文件名,包含文件路径
- /:记录上次查找的内容
- .:记录上次插入的内容
宏录制
录制(normal mode)
- q + registerName: 开始录制
- q: 结束录制
使用(normal mode)
- @ + 存入的寄存的名字
- @@:重复使用上一次的宏
批量操作
- 块模式下选中要操作的行
:normal @registerName
查找替换
查找
- /{pattern}: 查找
- *: 正向查找光标所在单词
- #: 反向查找光标所在单词
替换
全局替换:
:%s/{pattern}/{string}/g
- %: 代表全文
- s: 代表substitute
- g: global
可视区域替换
- 可视模式选区域
:s/{pattern}/{string}/g