Vim常用命令小记(1)——操作符命令和动作命令

操作符命令


c        修改。

d        剪切。

y        复制。

~        变换大小写。

g~      变换大小写。

gu       变为小写。

gU       变为大写。

>        右移。

<        左移。

左右动作


h 或 <Left> 或 Ctrl-h 或 <BS>    向左 [count] 个字符。(开动作)

l 或 <Right> 或 <Space>            向右 [count] 个字符。(开动作)

0  或 <Home>                           到行的第一个字符。(开动作)

^                                             到行的第一个非空白字符。(开动作)

$ 或 <End>                               到行尾,如果有 [count] ,则先向下移动 [count-1] 行。(闭动作) 
                                               可视模式下,光标移动到紧贴该行最后一个字符之后的位置。 
                                               如果置位了'virtualedit',"$"可从行尾之后的空白后退到行尾。

g_                                           向下 [count-1] 行并到该行的最后一个非空白字符。(闭动作)

g0 或 g<Home>                        'wrap':到屏幕行的第一个字符。(开动作)
                                              'nowrap':到该行屏幕显示范围的最左边的字符。

g^                                           'wrap':到屏幕行的第一个非空白字符。(开动作)
                                               'nowrap':到该行屏幕显示范围的最左边的非空白字符。

gm                                           和"g0"类似,但尽可能的向右移动到屏幕的中间位置。

g$  或 g<End>                         'wrap':往下[count-1]屏幕行并到该屏幕行的行尾。(闭动作) 
                                               'nowrap':到该行屏幕显示范围的最右面的字符。垂直移动保持所在的列,而不是移到行尾。

f{char}                                     到右侧第 [count] 次出现的字符 {char} 。光标放在 {char} 上。(闭动作)

F{char}                                    到左侧第 [count] 次出现的字符 {char} 。光标放在 {char} 上。(开动作)

t{char}                                    到右侧第 [count] 次出现的字符 {char} 之前。光标放在 {char} 左边的位置。(闭动作)

T{char}                                    到左侧第 [count] 次出现的字符 {char} 之后。光标放在 {char} 右侧的位置。(开动作)

;                                              重复上次的 f、t、F 或者 T 命令 [count] 次。

,                                              反方向重复上次的 f、t、F 或者 T 命令 [count] 次。

上下动作


k 或 <Up> 或 Ctrl-p                             向上[count]行。(行动作)

j 或 <Down> 或 Ctrl-j 或 <Ctrl-n>        向下[count]行。(行动作)

gk 或 g<Up>                                       向上[count]屏幕行。(开动作)

gj 或 g<Down>                                   向下[count]屏幕行。(开动作)

-                                     向上[count]行,停在第一个非空白字符止。(行动作)

+ 或 Ctrl-m 或 <CR>         向下[count]行,停在第一个非空白字符上。(行动作)

_                                     向下[count-1]行,停在第一个非空白字符上。(行动作)

G                                    到第[count]行,缺省是最后一行。(行动作)
                                      'startofline':停在第一个非空白字符上。
                                      'nostartofline':保持在相同的列上。

<C-End>                        到第[count]行,缺省是最后一行并停在最后一个字符上。(闭动作)

<C-Home> 或 gg             到第[count]行,缺省是第一行。(行动作) 
                                      'startofline':停在第一个非空白字符上。'nostartofline':保持在相同的列上。

:[range]                           把光标移到[range]的最后一行。 
                                      [range]是“,”分隔的范围,也可以是单独一个行号或标记。此命令不修改跳转列表。

{count}%                        到文件的{count}百分比处。(行动作)
                                     计算方法:({count} * 总行数 + 99) / 100
                                     'startofline':停在第一个非空白字符上。'nostartofline':保持在相同的列上。

:[range]go[to] [count] 或 [count]go        到缓冲区的第 {count} 个字节。缺省的 [count] 是 1,即文件开始处。 
                                                           如果给定 [range],则最后一个数字用作偏移量。

单词动作


w 或 <S-Right>        正向 [count] 个单词。(开动作)

W 或 <C-Right>       正向 [count] 个字串。(开动作)

e                             正向到第 [count] 个单词的尾部。不停留在空行上。(闭动作)

E                            正向到第 [count] 个字串的尾部。不停留在空行上。(闭动作)

b 或 <S-Left>          反向 [count] 个单词。(开动作)

B 或 <C-Left>          反向 [count] 个字串。(开动作)

ge                           反向到第 [count] 个单词的尾部。不停留在空行上。(闭动作)

gE                           反向到第 [count] 个字串的尾部。不停留在空行上。(闭动作)

文本对象动作


(          反向 [count] 个句子。(开动作)

)          正向 [count] 个句子。(开动作)

{         反向 [count] 个段落。(开动作)   

}         正向 [count] 个段落。(开动作)

]]        正向 [count] 个小节或到出现在首列的 '{'。如果带操作符,则同时停留在首列的 '}' 的下方。(开动作)

][        正向 [count] 个小节或到出现在首列的 '}'。(开动作)

[[        反向 [count] 个小节或到出现在首列的 '{'。(开动作)

[]        反向 [count] 个小节或到出现在首列的 '}'。(开动作)

文本对象选择


      文本对象选择命令只能在可视模式或操作符后使用。以 "a" 开头的命令,代表选择一个包含空白的对象;以 "i" 开头的命令,代表选择内含对象,即不包含空白的对象。空白本身也是内含对象。

aw                      选择 [count] 个单词。在可视面向行模式下,"aw" 切换到可视面向字符模式。

iw                       选择 [count] 个单词。在可视面向行模式下,"iw" 切换到可视面向字符模式。

aW                     选择 [count] 个字串。在可视面向行模式下,"aW" 切换到可视面向字符模式。

iW                      选择 [count] 个字串。在可视面向行模式下,"iW" 切换到可视面向字符模式。

as                      选择 [count] 个句子。可视模式下切换为面向字符模式。

is                       选择 [count] 个句子。可视模式下切换为面向字符模式。

ap                      选择 [count] 个段落。特例:空白行 (只包含空白的行) 也被视为段落边界。可视模式下切换为面向行模式。

ip                       选择 [count] 个段落。特例: 空白行 (只包含空白的行) 也被视为段落边界。可视模式下切换为面向行模式。

a] 或 a[               选择 [count] 层 '[' ']' 块。可视模式下它切换为面向字符模式。
                          先反向查找第 [count] 个未匹配的 '[',然后查找其相应的 ']',包括 '[' 和 ']'。

i] 或 i[                 选择 [count] 层 '[' ']' 块。可视模式下它切换为面向字符模式。
                          先反向查找第 [count] 个未匹配的 '[',然后查找其相应的 ']',不包括 '[' 和 ']'。
           

a) 或 a( 或ab        选择 [count] 层块。可视模式下它切换为面向字符模式。
                          从 "[count] [(" 到其相应的 ')',包括 '(' 和 ')'。它并不包括括号之外的空白。

i) 或 i( 或 ib          选择 [count] 层块,可视模式下它切换为面向字符模式。
                          从 "[count] [(" 到其相应的 ')',但不包括 '(' 和 ')'。

a> 或 a<             选择 [count] 层 <> 块。可视模式下它切换为面向字符模式。
                          从反向第 [count] 个未匹配的 '<' 到其匹配的 '>',包括 '<' 和 '>'。

i> 或 i<               选择 [count] 层 <> 块。可视模式下它切换为面向字符模式。
                          从反向第 [count] 个未匹配的 '<' 到其匹配的 '>',但不包括 '<' 和 '>'。

at                       选择 [count] 层标签块。可视模式下它切换为面向字符模式。
                          从反向第 [count] 个未匹配的 "<aaa>" 到其匹配的 "</aaa>",包括 "<aaa>" 和 "</aaa>"。

it                        选择 [count] 层标签块。可视模式下它切换为面向字符模式。
                          从反向第 [count] 个未匹配的 "<aaa>" 到其匹配的 "</aaa>",但不包括 "<aaa>" 和 "</aaa>"。
           

a} 或 a{ 或 aB     选择 [count] 层大块。可视模式下它切换为面向字符模式。
                          从 "[count] [{" 到其相应的 '}',包括 '{' 和 '}'。
           

i} 或 i{ 或 iB        选择 [count] 层大块。可视模式下它切换为面向字符模式。
                          从 "[count] [{" 到其相应的 '}',但不包括 '{' 和 '}'。

a" 或 a' 或 a`       选择上一个引号开始到下一个引号结束的文本。可视模式下它切换为面向字符模式。
                          'quoteescape' 选项用于跳过转义的引号。只在同一行内有效。
                          如果开始时光标在引号上,Vim 会从该行行首开始搜索,以决定哪个引号对构成字符串。
                          包含任何拖尾的空白,如果没有拖尾的,也包含开头的空白。
                          在可视模式下重复此对象会包含另一个字符串。目前不使用计数。

i" 或 i' 或 i`          类似于 a"、a' 和 a`,但不包括引号,而重复也不会扩展可视选择区。
                          特例: 计数为 2 时包含引号,但不包括 a"/a'/a` 包含的额外的空白。

位置标记


跳转到一个位置标记有两种方法:
1. 用 ` (反引号):    光标放在指定的位置。(开动作)
2. 用 ' (单引号):    光标放在指定位置所在行的第一个非空字符上(行动作)

m{a-zA-Z}                        把位置标记 {a-zA-Z} 设在当前光标位置(不移动光标,这不是动作命令)。

m' 或  m`                           设置前次上下文标记。以后可以用 "''" 或者 "``" 跳转到这个位置(不移动光标,这不是动作命令)。

m[ 或 m]                            设置 '[ 或者 '] 标记。可以用在执行多个命令的操作符的定义中。(不移动光标,这不是动作命令)。

:[range]ma[rk] {a-zA-Z'}    把位置标记 {a-zA-Z'} 设在 [range] 的最后一行,第 0 列。缺省的 [range] 是当前行。

:[range]k{a-zA-Z'}             和 ":mark" 相同, 但是标记名之前的空格可以省略。

'{a-z} 或 `{a-z}                 跳转到当前缓冲区的位置标记 {a-z}。

'{A-Z0-9} 或 `{A-Z0-9}     跳转到设置位置标记 {A-Z0-9} 的文件所在的标记位置(如果切换到另外一个文件,这就不是动作命令)

g'{mark} 或 g`{mark}        跳转到指定的位置标记 {mark},但在当前缓冲区内跳转时,不改变跳转表。

:marks                               列出所有的位置标记 (这不是动作命令),但不包括 '(,'),'{ 和 '} 标记。第一列的编号为零。

:marks {arg}                      列出所有 {arg} 中所包含的位置标记,标记之间无须任何分隔符,如有则忽略(这不是动作命令)。

:delm[arks] {marks}           删除指定的位置标记。可以删除的位置标记也包括 A-Z 或    0-9。不能删除 ' 位置标记。
                                        指定的方式包括给出位置标记名的列表和使用连字符分隔的范围。忽略空格。

:delm[arks]!                       删除当前缓冲区所有的位置标记,不包括 A-Z 或 0-9 位置标记。

'[ 或 `[                              到上次修改、复制或者粘贴的文本的第一个字符。

'] 或 `]                              到上次修改、复制或者粘贴的文本的最后一个字符。

'< 或 `<                            到上次当前缓冲区选择的可视区域首行或第一个字符。
                                        对于列块模式而言,可能也是第一行的最后一个字符 (为了能定义列块)。

'> 或 `>                            到上次当前缓冲区选择的可视区域末行或最后一个字符。
                                        对于列块模式而言,可能也是末行的第一个字符 (为了能定义列块)。
                                        这里适用 'selection',该位置可能是刚刚在可视区域之后的位置。

'' 或 ``                              到上次跳转的位置,或者上次 "m'" 或者 "m`" 命令给出的位置。
                                        如果使用了 ":keepjumps" 命令修饰符,这个前次上下文标记不会被改变。

'" 或 `"                              到上次离开本缓冲区时的光标位置。缺省是第一行的第一个字符。
                                        每个缓冲区,只有一个记住的位置。只要这个缓冲区在某一个窗口可见,这个标记是不会改变的。

'^ 或 `^                            到上次插入模式关闭的光标位置。"gi" 命令用到这个标记。
                                        如果使用了 ":keepjumps" 命令修饰符,这个标记不会改变。

'. 或 `.                              到上次改变的位置。这个位置位于或者接近于改变开始的地方。
                                        有些命令引起几个改变,那么这个位置应该是接近于这个命令最后改变的地方。

'( 或 `(                              到当前句子的开始处,就像 ( 命令。

') 或 `)                              到当前句子的结尾处,就像 ) 命令。

'{ 或 `{                             到当前段落的开始处,就像 { 命令。

'} 或 `}                             到当前段落的结尾处,就像 } 命令。

]'                                      [count] 次到当前行之后下一个包含小写位置标记的行的第一个非空白字符。

]`                                     [count] 次下一个小写位置标记。

['                                      [count] 次到当前行之前上一个包含小写位置标记的行的第一个非空白字符。

[`                                     [count] 次上一个小写位置标记。

:loc[kmarks] {command}    执行命令 {command},并且不调整位置标记。这可以用于不影响行的数目的文本改变。
                                        如果行数发生变化,那么改变之后的标记将仍然保持它们的行号,从而实际上移到了别的行上。
                                        以下各项对于插入/删除行不会被调整:
                                        - 小写位置标记 'a - 'z
                                        - 大写位置标记 'A - 'Z
                                        - 数字位置标记 '0 - '9
                                        - 上次插入位置 '^
                                        - 上次改变位置 '.
                                        - 可视选择区域 '< 和 '>
                                        - 已设定的标号 sign 的行号
                                        - quickfix 位置的行号
                                        - 跳转表 jumplist 里的位置
                                        - 标签堆栈 tagstack 里的位置
                                        以下各项则总会被调整:
                                        - 前次上下文标记 ''
                                        - 光标位置
                                        - 窗口或者缓冲区的视图
                                        - 折叠 folding
                                        - 差异视图 diff

:kee[pmarks] {command}   目前,这只对过滤命令 :range! 有效:
                                        - 如果过滤后的行数不少于过滤之前,那么所有的过滤行中的标记保持行号不变。
                                        - 如果行数减少,那么消失了的行中的标记就被删除掉。
                                        在任何情况下,过滤文本之后的标记需要调整行号,以保持和文本同步。
                                        如果 'cpoptions' 中没有 'R' 标志,那么直接执行过滤命令和使用 ":keepmarks" 的效果一样。

:keepj[umps] {command}   在 {command} 的移动不改变 '' '. '^ 标记和跳转表 jumplist,也不改变表 changelist。
                                        这对于自动改变或者插入文本而不需要用户跳转到那个位置有用。
                                        必须在每个命令里使用。如果在命令里调用了函数,则该函数里的命令仍然可能改变跳转表。

跳转


CTRL-O                     转到跳转表里第 [count] 个较旧的光标位置

<Tab> 或 CTRL-I       转到跳转表里第 [count] 个较新的光标位置。
                                在一个出错窗口里,该命令带你到光标所在的错误所指的位置。

:ju[mps]                   查看跳转表。

g;                             转到改变表里第 [count] 个较旧的位置。
                                如果 [count] 比所有的较旧的改变位置都多,回到最老的那个。
                                如果没有较旧的改变,给出一个错误消息。

g,                             转到改变表里第 [count] 个较新的位置。
                                和 "g;" 类似,但朝向相反的方向。

:changes                   查看改变表。

其它动作


%        找到本行的光标所在或其后的下一个项目,并跳转到它的匹配。(闭动作)
           项目可以是:
           - ([{}])                                小括号或者 (花/方) 括号。(这可以用 'matchpairs' 选项改变)
           - /* */                                    C-风格的注释的开始或结尾
           - #if、#ifdef、#else、#elif、#endif        C 预处理条件宏 (光标在 # 上,或者其后没有 "("、"["、"{" 的时候)。
           要匹配其它的项目可以用 matchit 插件。此插件也可用于跳过注释中的匹配。
           在 'cpoptions' 包含 "M" 时,忽略反斜杠。否则,那么括号之前反斜杠数目的奇偶性相同才能匹配。
           如果 'cpoptions' 里没有 '%' 字符,忽略单双引号里的括号,除非一行里的括号数目不对称,而且该行和前一行不以反斜杠结尾。
           对注释中的匹配并无特殊处理。可以用 matchit 插件或者用引号括起匹配。
           这里不能用计数,{count}% 跳转到文件里百分之 {count} 的那行。
           在 #if/#else/#endif 上用 % 使该动作面向行。

[(         反向第 [count] 个的未匹配的 '('。(开动作)

[{        反向第 [count] 个的未匹配的 '{'。(开动作)

])         正向第 [count] 个的未匹配的 ')'。(开动作)

]}        正向第 [count] 个的未匹配的 '}'。(开动作)

]m       正向第 [count] 个方法 (method) 的开始处 (适用于 Java 或类似结构的语言)。(开动作)
           如果不在某个方法开始处之前,则跳转到类的开始或结束处。如果光标之后已无 '{',会有一个错误。

]M        正向第 [count] 个方法的结束处 (适用于 Java 或类似结构的语言)。(开动作)
           如果不在某个方法开始处之前,则跳转到类的开始或结束处。如果光标之后已无 '}',会有一个错误。

[m       反向第 [count] 个方法的开始处 (适用于 Java 或类似结构的语言)。(开动作)
           如果不在某个方法开始处之前,则跳转到类的开始或结束处。如果光标之前已无 '{',会有一个错误。

[M        反向第 [count] 个方法的结束处 (适用于 Java 或类似结构的语言)。(开动作)
           如果不在某个方法开始处之前,则跳转到类的开始或结束处。如果光标之前已无 '}',会有一个错误。

[#        反向第 [count] 个未匹配的 "#if" 或 "#else"。(开动作)

]#        正向第 [count] 个未匹配的 "#else" 或 "#endif"。(开动作)

[* 或 [/    反向第 [count] 个 C 注释的开始 "/*"。(开动作)

]* 或 ]/    正向第 [count] 个 C 注释的结束 "*/"。(开动作)

H             到窗口从顶部算第 [count] 行 (缺省: 窗口的第一行) 并停在第一个非空白字符上。(行动作)。
               光标还要根据 'scrolloff' 调整。

M            到窗口的中间一行并停在第一个非空白字符。(行动作)

L             到窗口从底部算第 [count] 行 (缺省: 窗口的最后一行) 并停在第一个非空白字符上。(行动作)
              光标还要根据 'scrolloff' 调整。

<LeftMouse>        到屏幕上鼠标点击的位置。(开动作)
                          如果鼠标在状态行上,则所属的窗口被激活但光标位置不改变。

相关概念


操作符命令:
      一般用来删除或者改变文本。

动作命令:
      出现在操作符之后,从而使操作符作用于被该动作所跨越的文本之上。也就是,在动作之前和之后的光标位置之间的文本。

如果动作包括一个次数而操作符之前也有一个的话,两者相乘。

大多数情况下,光标在应用操作符后停在被操作的文本的起始处。

行动作:
      在行间移动的动作。
字符动作:
      在行内移动的动作。

面向行的操作符:
      操作符 + 行动作。
面向字符的操作符:
      操作符 + 字符动作。

闭动作:
      面向字符的动作,开始和结束位置包含在操作范围里。
开动作:
      面向字符的动作,靠近缓冲区尾端的最后一个字符不被包含在内。

行的动作总包含开始和结尾的位置。

特例:
      - 如果一个开动作的结尾应在第一列,那么,它会前移到上一行的结尾处,并成为一个闭动作。
      - 如果一个开动作的结尾应在第一列,而它的开始处于某一行的第一个非空白字符之前或之上,那么它会转换成一个行动作。

强制转换动作类型:
      操作符 + "v"、"V" 或者 CTRL-V 
      - v:强制该操作面向字符。如果操作是面向行的,则变成开动作。如果是面向字符的,则在开/闭间切换。
      - V:强制该操作面向行。
      - Ctrl-V:强制该动作面向列块。类似于可视列块模式的选择,由动作之前和之后的光标位置定义两个角落。

--------------------------------------------------

屏幕行:
      指在开启'wrap'选项后,因自动换行而产生的虚拟行。

单词:
      单词由字符、数字和下划线序列或者其他的非空白字符的序列组成。单词间可以空白字符(空格、制表、换行)分隔。
      这一规则可以用 'iskeyword' 选项改变。空行也被认作单词。
      已折叠的行序列被认作由单个字符组成的单词。"w" 和 "W"、"e" 和 "E" 移动到折叠行之后的第一个单词或字串的开始/结尾处。"b" 和 "B" 移动到折叠之前的第一个单词的开始处。

字串:
      字串由非空白字符序列组成。字串以空白分隔。空行也被认作字串。

特例:
      - 如果光标在非空白字符上,"cw" 和 "cW" 等价于 "ce" 和 "cE"。
      - 如果 "w" 动作带操作符并且该动作的最后一个单词在行尾,则该操作范围结束于行尾而非下一行的第一个单词。

句子:
      以 '.'、'!' 或者 '?' 结尾并紧随着一个换行符、空格或者制表符。标点和空白字符之间可以出现任何数量的闭括号和引号: ')'、']'、'"' 和 '''。段落和小节的边界也视为句子的边界。

段落:
      从空行或某一个段落宏命令开始,段落宏由 'paragraphs' 选项里成对出现的字符所定义。小节边界也被视为段落边界。空白行(只包含空白)不是段落边界。

小节:
      从首列出现的换页符 (<C-L>) 或某一个小节宏命令开始。小节宏由 'sections' 选项里成对出现的字符所定义。

--------------------------------------------------

在操作符之后:

      非块对象:
            对于 "a" 开头的命令:操作符作用于对象与其后的空白。
                                         如果其后没有空白或者光标位于对象之前的空白上的话,那么也包括对象之前的空白。
            对于 "i" 开头的命令:如果光标在对象之上,那么操作符作用于该对象。如果光标在空白上,那么操作符作用于空白。
      块对象:
            操作符作用于光标所在位置所在 (包括光标在括号上的特殊情况) 的块。
            对于"i" 开头的命令,不包含包围的括号。而对于 "a" 开头的命令,则包含之。

在可视模式下:
      可视区域的起始和结束点在相同位置 (刚输入 "v"):选择一个区域,就和使用操作符一样。
      可视区域的起始和结束点不同:
            非块对象:该区域被对象或者下一个对象之前空白所扩展,对于 "a" 开头的命令,则两者都包含。
                          扩展的方向决定于可视区域和光标的相对位置。

            块对象:该块向外扩展一层。

移动命令和文本对象的区别:
      移动命令作用于这里(光标当前位置)到移动后的位置。而对象的使用则会作用于整个对象,而和光标在对象的何处无关。

标签块:
      "it" 和 "at" 文本对象尝试选择 HTML 和 XML 的匹配标签之间的块。但因为它们并不完全兼容,有一些限制。通常的方法是选择 <tag> 直到匹配的 </tag> 为止的内容。"at" 包含标签,"it" 不包含。不过重复 "it" 时标签仍然会包含 (不然不会有任何改变)。此外,在没有内容的标签块上使用 "it" 会单独选择引导标签。跳过 "<aaa/>" 项目。忽略大小写,即使对大小写应该敏感的 XML 也是如此。HTML 里可以有 <br> 或 <meta ...> 这样没有匹配结束标签的标签和单独出现的结束标签将被忽略。

--------------------------------------------------

位置标记:
      它只是文件中一个被记住的位置,在任何情况下均不可见,和命名的寄存器毫不相干。
      'a - 'z        小写位置标记,在每个文件内有效。
                      只要文件还在缓冲区列表里,小写位置标记 'a 到 'z 就被记住。如果在缓冲区列表里删除一个文件,它的位置标记就消失了。
                      如果删除包含某个位置标记的文本行,这个位置标记也就随之消失。
                      小写位置标记可以和操作符合并使用。
                      小写位置标记在撤销/重做时会被复原。
      'A - 'Z       大写位置标记,也叫做文件标记,在文件间都有效。
                      大写位置标记 'A 到 'Z 包含了所在的文件名。可以用这些标记在文件间跳转。
                      要和操作符合并使用的大写位置标记必须在当前文件里。
                      即使插入/删除一些行或者同时编辑别的文件,这种标记的行号总是正确的。
                      如果 'viminfo' 选项不为空,大写位置标记由 .viminfo 文件保存。
      '0 - '9       数字位置标记,在 .viminfo 文件里设置。
                      数字位置标记 '0 到 '9 不能被直接设置,而只能从 viminfo 文件中获取。
                      '0 是你上次退出 Vim 时的光标位置。'1 是再上一次,依次递推。
                      'viminfo' 的 'r' 标志可以指定不记录数字位置标记的文件。

--------------------------------------------------

跳转命令:
      "'"、"`"、"G"、"/"、"?"、"n"、"N"、"%"、"("、")"、"[["、"]]"、"{"、"}"、":s"、":tag"、"L"、"M"、"H" 和开始编辑新文件的命令。

跳转表
      用来记住跳转的位置。每个窗口有独立的跳转表,每个表最多能存储 100 项。如果你分割一个窗口,跳转表会复制到新的窗口里。

改变表:
      用来记住改变文本以后光标的位置被记住。每个改变都会记住一个位置,从而可以使该操作能被撤销。除非这个位置和上一个改变很接近。

posted @ 2012-07-03 07:26  小兔有点乖  阅读(1139)  评论(0)    收藏  举报