Tip28
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 <html>
tag and ends on the line containing the corresponding closing tag.
这个范围开始于包含<html>
标签的行,结束于包含对应关闭标签的行。
Modify an Address Using an Offset
Suppose that we wanted to run an Ex command on every line inside the<html></html>
block but not on the lines that contain the<html>
and</html>
tags themselves. We could do so using an offset:
假设我们打算在<html></html>
范围内的每一行执行Ex命令,但是并不包含<html>
和</html>
所在行,我们可以用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}
命令的最终参数。