:n1,n2 m n3 移动n1-n2行(包括n1,n2)到n3行之下;
:n1,n2 co n3 复制n1-n2行(包括n1,n2)到n3行之下;
:n1,n2 d 删除n1-n2行(包括n1,n2)行;
vi替换使用规则:
:g/s1/s/s2/s3/g 第一个g表示对每一个包括s1的行都进行替换,第二个g表示对每一行包括s1的行所有的s2都用s3替换 s表示替换,s2是要被替换的字符串,他可以和s1相同(如果相同的话用//代替),s3是替换字符串 在vi界面下使用命令 :%s#/usr/bin#/bin#g 可以把文件中所有路径/usr/bin换成/bin。其中“#”是转义字符,表明其后的“/”字符是具有实际意义的字符,不是分隔符。s/str1/str2/ 用字符串 str2 替换行中首次出现的字符串 str1:s/str1/str2/g 用字符串 str2 替换行中所有出现的字符串 str1:s/str1/str2/gi 用字符串 str2 替换行中所有出现的字符串 str1,在查找时不区分大小写: .,$ s/str1/str2/g 用字符串 str2 替换正文当前行到末尾所有出现的字符串 str1:1,$ s/str1/str2/g 用字符串 str2 替换正文中所有出现的字符串 str1 :g/str1/s//str2/g 功能同上:%s/str1/str2/g 功能同上 :g/foobar/s/bar/baz/g 首先搜寻foobar,然后把它变成foobaz. 它没有改变 jailbars, 而其他的一些命令可能会改变jailbars.:%s/str1/str2/gc 替换全文所有符合的单词并让用户确认:g/str1/s//str2/gi 用字符串 str2 替换正文中所有出现的字符串 str1,在查找时不区分大小写,此命令没有下面的严格,经测试显示,不能完全做到在查找时忽略大小写 :%s/str1/str2/gi 用字符串 str2 替换正文中所有出现的字符串 str1,在查找时不区分大小写,在查找时可以完全做到忽略大小写 :10,20s/^/ / 将第10行至第20行资料的最前面插入5个空白 :%s/$/str/g 在整个文件每一行的行尾添加“str” :3,7s/str1/str2/g仅替换文件中的第3行到第7行中的“str1”成“str2” :%s/:.*//g 删除/etc/passwd中用户名后面的从冒号开始直到行尾的所有部分(前提是已经打开了/etc/passwd文件)从上述替换命令可以看到:g 放在命令末尾,表示对搜索字符串在光标所在行的每次出现进行替换;不加 g,表示只对搜索字符串的首次出现进行替换;g 放在命令开头,表示对正文中所有包含搜索字符串的行进行替换操作。上面的命令中的/只是起分隔作用,也可以用其他的字符代替。另外,可以在正规式里用\(和\)来剥离一个序列。例如: 有些字符域使用得很频繁. Vim 为这些字符域提供了预定义域: 项 匹配 相当于 \d 数字 [0-9] \D 非数字 [^0-9] \x 十六进制数字 [0-9a-fA-F] \X 非十六进制数字 [^0-9a-fA-F] \s 空白字符 [ ] ( 和 ) \S 非空白字符 [^ ] (非 和 ) \l 小写字母 [a-z] \L 非小写字母 [^a-z] \u 大写字母 [A-Z] \U 非大写字母 [^A-Z] & 所有查找时匹配到的东西 \[Ee] 更改大小写的选择区域的终点 :%s/\s\+$// 删除行尾多余的空格 命令前面指明范围是“%”,所以这会作用于整个文件。“substitute”命令的样式是“\s\+$”。这表示行末($)一个或者多个(\+)空格(\s)。:g/\(foo\)\(bar\)/s/\2/\1baz/g 将foobar替换成foobaz
转载:http://baikgd.blog.163.com/blog/static/35402495200910134325116/