forked from ma6174/vim
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathusr_02.cnx
executable file
·495 lines (397 loc) · 17.2 KB
/
usr_02.cnx
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
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
*usr_02.txt* For Vim version 7.3. 最后修改:2010年8月
VIM 用户手册 - Bram Moolenaar
(译者:Nek_in http://vimcdoc.sf.net)
Vim 初 步
本章提供足够的信息使你用够使用 Vim 来做基本的编辑。这里提供的方法不一定是高效
快捷的。但起码是有效的。花些时间去练习这些命令,这是后面的知识的基础。
|02.1| 第一次运行 Vim
|02.2| 插入文本
|02.3| 移动光标
|02.4| 删除字符
|02.5| 撤销与重做
|02.6| 其它编辑命令
|02.7| 退出
|02.8| 寻求帮助
下一章:|usr_03.txt| 移动
前一章:|usr_01.txt| 关于本手册
目录:|usr_toc.txt|
==============================================================================
*02.1* 第一次运行 Vim
启动 Vim 的命令如下:
>
gvim file.txt
<
在 UNIX 操作系统中,你可以在任意命令提示符下输入这个命令。如果你用的是
Microsoft Windows,启动一个 MS-DOS 窗口,再输入这个命令。
无论哪一种方式,现在 Vim 开始编辑一个名为 file.txt 的文件了。由于这是一个
新建文件,你会得到一个空的窗口。屏幕看起来会象下面这样:
+---------------------------------------+
|# |
|~ |
|~ |
|~ |
|~ |
|"file.txt" [New file] |
+---------------------------------------+
('#"是当前光标的位置)
以波纹线 (~) 开头的行表示该行在文件中不存在。换句话说,如果 Vim 打开的文件不能
充满这个显示的屏幕,它就会显示以波纹线开头的行。在屏幕的底部,有一个消息行指示
文件名为 file.txt 并且说明这是一个新建的文件。这行信息是临时的,新的信息可以覆
盖它。
VIM 命 令
gvim 命令建立一个新窗口用于编辑。如果你用的是这个命令:
>
vim file.txt
<
则编辑在命令窗口内进行。换句话说,如果你在 xterm 中运行,编辑器使用 xterm 窗
口。如果你用的是 Microsoft Window 的 MS-DOS 窗口,编辑器使用这个 MS-DOS 窗口。
两个版本显示出来的文本看起来是一样的。但如果你用的是 gvim,就会有其他特性,如
菜单栏。后面会有更多的描述。
==============================================================================
*02.2* 插入文本
Vim 是一个多模式的编辑器。就是说,在不同模式下,编辑器的响应是不同的。在普通模
式下,你敲入的字符只是命令;而在插入模式,你敲入的字符就成为插入的文本了。
当你刚刚进入 Vim,它处在普通模式。通过敲入 "i" 命令 (i 是插入 (Insert) 的
缩写) 可以启动插入模式,这样你就可以输入文字了,这些文字将被插入到文件中。不用
担心输错了,你随后还能够修正它。要输入下文的程序员打油诗,你可以这样敲:
>
iA very intelligent turtle
Found programming UNIX a hurdle
<
输入 "turtle" 后,按回车开始一个新行。最后,你输入 <Esc> 键退出插入模式而回到
普通模式。现在在你的 Vim 窗口中就有两行文字了:
+---------------------------------------+
|A very intelligent turtle |
|Found programming UNIX a hurdle |
|~ |
|~ |
| |
+---------------------------------------+
我 在 什 么 模 式?
要看到你在什么模式,输入如下命令:
>
:set showmode
<
你会发现当你敲入冒号后,Vim 把光标移到窗口的最后一行。那里是你输入 "冒号命令"
(以冒号开头的命令) 的地方,敲入回车结束这个命令的输入 (所有的冒号命令都用这种
方式结束)。
现在,如果你输入 "i" 命令,Vim 会在窗口的底部显示 --INSERT-- (中文模式显示
的是 --插入-- 译者注),这表示你在插入模式。
+---------------------------------------+
|A very intelligent turtle |
|Found programming UNIX a hurdle |
|~ |
|~ |
|-- INSERT -- |
+---------------------------------------+
如果你输入 <Esc> 回到普通模式,最后一行又变成空白。
摆 脱 麻 烦
Vim 新手常常遇到的一个问题是不知道自己在什么模式下,可能是因为忘了,也可能是因
为不小心敲了一个切换模式的命令。无论你在什么模式,要回到普通模式,只要敲 <Esc>
就可以了。有时你需要敲两次,如果 Vim 发出 "嘀" 一声,就表示你已经在普通模式
了。
==============================================================================
*02.3* 移动光标
回到普通模式后,你可以使用如下命令移动光标:
h 左 *hjkl*
j 下
k 上
l 右
这些命令看起来是随便选的。无论如何,谁听说过用 l 表示右的?但实际上,作这些选
择是有理由的:移动光标是最常用的编辑器命令。而这些键位在你的右手本位。也就是
说:这种键位的设定使你可以用最快的速度执行移动操作 (特别是当你用十指输入的时
候)。
备注:
你还可以用方向键移动光标,但这样会减慢你输入的速度,因为你必须把你的手
从字母键移动到方向键。想象一下,你在一个小时内可要这样做几百次,这可要
花相当多的时间的。
而且,有一些键盘是没有方向键的,或者放在一些很特别的地方。所以,知
道 hjkl 的用法在这些情况下就很有帮助了。
记住这些命令的一个方法是:h 在左边,l 在右边,j 指着下面。用图表示如下:
>
k
h l
j
<
学习这些命令的最好方法是使用它。用 "i" 命令输入更多的文字。然后用 hjkl 键移动
光标并在某些地方输入一些单词。别忘了用 <Esc> 切换回普通模式。|vimtutor|也是一
个练习的好办法。
==============================================================================
*02.4* 删除字符
要删除一个字符,把光标移到它上面然后输入 "x"。(这是对以前的打字机的一种回归,
那时你通过在字符上输入 xxxx 删除它) 例如,把光标移到行首,然后输入xxxxxxx (七
个x) 可以删除 "A very "。结果看起来这样:
+---------------------------------------+
|intelligent turtle |
|Found programming UNIX a hurdle |
|~ |
|~ |
| |
+---------------------------------------+
现在你可以输入新的字符了,例如,通过输入:
>
iA young <Esc>
<
这个命令启动一次插入操作 (那个 "i"),并插入 "A young",然后退出插入模式 (最后
一个 <Esc>)。结果是:
+---------------------------------------+
|A young intelligent turtle |
|Found programming UNIX a hurdle |
|~ |
|~ |
| |
+---------------------------------------+
删 除 一 行
要删除一整行,使用 "dd" 命令,后一行会移上来填掉留下的空行:
+---------------------------------------+
|Found programming UNIX a hurdle |
|~ |
|~ |
|~ |
| |
+---------------------------------------+
删 除 一 个 换 行 符
在 Vim 中你可以把两行连起来,这意味着删除两行间的换行符。"J" 命令用于完成这个
功能。
以下面两行为例:
>
A young intelligent
turtle
<
把光标移到第一行,然后按 "J":
>
A young intelligent turtle
<
==============================================================================
*02.5* 撤销与重做
假设现在你删得太多了。当然,你可以重新输入需要的内容。不过,你还有一个更简单的
选择。"u" 命令撤销上一个编辑操作。看看下面这个操作:先用 "dd" 删除一行,再敲
"u",该行又回来了。
再给一个例子:把光标移到第一行的 A 上:
>
A young intelligent turtle
<
现在输入 xxxxxxx 删除 "A young"。结果如下:
intelligent turtle ~
输入 "u" 撤销最后一个删除操作。那个删除操作删除字符 g,所以撤销命令恢复这个字
符:
g intelligent turtle ~
下一个 u 命令恢复倒数第二个被删除的字符:
ng intelligent turtle ~
下一个 u 命令恢复 u,如此类推:
ung intelligent turtle ~
oung intelligent turtle ~
young intelligent turtle ~
young intelligent turtle ~
A young intelligent turtle ~
备注:
如果你输入 "u" 两次,你的文本恢复原样,那应该是你的 Vim 被配置在 Vi 兼
容模式了。要修正这个问题,看看这里:|not-compatible|。
本文假定你工作在 "Vim 的方式"。你可能更喜欢旧的 Vi 的模式,但是你必须
小心本文中的一些小区别。
重 做
如果你撤销得太多,你可以输入 CTRL-R (redo) 回退前一个命令。换句话说,它撤销一
个撤销。要看执行的例子,输入 CTRL-R 两次。字符 A 和它后面的空格就出现了:
young intelligent turtle ~
有一个特殊版本的撤销命令:"U" (行撤销)。行撤销命令撤销所有在最近编辑的行上的操
作。 输入该命令两次取消前一个 "U":
A very intelligent turtle ~
xxxx 删除 very
A intelligent turtle ~
xxxxxx 删除turtle
A intelligent ~
用 "U" 恢复行
A very intelligent turtle ~
用 "u" 撤销 "U"
A intelligent ~
"U" 命令本身就是一个改变操作,"u" 命令撤销该操作,CTRL-R 命令重做该操作。有点
乱吧,但不用担心,用 "u" 和 CTRL-R 命令你可以切换到任何你编辑过的状态。更多信
息可见 |32.2| 一节。
==============================================================================
*02.6* 其它编辑命令
Vim 有大量的命令可以修改文本。参见 |Q_in|和下文。这里是一些经常用到的:
添 加
"i" 命令在光标所在字符前面插入字符。一般情况下,这就够用了,但如果你刚好想在
行尾加东西怎么办?要解决这个问题,你需要在文本后插入字符。这通过 "a" (append,
附加) 命令实现。
例如,要把如下行
and that's not saying much for the turtle. ~
改为
and that's not saying much for the turtle!!! ~
把光标移到行尾的句号上。然后输入 "x" 删除它。现在光标处于一行的尾部了,现在输
入
>
a!!!<Esc>
<
添加三个感叹号到 turtle 的 "e" 后面:
and that's not saying much for the turtle!!! ~
开 始 一 个 新 行
"o" 命令在光标下方建立一个新的空行,并把 Vim 切换到插入模式。然后你可以在这个
新行内输入文本。
假定你的光标在下面两行中第一行的某个地方:
A very intelligent turtle ~
Found programming UNIX a hurdle ~
如果你现在用 "o" 命令并输入新的文字:
>
oThat liked using Vim<Esc>
结果会是:
A very intelligent turtle ~
That liked using Vim ~
Found programming UNIX a hurdle ~
"O" 命令 (大写) 在光标上方打开一个新行。
指 定 计 数
假定你想向上移动 9 行,你可以输入 "kkkkkkkkk" 或者你可以输入"9k"。实际上,你可
以在很多命令前面加一个数字。例如在这章的前面,你通过输入 "a!!!<Esc>" 增加三个
感叹号。另一个方法是使用命令 "3a!<Esc>"。计数 3 要求把后面的命令执行三次。同样
的,要删除三个字符,可以使用 "3x"。计数总是放在要被处理多次的命令的前面。
==============================================================================
*02.7* 退出
使用 "ZZ" 命令可以退出。这个命令保存文件并退出。
备注:
与其他编辑器不一样,Vim 不会自动建立一个备份文件。如果你输入 "ZZ",你
的修改立即生效并且不能恢复。你可以配置 Vim 让它产生一个备份文件,参见
|07.4|。
放 弃 修 改
有时你会做了一系列的修改才突然发现还不如编辑之前。不用担心,Vim 有 "放弃修改并
退出" 的命令,那就是:
>
:q!
<
别忘了按回车使你的命令生效。
如果你关心细节,此命令有三部分组成:冒号 (:),它使 Vim 进入命令模式, q 命令,
它告诉 Vim 退出,而感叹号是强制命令修饰符。
这里,强制命令修饰符是必要的,它强制性地要求 Vim 放弃修改并退出。如果你只
是输入 ":q",Vim 会显示一个错误信息并拒绝退出:
E37: No write since last change (use ! to override) ~
通过指定强制执行,你实际上在告诉 Vim:"我知道我所做的看起来很傻,但我长大了,
知道自己在做什么。"
如果你放弃修改后还想重新编辑,用 ":e!" 命令可以重新装载原来的文件。
==============================================================================
*02.8* 寻求帮助
所有你想知道的东西,都可以在 Vim 帮助文件中找到答案,随便问!
要获得一般的帮助,用这个命令:
>
:help
<
你还可以用第一个功能键 <F1>。如果你的键盘上有一个 <Help> 键,可能也有效。
如果你不指定主题,":help" 将命令显示一个总览的帮助窗口。Vim 的作者在帮助系
统方面使用了一个很聪明的方案 (也许可以说是很懒惰的方案):他们用一个普通的编辑
窗口来显示帮助。你可以在帮助窗口中使用任何普通的 Vim 命令移动光标。所以,h,
j,k 和 l 还是表示左,下,上和右。
要退出帮助窗口,用退出一个普通窗口的命令:"ZZ"。这只会退出帮助窗口,而不会
退出 Vim。
当你阅读帮助的时候,你会发现有一些文字被一对竖线括起来了 (例如 |help|)。这表示
一个超级链接。如果你把光标移到这两个竖线之间并按 CTRL-] (标签跳转命令),帮助系
统会把你引向这个超级链接指向的主题。(由于不是本章的重点,这里不详细讨论,Vim
对超级链接的术语是 "标签" (tag),所以 CTRL-] 实际是跳转到光标所在单词为名的标
签所在的位置。)
跳转几次以后,你可能想回到原来的地方。CTRL-T (标签退栈) 把你送回前一个跳转
点。CTRL-O (跳转到前一个位置) 也能完成相同的功能。
在帮助屏幕的顶上,有这样的记号:*help.txt*。"*" 之间的名字被帮助系统用来定
义一个标签 (也就是超级链接的目标)。
参见 |29.1|可以了解更多关于标签的内容。
要获得特定主题的帮助,使用如下命令:
>
:help {主题}
<
例如,要获得 "x" 命令的帮助,输入如下命令:
>
:help x
<
要知道如何删除文本,使用如下命令:
>
:help deleting
<
要获得所有命令的帮助索引,使用如下命令:
>
help index
<
如果你需要获得一个包含控制字符的命令的帮助 (例如 CTRL-A),你可以在它前面加上前
缀 "CTRL-"。
>
help CTRL-A
<
Vim 有很多模式。在默认情况下,帮助系统显示普通模式的命令。例如,如下命令显示
普通模式的 CTRL-H 命令的帮助:
>
:help CTRL-H
<
要表示其他模式,可以使用模式前缀。如果你需要插入模式的命令帮助,使用 "i_" 前
缀。例如对于 CTRL-H,你可以用如下命令:
>
:help i_CTRL-H
<
当你启动 Vim,你可以使用一些命令行参数。这些参数以短横线开头 (-)。例如知道要
-t 这个参数是干什么用的,可以使用这个命令:
>
:help -t
<
Vim 有大量的选项让你定制这个编辑器。如果你要获得选项的帮助,你需要把它括在一个
单引号中。例如,要知道 'number' 这个选项干什么的,使用如下命令:
>
:help 'number'
如果你看到一个你不能理解的错误信息,例如:
>
E37: No write since last change (use ! to override) ~
你可以使用使用E开头的错误号找关于它的帮助:
>
:help E37
<
小结: *help-summary* >
:help
< 提供非常概括的帮助。往下滚动,可以看到所有帮助文件的列表,包括
本地添加的文件 (即不是 Vim 发布带来的)。 >
:help user-toc.txt
< 用户手册的内容目录。 >
:help :subject
< Ex-命令 "subject",例如下例: >
:help :help
< 关于如何得到帮助的帮助。 >
:help abc
< 普通模式命令 "abc"。 >
:help CTRL-B
< 普通模式下控制键 <C-B>。 >
:help i_abc
:help i_CTRL-B
< 同上,但在插入模式下。 >
:help v_abc
:help v_CTRL-B
< 同上,但在可视模式下。 >
:help c_abc
:help c_CTRL-B
< 同上,但在命令行模式下。 >
:help 'subject'
< 选项 'subject'。 >
:help subject()
< 函数 "subject"。 >
:help -subject
< 命令行选项 "-subject"。 >
:help +subject
< 编译时特性 "+subject"。 >
:help EventName
< 自动命令事件 "EventName"。 >
:help digraphs.txt
< 帮助文件 "digraph.txt" 的顶部。
其他帮助文件亦同。 >
:help pattern<Tab>
< 寻找 "pattern" 开始的一个帮助标签。重复按 <Tab> 找下一个。 >
:help pattern<Ctrl-D>
< 一次性列出所有匹配 "pattern" 的帮助标签。 >
:helpgrep pattern
< 在所有帮助文件的全部文本中寻找模式 "pattern",并跳到第一个匹
配。要跳到其它的匹配,可用: >
:cn
< 下一个匹配 >
:cprev
:cN
< 前一个匹配 >
:cfirst
:clast
< 第一个或最后一个匹配 >
:copen
:cclose
< 打开/关闭 quickfix 窗口;按 <Enter> 跳转到光标所在的项
目上
==============================================================================
下一章: |usr_03.txt| 移动
版权:参见 |manual-copyright| vim:tw=78:ts=8:ft=help:norl: