📄 usr_24.cnx
字号:
*usr_24.txt* For Vim version 6.3. 最近更新: 2004年6月 VIM 用户手册 - Bram Moolenaar 著 (译者: Chimin Yen http://vimcdoc.sf.net ) 快速插入输入文本时,Vim 提供你各种各样的方法来减少键击次数和避免打字错误。你可以利用插入模式下的补全功能来重复先前打过的单词。也可以把长词缩写成短词。甚至可以打出你键盘上没有的字符。|24.1| 更正|24.2| 显示匹配|24.3| 补全|24.4| 重复一次插入|24.5| 从另一行拷贝|24.6| 插入一个寄存器内容|24.7| 缩写|24.8| 插入特殊字符|24.9| 二元字母|24.10| 普通模式命令 下一章: |usr_25.txt| 编辑已经编排过的文本 前一章: |usr_23.txt| 编辑特殊文件 目录: |usr_toc.txt|==============================================================================*24.1* 更正退格键 <BS> 已经在前面提过了。它删除位于光标前一格的字符。而删除键 <Del> 则删除光标下(或者说光标后也可以)的那个字符。 当你把整个词都打错了的时候,用 CTRL-W 来更正: The horse had fallen to the sky ~ CTRL-W The horse had fallen to the ~如果你把一行字弄得不可收拾,而要从头来过的话,用 CTRL-U 来删除。这个命令保留了光标之后的文本,也保留了行首的缩进。它只删除了自第一个非空字符至光标位置之间的文本。让光标位于下一行中 "fallen" 的 "f" 上,按 CTRL-U, 文本就成了这样: The horse had fallen to the ~ CTRL-U fallen to the ~当你发现几个词之前有个错误,你需要把光标移到那儿作更正。例如, 你打了这样一行: The horse had follen to the ground ~你要把 "follen" 改成 "fallen"。让光标留在行尾,你输入这个字符串就能更正那错误: > <Esc>4blraA< 脱离插入模式 <Esc> 退回4个单词 4b 移到字母 "o" 上 l 以字母 "a" 替代 ra 重新开始插入模式 A另一种更正这个错误的方法: > <C-Left><C-Left><C-Left><C-Left><Right><Del>a<End>< 退回4个词 <C-Left><C-Left><C-Left><C-Left> 移到字母 "o" 上 <Right> 删除字母 "o" <Del> 插入字母 "a" a 移到行尾 <End>这种方法让你留在插入模式下,利用特殊键来移动光标。这类似于你在一个不分模式的编辑器里所采用的操作方法。它比较容易记忆,但比较费事 (你必须把你的手从字母键移动到光标方向键,而且, 不看键盘难以按准 <End> 键)。 这些特殊键在书写一个停留在插入模式下的映射时非常有用。额外所需的键盘录入也是值得的。 你在插入模式下可以利用的特殊键有以下这些: <C-Home> 移到文件首 <PageUp> 上卷一屏 <Home> 移到行首 <S-Left> 左移一个单词 <C-Left> 左移一个单词 <S-Right> 右移一个单词 <C-Right> 右移一个单词 <End> 移到行尾 <PageDown> 下卷一屏 <C-End> 移到文件尾还有很多键,参见 |ins-special-special|。==============================================================================*24.2* 显示匹配你键入一个右括号 ) 时,如果能知道它匹配哪个左括号 ( 会很方便。要让 Vim做到这点,用下面这个命令: > :set showmatch现在你键入比如 "(example)" 这样几个字,当你键入右括号 ) 时, Vim 就把光标闪到匹配的左括号 ( 上,在那儿停留半秒钟, 然后返回原处。 如果匹配的左括号不存在,Vim 就鸣起响铃。这样你就会想起来你可能在哪儿忘了一个左括号,或键入了太多次的右括号。 Vim 也会为 [] 和 {} 这样的括号显示匹配。你不必等待光标返回原处才键入下一个字符,只要下一个字符一键入, 光标就会返回, 而插入就会跟以前一样继续。 你可以用 'matchtime' 选项改变 Vim 在匹配括号上停留的时间。例如,要让 Vim 等待1.5秒: > :set matchtime=15指定的时间以 1/10 秒为单位。==============================================================================*24.3* 补全Vim 能自动补全插入的单词。你键入一个单词的开头部分,按 CTRL-P, Vim 就会为你猜测余下的部分。 例如,假定你正在建立一个 C 程序, 并要键入以下语句: total = ch_array[0] + ch_array[1] + ch_array[2]; ~你先输入下面这部分: total = ch_array[0] + ch_ ~此时,你用命令 CTRL-P 告诉 Vim 来补全这个词。Vim 就会搜索以光标前字符串开头的词。在这个例子中,就是 "ch_",与词 ch_array 匹配。所以,键入 CTRL-P 就会得到下面的结果: total = ch_array[0] + ch_array ~再键入几个字符使这个语句变成这样(结尾是空格): total = ch_array[0] + ch_array[1] + ~如果你现在键入 CTRL-P,Vim 将再次搜索以补全光标前的词。由于光标前是空格, 它找到的是之前的第一个词,即 "ch_array"。 再键入 CTRL-P 给你下一个匹配的词,在本例中就是 "total"。第三次 CTRL-P 搜寻更前面的。如果那儿没其它的了,编辑器就会陷入无词可配状态,所以搜索就返回原处,即那个空格。第四次 CTRL-P 导致编辑器周而复始,又找到 "ch_array"。往下搜索,用 CTRL-N。由于在文件结尾搜索又绕回开头,CTRL-N 和 CTRL-P 将找到相同的匹配,但顺序不同。提示: CTRL-N 意为下一个匹配, 而 CTRL-P 意为前一个匹配。(译者:英文 Next 意为下一个,Previous 意为前一个)Vim 编辑器会非常努力的来补全不完整的词。默认情况下,它搜索如下一些地方: 1.当前文件 2.其它窗口内的文件 3.其它载入文件 (隐性缓冲) 4.未载入文件 (惰性缓冲) 5.标记文件 6.被当前文件以 #include 语句包含的所有文件选 项你可以利用 'complete' 选项定制搜索顺序。还可以使用 'ignorecase' 选项。设定这个选项后,搜寻匹配时大小写的区别就会被忽略。一个特殊的补全选项是 'infercase'。它的用处是在寻找匹配时不计大小写 ('ignorecase'必须先被设定),但仍然采用已键入部分的大小写作。这样, 如果你键入 "For" 而Vim 找到了匹配 "fortunately",所产生的结果将是 "Fortunately"。补 全 特 定 文 本如果你知道你要找什么,那么你可以用这些命令来补全某种类型的文本: CTRL-X CTRL-F 文件名 CTRL-X CTRL-L 整行 CTRL-X CTRL-D 宏定义 (并搜索所包含的文件) CTRL-X CTRL-I 当前文件以及所包含的文件 CTRL-X CTRL-K 词典文件内的单词 CTRL-X CTRL-T 近义词词典文件内的单词 CTRL-X CTRL-] 标记 CTRL-X CTRL-V Vim 命令行每个命令之后,CTRL-N 可以用来搜索下一个匹配,而 CTRL-P 则用于搜索前一个匹配。 关于每个命令的详细用法,参见: |ins-completion|。补 全 文 件 名我们以 CTRL-X CTRL-F 为例。这个命令将找寻文件名。它在当前目录里搜索文件,并显示每一个与光标前单词匹配的文件名。 例如,假定你在当前目录里有下面这些文件: main.c sub_count.c sub_done.c sub_exit.c现在进入插入模式并开始键入: The exit code is in the file sub ~就在这点上,你输入 CTRL-X CTRL-F。现在, Vim 通过查看当前目录里的文件来补全当前词 "sub"。最初的匹配是 sub_count.c。这不是你想要的,所以你按 CTRL-N 以匹配下一个文件。这次匹配的是 sub_done.c。再键入 CTRL-N 给了你 sub_exit.c。结果: The exit code is in the file sub_exit.c ~如果文件名以 / (Unix) 或 C:\ (MS-Windows) 开头,那么你就能搜索文件系统下所有的文件。例如,键入 "/u" 然后 CTRL-X CTRL-F, 这将匹配 "/usr" (这是在 Unix 上): the file is found in /usr/ ~如果你现在按 CTRL-N,你就又回到 "/u"。接受 "/usr/" 并进入下一层目录, 再来一次 CTRL-X CTRL-F: the file is found in /usr/X11R6/ ~当然,匹配结果取决于你的文件系统上有什么文件。匹配结果以字母顺序来排列。==============================================================================*24.4* 重复一次插入如果你按 CTRL-A,编辑器就把你上次在插入模式下输入的文本再输入一次。 比如,假定你有个文件,开头是这样的: "file.h" ~ /* Main program begins */ ~你在第一行开始处插入 "#include ": #include "file.h" ~ /* Main program begins */ ~你再用命令 "j^" 往下来到下一行的开始处。现在你开始插入一个新的 "#include" 行。所以你键入: > i CTRL-A结果就像下面这样: #include "file.h" ~ #include /* Main program begins */ ~"#include " 被插入是因为 CTRL-A 会插入上次插入过的文本。现在你键入 "main.h"<Enter> 以结束这一行: #include "file.h" ~ #include "main.h" ~ /* Main program begins */ ~CTRL-@ 命令会完成 CTRL-A 的操作后退出插入模式。这是一个快速重复插入一模一样的文本的一个方法。==============================================================================*24.5* 从另一行拷贝CTRL-Y 命令插入光标上方的字符。当你复制前一行文本的时候,这个命令很有用。例如,你有这么一行 C 代码: b_array[i]->s_next = a_array[i]->s_next; ~现在你需要把这一行再键入一次,并以 "s_prev" 取代 "s_next"。换行以后, 按14次CTRL-Y,直到光标位于 "next" 的 "n" 上: b_array[i]->s_next = a_array[i]->s_next;~ b_array[i]->s_ ~
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -