可重复的操作及回退
目的 | 操作 | 重复 | 回退 |
---|---|---|---|
做出一个修改 | {edit} | . | u |
在行内查找下一个指定符 | f{char}/t{char} | ; | , |
在行内查找上一个指定符 | F{char}/T{char} | ; | , |
在文档中查找下一处匹配项 | /pattern | n | N |
在文档中查找上一处匹配项 | ?pattern | n | N |
执行替换 | ?/target/replacement | & | u |
执行一系列修改 | qx{changes}q | @x | u |
执行可控制的单词替换
/{charold}->cw->{char}<Esc>->n->.
cw
命令会删除从光标位置到单词结尾间的字符,并进入插入模式,Vim 会把我
们离开插入模式之前的全部按键操作都记录下来, 因此整个 cw{char} 会被当成一个修改,执行.
命令会删除从光标到当前单词结尾间的字符,并把它修改
为"{char}"。每次我们按n
键时,光标就会跳到下一个{charold}单词所在之处,
而当我们按 .
键时,它就会把光标下的单词改为{char}
操作符 + 动作命令
命令可以对一个字符( dl)、一个完整单词( daw)或一整个段落( dap)
Vim 的操作符命令
命令 | 用途 |
---|---|
c | 修改 |
d | 删除 |
y | 复制到寄存器 |
g~ | 反转大小写 |
gu | 转换为小写 |
gU | 转换为大写 |
> | 增加缩进 |
< | 减小缩进 |
= | 自动缩进 |
! | 使用外部程序过滤{motion}所跨越的行 |
全文自动缩进gg=G
插入模式下命令
按键操作 | 用途 |
---|---|
删除前一个字符(同退格键) | |
删除前一个单词 | |
删至行首 |
切换到普通模式<Esc> <C-[>
<C-o>
插入-普通模式,可以执行一次普通模式下命令
<C-r>
插入模式下使用寄存器<C-r><C-p>{register}
它会按原义插入寄存器内的文本,并修正任何不必要的缩进
<C-v>{code}
插入字符 <C-v>u{code}
插入非常用字符
按键操作 | 用途 |
---|---|
{123} | 以十进制字符编码插入字符 |
u{1234} | 以十六进制字符编码插入字符 |
{nondigit} | 按原义插入非数字字符 |
{char1}{char2} | 插入以二合字母{char1}{char2}表示的字符 |
去重复行
:sort //直接排序
:g/^\(.*\)$\n\1$/d //去除重复行
:g/\%(^\1$\n\)\@<=\(.*\)$/d //功能同上,也是去除重复行
:g/\%(^\1\>.*$\n\)\@<=\(\k\+\).*$/d //功能同上,也是去除重复行