我有一个包含很多全名的文件,如....
Light Machine Gun
Statistical Analysis System
etc
我想捕捉一行中每个单词的第一个字符,并希望制作一个首字母缩略词。例如Light Machine Gun将是LMG等。我想在VI编辑器中将其记录为宏并将其运行在整个文件中。如果有人能帮助我那会很棒吗?提前谢谢。
答案 0 :(得分:5)
假设每行一个名称并且单词是空格分隔的,则以下工作:
%s/\(\w\)\w*\ */\1/g
如果您还要将每个字母大写,请添加一个大小写标记(\u
):
%s/\(\w\)\w* */\u\1/g
“非常神奇”的版本(见:help /magic
):
%s/\v(\w)\w*\s*/\u\1/g
答案 1 :(得分:3)
Vim可以定义首字母缩略词,称为缩写,说你想要
Light Machine Gun Statistical Analysis System -> LMGSAS
输入:
:ab LMGSAS Light Machine Gun Statistical Analysis System
每当你输入LMGSAS时,它都会替换它。
使用:ab
列出所有缩写,una xxxxx
以取消缩写。最后abc
清除了所有内容。
编辑:我误解了你的问题,如果你试图去,话语 - >缩写,然后Thor建议的正则表达式s/\(\w\)\w*\s*/\1/g
工作正常。