200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > linux的vim查找的正则表达式 VIM 正则表达式搜索字符串

linux的vim查找的正则表达式 VIM 正则表达式搜索字符串

时间:2020-01-18 19:22:08

相关推荐

linux的vim查找的正则表达式 VIM 正则表达式搜索字符串

在插入模式下,为了减少重复的击键输入,VIM 提供了若干快捷键,当你要输入某个上下文曾经输入过的字符串时,你只要输入开头若干字符,使用快捷键,VIM 将搜索上下文,找到匹配字符串,把剩下的字符补全,你就不必敲了。这样,编程序时你起多长的变量名都没关系了,:-) 而且还可以减少输入错误。我认为,插入补全是 VIM 最为突出的一项功能。

i 向上搜索,补全一个词。例如,上文中出现过 filename 这个词,当你想再输入 filename 时,只要按 f 即可。假如 VIM 向上搜索,找到以 f 开头的第一个匹配不是 filename,你可以继续按 搜索下一个匹配进行补全。当然,如果你想一次 就成功,你可以多输入几个字符比如 filen 再按 补全

i 向下搜索,补全一个词

i 补全一行。比如你写过一行 for (int i = 0; i < 100; i++),你想再写一模一样的一行,只要输入 for 即可。如果补全出来的不是你想要的那一行,你可以按 或 选择上一个或下一个匹配行

i 在文件系统中搜索,补全一个文件名

如果按 或 补全一个词,在当前文件中没有找到匹配,VIM 将搜索 #include 语句中的文件,而文件的位置将在 path 中搜索。

搜索字符串用的是正规表达式(Regular expression),其中许多字符都有特殊含义:

\ 取消后面所跟字符的特殊含义。比如 \[vim\] 匹配字符串“[vim]”

[] 匹配其中之一。比如 [vim] 匹配字母“v”、“i”或者“m”,[a-zA-Z] 匹配任意字母

[^] 匹配非其中之一。比如 [^vim] 匹配除字母“v”、“i”和“m”之外的所有字符

. 匹配任意字符

* 匹配前一字符大于等于零遍。比如 vi*m 匹配“vm”、“vim”、“viim”……

\+ 匹配前一字符大于等于一遍。比如 vi\+m 匹配“vim”、“viim”、“viiim”……

\? 匹配前一字符零遍或者一遍。比如 vi\?m 匹配“vm”或者“vim”

^ 匹配行首。例如 /^hello 查找出现在行首的单词 hello

$ 匹配行末。例如 /hello$ 查找出现在行末的单词 hello

\(\) 括住某段正规表达式

\数字 重复匹配前面某段括住的表达式。例如 \(hello\).*\1 匹配一个开始和末尾都是“hello”,中间是任意字符串的字符串

对于替换字符串,可以用“&”代表整个搜索字符串,或者用“\数字”代表搜索字符串中的某段括住的表达式。

举一个复杂的例子,把文中的所有字符串“abc……xyz”替换为“xyz……abc”可以有下列写法:

:%s/abc\(.*\)xyz/xyz\1abc/g

:%s/\(abc\)\(.*\)\(xyz\)/\3\2\1/g

其它关于正规表达式搜索替换的更详细准确的说明请看 :help pattern

例如:在文本中搜索所有包含amount大于0的以[ ] 括住的字符串的行,如 “amount[123]“, ”amount[200]“ 等:

首先按 :进入命令 模式,然后输入下面的串再回车开始查找:/amount\[[1-9]\([0-9]*\)\+\]

解释如下:

/ 表示进行串搜索, 其它字符为 正则表达式的内容

amount 表示匹配串包含amount

\[ 转义字符,表示匹配左中括号 [

[1-9] 表示匹配一位1到9之间任何数字

\( \) 转义的左右括号,表示括住某段正则表达式,

\+ 转义字符+,表示前面一个字符或一个正则串重复1次或多次,所以,\([0-9]*\) 表示 任意个0-9之间的数字

\] 转义字符 ]

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。