vim中大小写转换

有很多方法. 最简单的是:
:s/old/new/g, 但是,这仅对当前行起作用…, 所以,我们用
:%s/old/new/g, 更一般的,我们还可以用
:[范围]s/old/new/[cg],这里,[范围]是任意的行范围,包括行号,$(文件末尾),.(当前行)
%(当前文件),或者两个行号之间加个破折号(或者可以这样: .,+5,这表示下面5行).[cgi]是
c,g,i中间的一个或者什么也没有.c告诉vi每次替换的时候要给提示,g是说对所有一行中出?
的地方都做替换.i则是指在查找时不区分大小写.如果最后一个斜杠(/)后面没有东西的话,?
么vi只替换在行中第一次匹配的地方.
我比较喜欢这样做:
:g/foobar/s/bar/baz/g, 这个命令首先搜寻foobar,然后把它变成foobaz. 它没有改变
jailbars, 而其他的一些命令可能会改变jailbars. 这是我的方法,但是可能比较难记.
当然,你还可以在查找的的时候使用正规式,以及在替换文本的时候使用其他一些命令.如?
你在正规式里用\(和\)来剥离一个序列的话,你会发现你可以做很多好玩的事情.
例如:
:g/\(foo\)\(bar\)/s/\2/\1baz/g 将foobar替换成foobaz
还有一些特殊的序列:
& 所有查找时匹配到的东西
\[1-9] 1到9号用\(和\)括起来的东西
\u 下一个字符将被变成大写.
\U 以后的字符都变成大写,直到遇到\e或\E
\l 下一个字符将被变成小写.
\L 以后的字符都变成大写,直到遇到\e或\E
\[Ee] 更改大小写的选择区域的终点
大小写互换
:%s/[a-z]/\U&/g 全部改大写
:%s/[A-Z]/\l&/g 全部改小写
shell 的方式
for i in *
do
mv $i `echo $i | tr A-Z a-z`
done
命令tr “[:lower:]” “[:upper:]” < file1 > file2可以处理大小写转换
在vim中删TIME开头的行
:g/^TIME*/d

标签:
News, Others

相关日志

If you enjoyed this post, please consider to leave a comment or subscribe to the feed and get future articles delivered to your feed reader.

Leave Comment

(必填)

(必填)