vim如何将特定行的单词首字母大写?
linux吧
全部回复
仅看楼主
level 12
nash13phoenix 楼主
网上答案多是
:%s/\w*/\u&/g
这个对全部行都生效
不过楼主想只要部分行生效,改成这样
:%s/^[[:alpha:]].*/\u&/g
结果只有匹配行的第一个单词的首字母会大写,
截图是楼主希望得到结果,那个to变成To也没关系
2013年07月03日 07点07分 1
level 7
为啥要首字母大写,C严格区分大小写
2013年07月03日 08点07分 2
[乖]纯文本,虽然很多字处理器有这个功能,还是想看看vim行不行啊
2013年07月03日 08点07分
level 13
记得vim下有一条语句就是替换大小写的,以前在书上看到过,长时间不用记不清了。
2013年07月03日 08点07分 3
level 6
把行首匹配改为单词边界匹配,去除贪婪匹配,大致如下:
:%s/\<[[:alpha:]]/\u&/g
2013年07月03日 08点07分 4
[真棒]谢谢大神,记得用过乃的贴吧脚本;不过li还是变成了Li,我再查找替换转一次小写好了
2013年07月03日 08点07分
level 11
这个还是比较简单的
:s/\v\w+/\u&/g
对于楼主的例子可以:
:g/^\w/s/\v\w+/\u&/g
2013年07月03日 08点07分 5
矮油,不错,这个屌。大神,能否告诉我用:help 什么可以看\v\w\u的含义,还有那个:g连接:s好高端。发现vim的转义很多不明白,比如换行符查找的时候是\n,替换就变成\r了,闹哪样
2013年07月03日 08点07分
回复 nash13phoenix :首先,我不是大神。然后,见 :h pattern :h :g
2013年07月03日 08点07分
回复 nash13phoenix :同理,:h \n :h \r [呵呵]
2013年07月03日 08点07分
回复 酒尽望天 :谢谢啦[乖]
2013年07月03日 08点07分
level 1
g/^[[:alpha:]]/ s/\w*/\u&/g
2013年07月03日 08点07分 6
和楼上大神所见略同,请问能否告诉我用:help 什么可以看\v\w\u的含义?谢谢
2013年07月03日 08点07分
回复 nash13phoenix :百度正则表达式,然后你会看到一个表格……
2013年07月03日 08点07分
回复 abcfy2 :嗯,谢谢。就是感觉vim有一些不一样的,上次想在部分字符后面加换行。\n无果,\r才行
2013年07月03日 08点07分
回复 nash13phoenix :其实还好了,习惯了就方便了,而且会vim等于自带sed技能,再懂点awk和bash,基本上写脚本就跟玩似的。
2013年07月03日 09点07分
level 9
这种问题:g才是王道。[冷]
:g/^\h/s//\u&/ 用g和s组合,省时省力
或者硬解,高端洋气[滑稽]上档次的解法:
:s/^./\=toupper(submatch(0))
解法无数啊[勉强]
2013年07月03日 10点07分 7
还有,lz知道为什么你一楼“正确”的方法会有错误么?因为你s命令用了g的flag。你只要去掉最后的g也是正确答案:%s/\w*/\u&/
2013年07月03日 10点07分
[花心]坚果兄看错题了,我就是要匹配指定的行,在这里就是没有那些标签的啦,然后匹配行每一个单词词首都大写,但是像a和to能不大写最好。然后我修改那条(:%s/^[[:alpha:]].*/\u&/g) 却只起到:%s/\w*/\u&/ 的效果,也就是没有g的作用
2013年07月03日 10点07分
回复 nash13phoenix :擦。我还以为只要行首。
2013年07月03日 10点07分
level 9
:v/^</s/\h\+/\u&/g
用v过滤一下
2013年07月03日 10点07分 8
好厉害,你们平时是不是都在ex模式混的[吐舌]
2013年07月03日 10点07分
level 12
你们都是哇外星人,从来文本或者IDE的飘过
2013年07月03日 16点07分 10
1