Vim常用命令小记(6)——撤销、重做和重复命令

撤销和重做命令


<Undo> 或 u            撤销 [count] 次更改。

:u[ndo]                    撤销一次更改。

:u[ndo] {N}              转到改变号 {N} 之后。

CTRL-R                    重做 [count] 次被撤销的更改。

:red[o]                     重做一个被撤销的更改。

U                             撤销最近对特定行所作的一系列更改。

单次重复


.           重复上次改变,有计数前缀的重复 [count] 次。
            如果 'cpoptions' 包括 'y' 标志,也可以用来重复一个抽出操作。不能重复命令行命令。
            简单的改变操作可以用 "." 重复。
            如果没有数字前缀,使用上次的改变的重复次数。
            如果输入一个重复次数,就用它取代上次的计数。
            如果上次改变的操作使用数字编号的寄存器,则逐次递增使用寄存器的序号。
            如果重复的命令涉及可视的选择区域,使用相同_大小_的区域。

@:        重复上次命令行 [count] 次。

多次重复


:[range]g[lobal]/{pattern}/[cmd]         在 [range] 界定的匹配模式 {pattern} 的文本行上执行 Ex 命令 (缺省是 ":p")。

:[range]g[lobal]!/{pattern}/[cmd]        在 [range] 界定的_不_匹配模式 {pattern} 的文本行上执行 Ex 命令 (缺省是 ":p")。

:[range]v[global]/{pattern}/[cmd]        等同于 :g!。

 

重复组合操作


q{0-9a-zA-Z"}        在寄存器 {0-9a-zA-Z"} 里记录键入的字符 (大写名字的寄存器表示附加键入的内容)。
                              'q' 命令不能在执行寄存器时使用。同样,在映射里也不能。

q                            停止记录。(停止记录的 'q' 不会被保存在寄存器里,除非它是映射的结果)

@{0-9a-z".=*}        执行寄存器 {0-9a-z".=*} 的内容 [count] 次。
                              不能用寄存器 '%' (当前文件名) 和 '#' (轮换文件名) 。
                              "@=" 则会提示你输入一个表达式。这个表达式的结果会被执行。

@@                        执行上次执行的 @{0-9a-z":*} [count] 次。

:[addr]*{0-9a-z".=} 或 :[addr]@{0-9a-z".=*}
                          把寄存器 {0-9a-z".=*} 里的内容看成一个 Ex 命令执行。
                          首先,把光标放在 [addr] 行 (缺省是当前行) 上。
                          如果 'cpoptions' 设定了 'e' 标志位而寄存器的内容最后一行没有 <CR>,会自动加上。
                          ":*" 命令只有在 'cpoptions' 设置 '*' 标志位时才会识别。如果用 'nocompatible',这并非缺省。
                          ":@=" 使用最近使用的表达式。表达式执行的结果被当作 Ex 命令执行。
                          这些命令里,不识别映射。

:[addr]@:            先把光标放在 [addr] 行 (缺省是当前行) 上,然后重复上次的命令行。

:[addr]@@          先把光标放在 [addr] 行 (缺省是当前行) 上,然后重复上次的 :@{0-9a-z"}。

posted @ 2012-07-03 08:21  小兔有点乖  阅读(10531)  评论(0编辑  收藏  举报