本来是要写
所以本文写
本文的主要内容主要来自官方文档加上自己的理解, 如果想看官方文档请在Vim中执行
substitute
的, 然后发现range
功能太过于强大, 并且很多地方都要使用,所以本文写
range
, 写下本文也是为自己梳理一下,本文的主要内容主要来自官方文档加上自己的理解, 如果想看官方文档请在Vim中执行
:h [range]
range
[range]
代表替换作用的范围
下面我将范围分成
单行
和多行
单行
{number}
行号为number
的那一行.
光标当前行(默认)$
最后一行't
markt
(小写的mark) 所在 的那一行'T
markT
(大写的mark) 所在 的那一行 (如果在markT
不在本文件不会生效)/{pattern}[/]
当前光标向下匹配{pattern}
的那一行?{pattern}[?]
当前光标向上匹配{pattern}
的那一行\/
向下搜索你上一搜索的内容 的那一行\?
向上搜索你上一搜索的内容 的那一行\&
向下搜索你上一次替换中的{pattern}
的那一行
多行
%
整个文件, 相当于1,$
注: 如果向下搜索指的并不单单是从当前光标到底部, 而是光标到底部(不包含光标那一行)和顶部到光标(包含光标那一行)
加减号
在上面的
e.g.
单行范围
中我们又可以在后面加上数字来指定一个偏移e.g.
.+1
就代表向下偏移一行.-1
就代表向上偏移一行/findsomething/+3
找到findsomething
那行再往下偏移3行逗号和分号
{n1},{n2}
表示的范围就是n1
到n2
(包括)e.g.
1,3
表示第一行到第三行(包括)1,/find/
表示从第一行
到 从光标开始找find
的那一行
所以
,
的执行是这样的: 先执行n1
找到行号, 再执行n2
找出行号, 就是之间的范围;
和,
为唯一的区别是;
会先移动光标到;
左边的行号, 再去执行,这就导致了开始找的范围不一样
所以
;
的执行是这样的: 先执行n1
找到行号, 将光标移动到n1
, 再执行n2
//
{n1}//{n2}
先找n1
在从n1
那行开始找n2
0 comments:
Post a Comment