📄 usr_24.cnx
字号:
现在你键入 "prev": b_array[i]->s_next = a_array[i]->s_next; ~ b_array[i]->s_prev ~继续按 CTRL-Y 直到下一个 "next": b_array[i]->s_next = a_array[i]->s_next;~ b_array[i]->s_prev = a_array[i]->s_ ~现在键入 "prev;" 以结束这一行。CTRL-E 命令操作起来跟 CTRL-Y 一样,只不过它插入光标下方的字符。==============================================================================*24.6* 插入一个寄存器内容命令 CTRL-R {register} 插入寄存器里的内容。它的用处是让你不必键入长词。例如,你要输入下面这些: r = VeryLongFunction(a) + VeryLongFunction(b) + VeryLongFunction(c) ~这个函数的定义见于另一个文件。编辑那个文件并把光标移到该函数名上,然后把文件名摄入寄存器 v: > "vyiw"v 指定寄存器,"yiw" 意思是拷贝一个词,不含空格 (yank-inner-word)。现在编辑那个要插入一行代码的文件,先键入开头几个字符: r = ~现在用 CTRL-R v 来插入函数名: r = VeryLongFunction ~你接下来在函数名后面键入其它必要字符,然后再用两次 CTRL-R v。 你也可以用补全功能来完成同样的工作。但当你有好几个词,其开头几个字符都一样的时候,寄存器就有用多了。如果寄存器存放着诸如 <BS> 或其它特殊字符,这些字符就被解释成好像它们本来是从键盘键入的。如果你不要这样解释 (你确实要在文本中插入 <BS>),那么要命令 CTRL-RCTRL-R {register}。==============================================================================*24.7* 缩写缩写是取代一个长词的短词。例如,"ad" 指代 "advertisement"。 Vim 让你键入缩写,然后为你自动扩展。 用以下命令告诉 Vim,每当你输入 "ad" 就把它扩展成 "advertisement": > :iabbrev ad advertisement现在,当你键入 "ad",完整的单词 'advertisement" 就被插入文本。键入一个不可能成为单词一部分的字符,例如一个空格, 就会触发缩写功能: 输入的文本 看到的文本 I saw the a I saw the a ~ I saw the ad I saw the ad ~ I saw the ad<Space> I saw the advertisement<Space> ~当你仅仅键入 "ad" 时,扩展并没发生。它可以被你输入成一个不可扩展的词如 "add"。Vim 只对那些完整的词检查缩写。多 词 缩 写为几个词定义一个缩写也是可能的。例如,用下面这个命令, 把 "JB" 定义成 "Jack Benny": > :iabbrev JB Jack Benny作为程序员,我使用两个相当不寻常的缩写: > :iabbrev #b /**************************************** :iabbrev #e <Space>****************************************/它们用于生成大段注释。注释以缩写 #b 开始,划出顶线。接着,我键入注释文字,最后以缩写 #e 划出底线。 注意缩写 #e 以一个空格开头。换言之,开头两个字符是空格和星号(*)。通常 Vim忽略不计位于缩写及其扩展之间的空格。为了避免空格被忽略,我把空格以七个字符表示:<, S, p, a, c, e, >。 Note: ":iabbrev" 有点嫌长。":iab" 作用也一样。缩写命令被缩写了!更 正 打 字 错 误我们经常会犯同一个大字错误。例如,把 "the" 打成 "teh"。你可以利用缩写功能来更正这样的错误: > :abbreviate teh the你可以加上一系列这样的缩写。每次发现一个常见错误就加一个。缩 写 列 表":abbreviate" 命令列出所有缩写: :abbreviate i #e ****************************************/ i #b /**************************************** i JB Jack Benny i ad advertisement ! teh the第一栏的 "i" 表明插入模式。这些缩写仅仅在插入模式下有作用。其它可能的字符: c 命令行模式 :cabbrev ! 插入模式和命令行模式 :abbreviate在命令行模式下使用缩写使不常见的。你会主要在插入模式下用 ":iabbrev" 命令。这样就避免了不必要的扩展,例如,当你键入这样一条命令时,"ad" 就不会被扩展了: > :edit ad删 除 缩 写删除一个缩写,用 ":unabbreviate" 命令。假定你有以下缩写: > :abbreviate @f fresh你可以用这个命令删除它: > :unabbreviate @f当你键入这个命令的时候,你将注意到 @f 被扩展成 "fresh"。别担心, Vim 明白得很呢(除非当你另有缩写 "fresh",但那是很偶然的)。 要删除全部缩写: > :abclear":unabbreviate" 和 ":abclear" 另有变形,在插入模式下是 "iunabbreviate 和":iabclear",在命令行模式下是 ":cunabbreviate" 和 "cabclear"。缩 写 再 映 射定义缩写时,有一点要注意的: 扩展产生的字符串不应当被映射成别的什么。例如: > :abbreviate @a adder :imap dd disk-door现在,你键入 @a, 你得到 "adisk-doorer"。那不是你要的结果。为了避免这种事发生, 用 ":noreabbrev" 命令。它的作用跟 ":abbreviate" 一样,但却避免了扩展产生的字符串被用于映射: > :noreabbrev @a adder现在好了,缩写扩展后的结果不可能被映射了。==============================================================================*24.8* 插入特殊字符CTRL-V 命令用来插入下一个字面意义上的字符。换言之,无论该字符多特殊, 其特殊含义都被忽略不计。例如: > CTRL-V <Esc>插入一个 <Esc> 字符。而你并未脱离插入模式。(不要在 CTRL-V 后面键入空格,那个空格仅仅为了方便阅读)。 Note: 在 MS-Windows 环境下,CTRL-V 用来粘贴文本。所以用 CTRL-Q 代替 CTRL-V。 另外,在 Unix 环境下,CTRL-Q 在某些终端上不起作用,因其另有特殊意义。 你也可以用命令 CTRL-V {digits} 来插入一个以十进位数字 {digits} 表示的字符。例如,字符编码 127 是字符 <Del> (但并不一定是 <Del> 键!)。要插入 <Del>, 键入: > CTRL-V 127你可以用这样的方法输入数值不超过 255 的字符。当你键入一个不足两位的数字时,就要添加一个非数字的字符来结束命令。为了回避这个非数字字符的要求,在它前面加一或两个零以满足三位数的要求。 以下命令都插入一个 <Tab> 字符,然后一个点字符: CTRL-V 9. CTRL-V 09. CTRL-V 009.输入一个 16 进制数字,在 CTRL-V 后面, 用 "x" 开头: > CTRL-V x7f这方法也可以用来输入数值不超过 255 (CTRL-V xff) 的字符。你可以用 "o" 开头输入一个以 8 进制数表示的字符,以及另外两种方法,让你输入多至二进制 16 位和 32 位的数字表示的字符 (例如,Unicode 字符): > CTRL-V o123 CTRL-V u1234 CTRL-V U12345678==============================================================================*24.9* 二元字母有些字符在键盘上找不到。例如,表示版权的字符 (?。 要在 Vim 里键入这样的字符, 你得用二元字符,即以两个字符来表示一个。例如, 要键入 ?, 你就得按三个键: > CTRL-K Co你可以用以下命令来查找有哪些二元字符可供利用: > :digraphsVim 将把二元字符表显示在屏幕上。以下就是其中的三行: AC ~_ 159 NS | 160 !I ? 161 Ct ? 162 Pd ? 163 Cu ? 164 Ye ? 165 ~ BB ? 166 SE ? 167 ': ? 168 Co ? 169 -a ? 170 << ? 171 NO ? 172 ~ -- ? 173 Rg ? 174 'm ? 175 DG ? 176 +- ? 177 2S ? 178 3S ? 179 ~这张表告诉你,比如, 你键入 CTRL-K Pd 所得到的二元字符是字符 (?。该字符编码为 163(十进制)。 Pd 是 Pound (英镑)的简写。大多数二元字符让你一看就猜到两个字符生成什么字符。如果你一个个读下来,便不难理解其中的逻辑。 你可以交换两个字符的顺序,只要那样组合不代表另一个二元字符。 因此CTRL-K dP 也没问题。由于 "dP" 不是二元字符,Vim 会转而搜索表示成 "Pd" 的二元字符。 Note: 二元字符表取决于 Vim 假定你所使用的字符集。在 MS-DOS 系统上采用的二元 字符集不同于 MS-Windows 系统上的。务必用 ":digraphs" 命令来查找当前 可供利用的二元字符。你可以定义你自己的二元字符。例如: > :digraph a" ?以上命令定义了 CTRL-K a" 插入一个 ? 字符。你也可以用十进值数指定这个字? 下面这个命令定义了同一个二元字符: > :digraph a" 228更多关于二元字符信息参见: |digraphs| 另一种插入特殊字符的方法是利用键盘映射。详情参见: |45.5|==============================================================================*24.10* 普通模式命令插入模式提供的命令数量有限。在普通模式下,你可用的命令就多得多了。当你要用一个普通模式命令时,你通常用 <Esc> 键来脱离插入模式, 执行这个普通模式命令, 然后再用 "i" 或 "a" 命令重新进入插入模式。 有一个快捷的方法。 用 CTRL-O {command} 你可以在插入模式下执行任何普通模式命令。例如,把光标后面直至行尾的文本删除: > CTRL-O D用这个方法,你只能执行一个普通模式命令。但是, 你可以指定一个寄存器或一个次数。请看下面这个更复杂的命令: > CTRL-O "g3dw这个命令把光标后面三个单词一起删除,存进了寄存器 g。==============================================================================下一章: |usr_25.txt| 编辑已经编排过的文本版权: 参见 |manual-copyright| vim:tw=78:ts=8:ft=help:norl:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -