Use Line Numbers as an Address
If we enter an Ex command consisting only of a number, then Vim will interpret that as an address and move our cursor to the specified line.
Specify a Range of Lines by Visual Selection
Instead of addressing a range of lines by number, we could just make a visual selection. If we ran the command 2G followed by VG, we would make a visual selection that looks like this:
除了通过行数来指定文本区域,我们可以先做一个visual selection.如果我们依次运行命令2G,VG,我们就会得到这样一个visual selection
If we press the : key now, the command-line prompt will be prepopulated with the range :’<,’>. It looks cryptic, but you can think of it simply as a range standing for the visual selection. Then we can specify our Ex command, and it will execute on every selected line:
如果这时我们输入: ,命令提示会弹出范围 :’<,’> 。这个看起来很奇怪,但是你可以把这个当作一个visual selection的选择范围。然后我们可以输入Ex命令,然后就会在每一行上执行。
The ‘< symbol is a mark standing for the first line of the visual selection, while ‘> stands for the last line of the visual selection.
‘<表示visual selection的第一行,’>表示visual selection的最后一行。
Specify a Range of Lines by Patterns
Vim also accepts a pattern as an address for an Ex command, such as the one shown here:
Vim在Ex命令中还可以把pattern作为address,例如下面
the range begins on the line containing an opening tag and ends on the line containing the corresponding closing tag.
这个范围开始于包含标签的行,结束于包含对应关闭标签的行。
Modify an Address Using an Offset
Suppose that we wanted to run an Ex command on every line inside theblock but not on the lines that contain the
and
tags themselves. We could do so using an offset:
假设我们打算在 范围内的每一行执行Ex命令,但是并不包含
和
所在行,我们可以用offset来实现。
The general form for an offset goes like this:
offset的一般使用方法如下:
:{address}+n
If n is omitted, it defaults to 1. The {address} could be a line number, a mark, or a pattern.
如果没有n,默认值为1. address可以为行数,mark,或pattern.
Suppose that we wanted to execute a command on a particular number of lines, starting with the current line. We could use an offset relative to the current line:
假设我们打算在特定的行上执行命令,从当前行开始,我们可以利用offset这样做。
:.,.+3p
The . symbol stands for the current line, so :.,.+3 is equivalent to :2,5 in this case.
. 表示当前行,所以 :.,.+3
在这个例子中表示:2,5
Line 0 doesn ’t really exist, but it can be useful as an address in certain contexts. In particular, it can be used as the final argument in the :copy {address} and :move {address} commands when we want to copy or move a range of lines to the top of a file
0行并不存在,不过在特定上下文中非常有用。特别是当我们项复制或移动一段代码到文件的头部的时候,它可以作为:copy {address}
和:move {address}
命令的最终参数。