Vim 小技巧(2)
今天介绍一点vim的东西,vim的几种模式之前介绍过,这里主要针对的是命令行模式。介绍下vim的正则表达式,点.表示任意字符,*表示数目在零个或者以上,反斜线\是转义字符,一些特别的字符比如说.可以用\.来表示,就表示真的只是一个点,而\/表示的是/,还有比如说\*表示的是真正的*,\s表示的是空格。
\d匹配的是数字,\l匹配的是字母;^表示的是行头,$表示的是行尾。
命令行模式的几种用法:在normal模式中输入/test表示查找文件中的test字符;按n向下搜索,按N向上搜索,也可以用?test来查找test字符;用匹配的方式可以用比如说/\l\l\l\l\d\d这种来匹配,表示连续的四个字母和两个数字组合;
还有一种是替换模式:n1,n2s/test/TEST/flag这种表示方式;n1,n2为行号,可以将两个用%代替表示全文,s在这里是查找替换的意思;test是要查找的字符串,TEST是要替换成的字符串;flag可以不加,不加的话表示只替换每行中的第一个,有两个可以供选择的flag,g表示这一行中符合test的都要被替换成TEST,c表示替换之前要进行确认;在Visual模式下面选中内容,按:就会出现:<,>,按s/test/TEST就可以对选中的内容进行替换了;替换的时候可以用正则表达式,就是上面说的那些;比如下面这个例子:
Abcdefg 1234 hefdkz这个可以看成三部分,前一部分是字母,中间空格,然后数字,然后是空格和字母串,这里要实现的功能是将前面的字母和后面的字母部分进行替换,最前面的那个字母要大写;然后下面是表达式,假设这一行是第三行则为:3s;\(\l\)\(\S*\)\s*\(\d*\)\s*\(\l\)\(\S*\);\u\4\5 \3 \u\1\2;这个;
这里采用\(匹配内容\)这种方式可以在替换的时候后面调用,按顺序分别对应\1,\2,\3…;然后\u表示改变大小写,这里的\S匹配非空格,*表示0个和以上;针对具体个数的可以采用\{number\}的方式,比如说匹配四个空格为\s\{4\}这样。然后还有一些常用的比如说在选定行行首加入//来注释这些行,可以选定这些行,比如这样1,50s;^;//;就表示把行首用//替代了,也就相当于注释了,然后之前说的替换模式的s/和/flag以及中间的/可以用一些其他的字符来代替,有时候用/可能会出现vim无法确定意思的情况,这个时候可以用@,#,;,:等来替换。
来由一些来匹配行的,比如说匹配到nand的行删掉,可以用g/nand/d表示只要是文章中有nand的行都要被删掉。Vim的用法很多很多,之后还会在介绍一些其他的用法,这里不再赘述。附一张表。
评论