使用VIM制作首字母缩略词?

PKu*_*mar 3 vim

我有一个有很多全名的文件,比如....

Light Machine Gun
Statistical Analysis System
etc
Run Code Online (Sandbox Code Playgroud)

我想捕捉一行中每个单词的第一个字符,并希望制作一个首字母缩略词.例如Light Machine Gun将是LMG等.我想在VI编辑器中将其记录为宏并将其运行在整个文件中.如果有人能帮助我那会很棒吗?提前致谢.

Tho*_*hor 5

假设每行一个名称并且单词是空格分隔的,则以下工作:

%s/\(\w\)\w*\ */\1/g
Run Code Online (Sandbox Code Playgroud)

如果您还想要将每个字母大写,请添加一个up-case标志(\u):

%s/\(\w\)\w* */\u\1/g
Run Code Online (Sandbox Code Playgroud)

"非常神奇"的版本(见:help /magic):

%s/\v(\w)\w*\s*/\u\1/g
Run Code Online (Sandbox Code Playgroud)

  • 你试过这个吗?它不起作用.但这样做:`%s/\(\ w \)\ w*\s*/\1/g`. (2认同)
  • @oyenamit:`+`量词也应该被转义(`\ +`),除非你使用"非常神奇"(参见`:help/magic`),在这种情况下它变为:`%s /\v (\ w)的\ W*\S + /\U\1/g`; 但是你不想在这里使用`+`,因为它不能匹配行尾,所以它应该是:`%s /\v(\ w)\ w*\s*/\u\1/g` . (2认同)