-
Notifications
You must be signed in to change notification settings - Fork 0
/
vim第五章笔记
124 lines (66 loc) · 4.28 KB
/
vim第五章笔记
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
:[range]delete [x] 删除指定范围内的行[到寄存器 x 中]
:[range]yank [x] 复制指定范围的行[到寄存器 x 中]
:[line]put [x] 在指定行后粘贴寄存器 x 中的内容
:[range]copy {address} 把指定范围内的行拷贝到 {address} 所指定的行之下
:[range]move {address} 把指定范围内的行移动到 {address} 所指定的行之下
:[range]join 连接指定范围内的行
:[range]normal {commands} 对指定范围内的每一行执行普通模式命令 {commands}
:[range]substitute/{pattern}/
{string}/[flags] 把指定范围内出现{pattern}的地方替换为{string}
:[range]global/{pattern}/[cmd] 对指定范围内匹配{pattern}的所有行,在其上执行
Ex 命令{cmd}
通常,一个范围具有如下的形式:{start},{end} 需注意的是 {start} 和 {end} 都是地址。到目前为止,我们已经看到过用行号
作为地址,然而很快就会看到也能用查找模式或是位置标记作为地址。 符号 . 代表当前行的地址,从当前位置到文件末尾间的所有行:
:.,$p
符号 % 也有特殊含义,它代表当前文件中的所有行
:%s/Practical/Pragmatic/ 上述命令让 Vim 把每行内的第一个“Practical”替换为“Pragmatic”
在可视模式下选择区域之后按:进入命令行模式会自动标号所选区域
Vim 也接受以模式作为一条 Ex 命令的地址
:/<html>/,/<\/html>/p,假设我们想对位于 <html></html> 之间的每一行都运行一条 Ex 命令,但是不想
包括 <html> 及 </html> 标签所在的行,那么可以为之加上偏移::/<html>/+1,/<\/html>/-1p
偏移的一般形式是这样的:{address}+n
1 文件的第一行
$ 文件的最后一行
0 虚拟行,位于文件第一行上方
. 光标所在行
'm 包含位置标记 m 的行
'< 高亮选区的起始行
'> 高亮选区的结束行
% 整个文件(:1,$ 的简写形式)
:copy 命令(及其简写形式 :t )复制 :move(缩写为:m)移动命令
:6copy. /:6t, 命令解读为“为第 6 行创建一份副本,并放到当前行下方
:t6 把当前行复制到第 6 行下方
:t$ 把当前行复制到文本结尾
:'<,'>t0 把高亮选中的行复制到文件开头
重复上次的 Ex 命令非常
简单,只需按 @: 即可
A;<Esc>-->jVG-->:'<,'>normal . normal对范围内所有行执行.命令
也可用:%normal A; 在做此修改时会切换到插入模式,但是在修改完后 Vim 会自动返回到
普通模式。
在执行指定的普通模式命令之前,Vim 会先把光标移到该行的起始处。因此在执行
时,用不着担心光标的位置。例如,下面这条命令可以把整个 JavaScript 文件注释掉:
➾ :%normal i//
何用 . 命令重复上次的修改。但是, . 命令不会重复
由 Vim 命令行中做出的修改。作为替代,我们可以用 @: 来重复上次的 Ex 命令
: 寄存器总是保存着最后执行的命令行命
令(参见 :h quote_:
)。在运行过一次 @: 后,后面就可以用 @@ 命令来重复它、、Vim 为几乎所有功能都提供了相应的 Ex 命令。虽然用 @: 总是可以重复上一条
Ex 命令,但如果想回退其影响,却没有这种直截了当的方式。用本节提到的 <C-o> 命
令,也能够回退 :next 、 :tnext 等命令的执行结果;然而对于表 5-1 中列出的 Ex 命
令,则要用 u 键才能撤销其影响。
tab键补全,control+d键列出可用的补全列表
<C-r><C-w> 用于插入光标下的单词
q/ 打开查找命令历史的命令行窗口
q: 打开 Ex 命令历史的命令行窗口
<Ctrl-f> 从命令行模式切换到命令行窗口
在 Vim 的命令行模式中,给命令加一个叹号前缀(参见 :h :! )就可以调用
外部程序 如:!ls查看当前目录
:!{cmd} 这种语法适用于执行一次性命令
如果想在 shell 中执行几条命令
要怎么做?对这种情况,可以执行 Vim 的 :shell 命令来启动一个交互的 shell 会
话 exit回到vim
假设我们正在 bash shell 中运行 Vim,然后需要执行一些 shell 命令。我们可以
先按 Ctrl-z 挂起 Vim 所属的进程,并把控制权交还给 bash。此时 Vim 进程在后台
处于挂起状态,让我们可以像往常一样与 bash 会话进行交互
$ jobs看当前的作业列表 用 fg 命令唤醒一个被挂起的作业,把它移到前台。这会让 Vim
恢复成挂起前的状态