Work at SourceForge, help us to make it a better place! We have an immediate need for a Support Technician in our San Francisco or Denver office.

Close

[r198]: trunk / doc / usr_20.txt Maximize Restore History

Download this file

usr_20.txt    346 lines (230 with data), 13.5 kB

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
*usr_20.txt* For Vim version 7.3. 最近更新: 2005年3月
VIM 用户手册 - Bram Moolenaar 著
译者: Chimin Yen http://vimcdoc.sf.net
快速键入命令行命令
Vim 具备若干基本功能,以简化键入命令的工作。你可以缩写,编辑和重复冒号命令,而
补全功能几乎可以用于所有的场合。
|20.1| 命令行编辑
|20.2| 命令行缩写
|20.3| 命令行补全
|20.4| 命令行历史
|20.5| 命令行窗口
下一章: |usr_21.txt| 离开和回来
前一章: |usr_12.txt| 小窍门
目录: |usr_toc.txt|
==============================================================================
*20.1* 命令行编辑
当你用冒号 (:) 命令或用 / 或 ? 搜索一个字符串时,Vim 就会把光标置于屏幕下方。
你在那儿键入命令或者搜索模式。此处即称为命令行,也是用来输入搜索命令的地方。
最为显而易见的编辑命令的方法是按 <BS> 退格键。按下此键即删去光标前面的字符。如
果要删去另一个更早键入的字符,得先用光标方向键把光标移到那儿。
例如,你键入了: >
:s/col/pig/
在你按下回车键之前,你注意到 "col" 应为 "cow"。为了纠正这个错误,你按五次
<Left> 键。现在,光标正好在 "col" 后面。按 <BS> 键,然后键入正确的字符 "w": >
:s/cow/pig/
现在你可以立刻按 <Enter> 键了。在执行这个命令之前,你无须先把光标移到命令行的
末尾。
命令行上移动光标时最常用的键:
<Left> 左移一个字符
<Right> 右移一个字符
<S-Left> 或 <C-Left> 左移一个单词
<S-Right> 或 <C-Right> 右移一个单词
CTRL-B 或 <Home> 命令行行首
CTRL-E 或 <End> 命令行行尾
备注:
<S-Left> (光标左移键和 Shift 键同时按下) 和 <C-Left> (光标左移键和
Control 键同时按下) 并非在所有键盘上都有效。其它 Shift 和 Control 组合
键也是这种情况。
你也可以用鼠标来移动光标。
删 除
如前所述,<BS> 键删除光标前一个字符。删除光标前整个单词,则用 CTRL-W。
/the fine pig ~
CTRL-W
/the fine ~
CTRL-U 删除命令行上全部文字,从而让你从头开始。
替 换
插入键 <Insert> 让你在插入字符和替换字符两种方式之间切换。先键入如下文字:
/the fine pig ~
再按两次 <S-Left> (或 <S-Left> 无效时按八次 <Left>),把光标移到 "fine" 起始
处。现在,按插入键 <Insert>,切换到替换方式,并键入 "great":
/the greatpig ~
哟,空格没了。现在,别用 <BS> 键,因为那会删除 "t" (这跟插入方式不同)。此时应
该按插入键 <Insert>,从替换方式切换到插入方式,并键入空格:
/the great pig ~
取 消
你本想执行一个 : 或 / 命令,但却改变了主意。要清除命令行上你已经键入的文字却不
执行该命令,按 CTRL-C 或 <Esc>。
备注:
<Esc> 是普遍采用的 "退出" 键。不幸的是,在过去美好的 Vi 版本里,在命令
行上按 <Esc> 却是执行命令!由于那会被认为是程序 bug,Vim 采用 <Esc> 来
取消命令。但其 'cpoptions' 选项可以使 Vim 跟 Vi 兼容。而且,使用映射时
(那可能是为 Vi 而写的),<Esc> 键也总和 Vi 兼容。由此看来,采用 CTRL-C
倒不失为一种永远奏效的方法。
如果你在命令行开始处,那么按 <BS> 将取消整个命令。这就像删除命令行赖以开始的
":" 或 "/"。
==============================================================================
*20.2* 命令行缩写
有些 ":" 命令确实很长。我们已经提及替代命令 ":substitute" 可以被缩写成 ":s"。
这是一个基本机理,即所有 ":" 冒号命令都可以被缩写。
一个命令可以被缩写成多短呢?英文有 26 个字母,而 Vim 却有多得多的命令。例如,
":set" 也以 ":s" 开头,但 ":s" 不是启动 ":set" 命令的。":set" 可以被缩写成
":se"。
把一个命令缩写得更短即可能适用于两个命令,此时,该缩写仍然只能代表其中的一
个。而选择哪个却没有任何逻辑,你不得不一个一个地记。最短的有效缩写形式可以在帮
助文件里找到。例如:
>
:s[ubstitute]
它的意思是替代命令 ":substitute" 的最短缩写形式是 ":s"。随后的字符可以任选。因
此 ":su" 和 ":sub" 都有效。
在用户手册里我们有时用命令的全称,有时简称意义明白就用简称。例如,":function"
可以缩写成 ":fu"。但既然大多数读者不明其所指,所以我们采用简称 ":fun"。(Vim 没
有命令 ":funny",否则简称 ":fun" 也会令人迷惑。)
在 Vim 脚本里你最好用命令全称。当你日后改编脚本时,全称读起来比较容易。除非那
是一些常用命令如 ":w" (":write") 和 ":r" (":read")。
一个特别令人迷惑的缩写是 ":end",它可以指 ":endif",":endwhile" 或
":endfunction"。所以,遇到这类命令时,最好永远采用全称。
选 项 简 称
在用户手册里,我们采用选项的全称。许多选项还有简称。跟 ":" 冒号命令不一样,有
效的选项简称只有一个。例如,'autoindent' 的简称是 'ai'。因而下面两个命令完成同
样的动作: >
:set autoindent
:set ai
你可以从这儿找到完整的选项全称和简称的列表: |option-list|。
==============================================================================
*20.3* 命令行补全
命令行补全是那些仅仅因为它就值得从 Vi 转到 Vim 的功能之一。一旦你用上了这个功
能,你就离不开它了。
假定你有个文件目录,其中存放了这些文件:
info.txt
intro.txt
bodyofthepaper.txt
你用这个命令来编辑最后那个文件: >
:edit bodyofthepaper.txt
这很容易打错。一个快得多的方法是: >
:edit b<Tab>
其结果是同样的命令。这是怎么回事?制表键 <Tab> 会补全光标前的词。在本例中就是
"b"。Vim 在目录中寻找并找到了唯一的一个以 "b" 开头的文件。那个文件想必是你寻找
的,因此 Vim 为你补全了文件名。
现在键入: >
:edit i<Tab>
Vim 会鸣起响铃,并给你这个结果: >
:edit info.txt
响铃的意思是 Vim 找到了不止一个匹配。然后它使用了找到的第一个匹配 (按字母顺
序)。如果你再按一次 <Tab>,你得到: >
:edit intro.txt
这样,如果第一次 <Tab> 没给你你要找的文件,你就再按一次。如果还有匹配的文件,
你将会看到它们每一个,每按一次,就看到一个。
如果你在最后一个匹配文件名上按 <Tab>,你将会再次看到你起初键入的那个命令: >
:edit i
然后一切再从头开始。这样,Vim 就在匹配列表内周而复始地循环。使用 CTRL-P 依相反
方向循环匹配列表:
<------------------- <Tab> -------------------------+
|
<Tab> --> <Tab> -->
:edit i :edit info.txt :edit intro.txt
<-- CTRL-P <-- CTRL-P
|
+---------------------- CTRL-P ------------------------>
上 下 文
当你键入 ":set i" 而不是 ":edit i",并按 <Tab>,你得到的是: >
:set icon
嗨,为什么你没得到 ":set info.txt"?这是由于 Vim 的补全功能是上下文相关的。
Vim 寻找的那类词取决于关键词前面的命令。Vim 知道你不可能在命令 ":set" 后面用一
个文件名,但却可以用一个选项名。
同样,如果你重复键入 <Tab>,Vim 就会在所有匹配间周而复始地循环。你最好开始
时多键入几个字符,否则匹配的选项会很多: >
:set isk<Tab>
结果是: >
:set iskeyword
现在键入 "=" 并按 <Tab>: >
:set iskeyword=@,48-57,_,192-255
在此,Vim 插入的是该选项原来的设定值。现在你可以编辑它了。
按 <Tab> 键补全的乃是 Vim 在命令行那个位置上所期待的。你不妨试试,看它究竟
是如何补全的。在某些情形下你会得不到你想要的结果。那或者因为 Vim 不知道你要什
么,或者因为 Vim 还没有为该情况实现补全功能。在那个场合,你的 <Tab> 就会被当作
字符插入文本 (显示为 ^I)。
匹 配 列 表
当匹配有很多时,你可能希望看到一个总览。要看匹配总览,请按 CTRL-D。例如,你键
入了以下命令以后按 CTRL-D: >
:set is
结果是: >
:set is
incsearch isfname isident iskeyword isprint
:set is
Vim 列出了匹配,然后又伴随着你早先键入的命令回到命令行。你现在可以检验匹配列
表,找你想要的选项了。如果它不在列表中,你可以用 <BS> 修正那个词。如果匹配太
多了,就在按 <Tab> 键补全命令之前再多打几个字符。
如果你仔细观察了,你就会注意到选项 "incsearch" 不是以 "is" 开头。在这个场
合,"is" 指的就是 "incsearch" 的简称。(许多选项都有其简称和全称。) Vim 知道你
可能要把选项的简称扩展成全称,够聪明的吧。
更 多 选 项
命令 CTRL-L 把词补全为最长无歧义字符串。如果你键入 ":edit i" 而目录内存放着文
件 "info.txt" 和 "info_backup.txt",那么,你将得到 ":edit info"。
选项 'wildmode' 可用来改变补全时采用的方式。
选项 'wildmenu' 可用来取得菜单式的匹配列表。
利用选项 'suffixes' 来指定一些不太重要的文件,并让它们出现在文件列表末尾。
选项 'wildignore' 指定一些根本用不着表列的文件。
欲知更多此类选项详情,参见: |cmdline-completion|
==============================================================================
*20.4* 命令行历史
我们曾经在第三章简单提到过历史记录功能。其基本用法就是你可以用 <Up> 键调用较
早的命令行。而 <Down> 键则让你回到较晚的命令行。
历史记录功能实际上共有四种。我们在这里要提到的是用于 ":" 冒号命令以及用于 "/"
和 "?" 搜索命令的历史记录功能。"/" 和 "?" 命令共享同一历史记录。因为两者同为搜
索命令。另外两种历史记录功能用于函数 input() 的表达式和输入行。
|cmdline-history|
假定你完成了一个 ":set" 命令,又键入了十个冒号命令,然后要再次执行那个 ":set"
命令。你本可以按一个 ":",然后按十次 <Up>。更快捷的方法是: >
:se<Up>
你现在就回到以前执行过的,以 "se" 开头的命令。没准儿那就是你想找的 ":set" 命
令。至少你不至于按很多 <Up> 键 (除非你执行的都是 ":set" 命令)。
<Up> 键用你在命令行上已经键入的文本去跟历史记录里的命令作比较。只有匹配的命令
才被显示出来。
如果你没找到你要找的命令,用 <Down> 回到你键入的文本作修改。或者用 CTRL-U
从头来过。
显示历史记录里所有的命令: >
:history
那是 ":" 冒号命令的历史记录。搜索历史记录用这个命令来显示: >
:history /
如果你不愿用光标方向键,CTRL-P 作用就跟 <Up> 一样。而 CTRL-N 跟 <Down> 一样。
CTRL-P 意指前一个 (previous),CTRL-N 意指下一个 (next)。
==============================================================================
*20.5* 命令行窗口
在命令行上键入文本跟插入模式下键入文本有所不同。许多修改文本的命令都不能用。对
大多数命令而言,那问题不大,但有时你必须键入一个复杂的命令。那样的场合用命令行
窗口就非常有用了。
用这个命令来打开命令行窗口: >
q:
Vim 现在就在屏幕底部打开了一个 (很小的) 窗口。它存放着命令行历史记录,以及一行
空行在末尾:
+-------------------------------------+
|other window |
|~ |
|file.txt=============================|
|:e c |
|:e config.h.in |
|:set path=.,/usr/include,, |
|:set iskeyword=@,48-57,_,192-255 |
|:set is |
|:q |
|: |
|command-line=========================|
| |
+-------------------------------------+
现在你处于普通模式下。你可以用 "hjkl" 键来移动光标。例如,用 "5k" 上移至
":e config.h.in" 那一行。键入 "$h" 移到 "in" 的 "i" 字符上,并键入 "cwout"。
现在你把这一行改成了这样:
:e config.h.out ~
现在按 <Enter> 执行这个命令。命令行窗口就关上了。
按 <Enter> 键执行光标下的那个命令。这跟 Vim 处于插入模式抑或普通模式无关。
在命令行窗口内所作的修改不会被保存。它们不会导致历史记录被修改。唯一例外就
是你执行的命令将被加到历史记录的末尾,跟所有执行过的命令一样。
在你要总览历史记录时,命令行窗口十分有用,查找类似命令,修改一点点,然后执行
它。一个搜索命令可用来寻找某些东西。
在前面那个例子中,搜索命令 "?config" 是可以用来寻找先前那个含有 "config" 的
命令的。这有点儿特别,因为你是在命令行窗口内用命令行作搜索。在键入搜索命令时,
你打不开另一个命令行窗口,命令行窗口是唯一的。
==============================================================================
下一章: |usr_21.txt| 离开和返回
版权: 参见 |manual-copyright| vim:tw=78:ts=8:ft=help:norl: