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

Download this file

usr_22.txt    364 lines (259 with data), 14.3 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
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
*usr_22.txt* For Vim version 7.3. 最近更新: 20084
VIM 用户手册 - Bram Moolenaar
译者: Chimin Yen http://vimcdoc.sf.net
寻找要编辑的文件
到处都是文件,你怎么查找它们呢?Vim 为我们提供了在目录树间浏览的种种方法。还有
若干命令让你从一个文件通过文件名跳转到一个文件。而且,Vim 还记着曾经编辑过哪些
文件。
|22.1| 文件浏览器
|22.2| 当前目录
|22.3| 查找文件
|22.4| 缓冲区列表
下一章: |usr_23.txt| 编辑特殊文件
前一章: |usr_21.txt| 离开和回来
目录: |usr_toc.txt|
==============================================================================
*22.1* 文件浏览器
Vim 有个插件可以用来编辑一个目录。试一下这个命令: >
:edit .
借助魔术般的自动命令和 Vim 脚本功能,目录的内容被用来填充窗口。看起来就像这
样:
" ============================================================================ ~
" Netrw Directory Listing (netrw v109) ~
" Sorted by name ~
" Sort sequence: [\/]$,\.h$,\.c$,\.cpp$,*,\.info$,\.swp$,\.o$\.obj$,\.bak$ ~
" Quick Help: <F1>:help -:go up dir D:delete R:rename s:sort-by x:exec ~
" ============================================================================ ~
../ ~
./ ~
check/ ~
Makefile ~
autocmd.txt ~
change.txt ~
eval.txt~ ~
filetype.txt~ ~
help.txt.info ~
你可以看到这样一些条目:
1. 浏览工具的名称和版本号
2. 浏览目录名
3. 排序方法 (可以是名字、时间或大小)
4. 名字如何排序 (目录优先,然后是 *.h 文件、*.c 文件,等等)
5. 如何得到帮助 (用 <F1> 键),然后是可用命令的概括列表
6. 文件列表,包括 "../",用户可以由此列出父目录。
如果你启用了语法高亮功能,那么,目录里不同部分就显示成不同颜色,让你比较容易辨
认它们。
你可以用普通模式下的 Vim 命令在文本内到处移动。例如,移动光标到一个文件名上并
按下 <Enter> 键。你就可以编辑那个文件了。要回到浏览器,再用一次 ":edit ."
":Explore" 即可,按 CTRL-O 也行。
试一下把光标移至某个目录名,按 <Enter> 键。结果,浏览器就进了该目录,并把那里
的条目显示出来。对准第一个目录 "../" <Enter> 键, 让你返回父目录。按 "-"
可达到同样的目的,且无须先把光标移到 "../" 条目上。
你可以按 <F1> 键获取关于 netrw 文件浏览器功能的帮助。帮助文字如下: >
9. Directory Browsing netrw-browse netrw-dir netrw-list netrw-help
MAPS netrw-maps
<F1>.............Help.......................................|netrw-help|
<cr>.............Browsing...................................|netrw-cr|
<del>............Deleting Files or Directories..............|netrw-delete|
-................Going Up...................................|netrw--|
a................Hiding Files or Directories................|netrw-a|
mb...............Bookmarking a Directory....................|netrw-mb|
gb...............Changing to a Bookmarked Directory.........|netrw-gb|
c................Make Browsing Directory The Current Dir....|netrw-c|
d................Make A New Directory.......................|netrw-d|
D................Deleting Files or Directories..............|netrw-D|
<c-h>............Edit File/Directory Hiding List............|netrw-ctrl-h|
i................Change Listing Style.......................|netrw-i|
<c-l>............Refreshing the Listing.....................|netrw-ctrl-l|
o................Browsing with a Horizontal Split...........|netrw-o|
p................Use Preview Window.........................|netrw-p|
P................Edit in Previous Window....................|netrw-p|
q................Listing Bookmarks and History..............|netrw-q|
r................Reversing Sorting Order....................|netrw-r|
< (等等)
<F1> 键把你带到 netrw 目录浏览内容的帮助页面。这是一个常规的帮助页面,同样常规
|CTRL-]| 跳转到带标签的帮助项目,而 |CTRL-O| 则返回。
要选择显示和编辑的文件: (光标在某文件名上)
<enter> 在当前窗口打开文件 |netrw-cr|
o 横向分割窗口并显示文件 |netrw-o|
v 竖向分割窗口并显示文件 |netrw-v|
p 使用 |preview-window| |netrw-p|
P 在上次的窗口中编辑 |netrw-P|
t 在新标签页中打开文件 |netrw-t|
接下来的普通模式命令用来控制浏览器显示:
i 控制列表风格 (瘦、长、宽和树形)。长列表包含文件大小和
日期信息。
s 反复按 s 会改变文件排序的方式;可以按照名字、修改日期
或文件大小排序。
r 逆转排列顺序。
略举数例其它的普通模式命令:
c 把当前目录改成显示在窗口中的那个目录。(见
|g:netrw_keepdir|,它也控制此行为)
R 为光标下文件改名。Vim 将提示你提供新文件名。
D 删除光标下文件。Vim 将提示你确认删除动作。
mb gb 建立书签/转到书签
还有命令模式;还是一样,只举数例:
:Explore [directory] 浏览指定/当前目录
:NetrwSettings 当前 netrw 设置的综合列表,带有帮助链接。
netrw 浏览器不限于你的本地机器;也可使用 url,如下: (拖尾的 / 是必需的)
:Explore ftp://somehost/path/to/dir/
:e scp://somehost/path/to/dir/
详见 |netrw-browse|。
==============================================================================
*22.2* 当前目录
正如 shell 一样,Vim 也有当前目录的概念。假设你在主目录,并要编辑几个储存在目
"VeryLongFileName" 下的文件。你可以这样做: >
:edit VeryLongFileName/file1.txt
:edit VeryLongFileName/file2.txt
:edit VeryLongFileName/file3.txt
为了避免太多的键击,你可以这样做: >
:cd VeryLongFileName
:edit file1.txt
:edit file2.txt
:edit file3.txt
":cd" 命令可以用来改变当前目录。你可以用 ":pwd" 命令来查看当前目录使什么: >
:pwd
/home/Bram/VeryLongFileName
Vim 记得最近访问过的那个目录。你可以用 "cd -" 命令回去那儿。例如:
>
:pwd
/home/Bram/VeryLongFileName
:cd /etc
:pwd
/etc
:cd -
:pwd
/home/Bram/VeryLongFileName
:cd -
:pwd
/etc
当你把窗口一分为二以后,两个窗口的当前目录是一样的。而当你要在新窗口内编辑几个
存放在当前目录以外某处的文件时,你可以让新窗口采用不同的当前目录,同时保持原窗
口当前目录不变。新窗口采用的当前目录称为本地目录。 >
:pwd
/home/Bram/VeryLongFileName
:split
:lcd /etc
:pwd
/etc
CTRL-W w
:pwd
/home/Bram/VeryLongFileName
只要你不发出 ":lcd" 命令,所有窗口共享同一个当前目录。在一个窗口执行一次 ":cd"
命令,也同时改变其它窗口的当前目录。
执行过 ":lcd" 命令的窗口记得它特有的当前目录。在其它窗口执行 ":cd"
":lcd" 命令对它毫无影响。
在一个采用特有当前目录的窗口执行 ":cd" 命令以后,该窗口就回过头来又采用共享
的当前目录了。
==============================================================================
*22.3* 查找文件
假定现在你在编辑一个 C 程序,该程序有这样一行:
#include "inits.h" ~
你想要查看文件 "inits.h" 里有些什么。把光标移到该文件名上,并键入: >
gf
Vim 就会找到并打开这个文件。
那么,如果该文件不在当前目录里怎么办?Vim 将利用 'path' 选项来寻找这个文
件。该选项是一系列目录名,Vim 会在其中为你寻找文件。
假设你把你的头文件存放在目录 "c:/prog/include" 里。下面这个命令把该目录加入
'path' 选项: >
:set path+=c:/prog/include
这个目录名是一绝对路径。不管你在哪儿,它都指向同一目录。如果你已经知道要编辑的
文件位于当前文件所在目录下某个子目录里,你该怎么办呢?那样的话,你可以指定一个
相对路径。相对路径以 "." 开始:
>
:set path+=./proto
这个命令告诉 Vim 到目录 "proto" 里找文件,而 "proto" 则位于你在其中用了 "gf"
命令的文件所在的目录下面。如此一来,对 "inits.h" "gf" 命令,就让 Vim 以当前
文件所在目录为起点,寻找 "proto/inits.h"
如果不加 "./",只用 "proto",Vim 就会进入当前目录下的 "proto" 目录寻找。然
而当前目录可能不是你在编辑的这个当前文件所在的目录。
'path' 选项还允许你用其它许多方法来指定在其中寻找文件的目录。参见关于 'path'
选项的帮助。
'isfname' 选项用来决定哪些字符可用于文件名,以及哪些不可以 (如上例中的双引
" 字符)。
当你要找的文件名没出现在你编辑的文件里时,你可以键入这个文件名: >
:find inits.h
然后 Vim 就利用 'path' 选项来确定该文件的位置。这就跟 ":edit" 命令一样,只不过
":edit" 命令不用 'path' 选项。
要在新窗口内打开那个已经找到的文件,用 CTRL-W f,而不是 "gf",或用 ":sfind" 而
不是 ":find"。
有个好办法可以直接启动 Vim 来编辑 'path' 中的某个文件: >
vim "+find stdio.h"
这会在你的 'path' 中查找 "stdio.h"。双引号是必需的,用来把括起来的当做一个参数
|-+c|。
==============================================================================
*22.4* 缓冲区列表
Vim 编辑器使用术语 "缓冲区" 来描述编辑当中的文件。实际上,缓冲区是你编辑的文件
的副本。你修改完缓冲区,就把缓冲区的内容写进文件。缓冲区不仅存放文件内容,而且
还存放着全部标记,设定,以及其它跟被编辑文件相关的东西。
隐 藏 的 缓 冲 区
假设你在编辑文件 one.txt,同时又要编辑文件 two.txt。你本来可以简单地用 ":edit
two.txt" 来办到,但由于你已经修改了 one.txt,那样做就没用了。而你又不想在此时
就把 one.txt 存盘。Vim 可以为你解决这个问题: >
:hide edit two.txt
缓冲区 "one.txt" 从屏幕消失,但 Vim 仍然知道你在编辑这个缓冲区,因而保留着它修
改过的文本。这样的缓冲区称为隐藏的缓冲区: 缓冲区存放着文本,但你看不见它。
":hide" 命令参数是另一个命令。":hide" 使得那个命令表现得就像 'hidden' 选项
已被设定。你也可以不用 ":hide" 命令而设定 'hidden' 选项。其作用是当离开任何缓
冲区时,该缓冲区变成隐藏。
小心!当你的隐藏的缓冲区已经改动,千万不要在所有缓冲区存盘之前就退出 Vim。
非 激 活 缓 冲 区
一个缓冲区一经使用,Vim 就记住了一些有关该缓冲区的信息。即使它既不显示在窗
口内,又非隐藏缓冲区,它也仍然在缓冲区列表上。这样的缓冲区称为非激活缓冲区。一
般而言,
激活 显示在窗口内,并加载文本
隐藏 不显示在窗口内,但加载文本
非激活 不显示在窗口内,不加载文本
非激活缓冲区不会被遗忘,因为 Vim 保存着关于它们的信息,如标记等。而且记住文件
名有个好处,你可以调阅你编辑过的文件名,再次编辑它们。
缓 冲 区 列 表
你可以用这个命令查看缓冲区列表:
:buffers
另一个作用相当的命令,虽然意思不那么明白,但键入时省事多了: >
:ls
其输出可能像这样:
1 #h "help.txt" line 62 ~
2 %a+ "usr_21.txt" line 1 ~
3 "usr_toc.txt" line 1 ~
第一栏存放缓冲区号。你可以利用它来编辑文件,而不用键入文件名,参见下文。
紧随缓冲区号的是些标志位。然后是文件名,以及光标最后一次停留的行号。
可能出现的标志位有以下这些 (自左至右):
u 列表外缓冲区 |unlisted-buffer|。
% 当前缓冲区。
# 轮换缓冲区。
a 激活缓冲区,缓冲区被加载且显示。
h 隐藏缓冲区,缓冲区被加载但不显示。
= 只读缓冲区。
- 不可改缓冲区, 'modifiable' 选项不置位。
+ 已修改缓冲区。
编 辑 缓 冲 区
你可以通过指定其缓冲区号来编辑一个缓冲区,而不必键入文件名: >
:buffer 2
但获知缓冲区号的唯一途径是查阅缓冲区列表。如果不用缓冲区号,你可以用文件名,或
其部分:
:buffer help
Vim 将为你键入的文件名找到最佳匹配。如果只有一个缓冲区与之匹配,该缓冲区就被选
用。在这个例子中,被选中的就是 "help.txt"。
要在新窗口中打开一个缓冲区:
:sbuffer 3
这方法也适用于文件名。
使 用 缓 冲 区 列 表
你可以用这些命令在缓冲区列表间移动:
:bnext 编辑下一个缓冲区
:bprevious 编辑前一个缓冲区
:bfirst 编辑第一个缓冲区
:blast 编辑最后一个缓冲区
要从缓冲区列表上删除一个缓冲区,用这个命令:
:bdelete 3
同样,这命令也适用文件名。
如果你删除了一个激活的缓冲区 (显示在窗口中的缓冲区),你也就关闭了该窗口。如
果你删除了当前缓冲区,你也就关闭了当前窗口。如果它是最后一个窗口,Vim 将找一个
缓冲区来编辑。你无法什么也不编辑!
备注:
即使用 ":bdelete" 命令删除了缓冲区以后,Vim 依然记得它。这个缓冲区实际
上成了 "列表外" 缓冲区,它不再出现在 ":buffers" 命令所报告的列表中。不
过 ":buffers!" 命令仍会列出 "列表外" 缓冲区 (没错,Vim 无所不能)。要让
Vim 彻底忘记一个缓冲区,用 ":bwipe" 命令。另见 'buflisted' 选项。
==============================================================================
下一章: |usr_23.txt| 编辑其它文件
版权: 参见 |manual-copyright| vim:tw=78:ts=8:ft=help:norl: