gVim的/ Vim的。如何删除所有空格,直到某个单词

时间:2013-04-11 12:25:21

标签: vim

我是.Net开发人员,但最近开始涉及Vim(或我的实例GVim),因为我需要进行重复的文本编辑器类型任务。

我的经验基本上不存在。所以请耐心等待。另外我意识到我可以在Visual Studio中使用GUI工具或东西,但我正在尝试使用Vim路径,因为我不时想要掌握一个新的util / app。

说我有一个包含很多属性的文本文件(可能是任何文本),如下所示:

    public string AccountNumber { get; set; }

    public string CustomerName { get; set; }

    public string ExpiryDate { get; set; }

    public string IdentityNumber { get; set; }

    public string OfferDate { get; set; }

我希望使用字符串替换方法删除属性名称之后的所有内容。

e.g。结束于:

 AccountNumber, 
 CustomerName, ... etc.

到目前为止,我已经取得了成功

  
      
  • 1)Alt +左​​键单击+拖动选择前面所有的空格&删除
  •   
  • 2):%s / public \ string \ //
  •   
  • 3):%s / \ {\ get; \ set; \} /,/
  •   

纯粹出于好奇,我想知道是否有可能更新我的第二步,包括删除空白区域。

我意识到^字符意味着行的开头而且(我认为)\ s意味着空白,但那是关于我的知识结束的地方。

我在想什么?

  

:%s​​ / ^ \ s + string //

3 个答案:

答案 0 :(得分:3)

解决此问题的一种方法是录制宏

qq          # start recording macro into register q
0w          # move to first non-whitespace caracter. Omit this if no WS at start of line
d2w         # delete 2 words
w           # move a word forward
D           # delete to en of line 
q           # quit macro recording

站在一行的开头,做@q 对于后续行,请使用.

重复宏

或者,尝试以下替换

:%s/^\s*public string\s*\([a-zA-Z]*\).*$/\1/ 

答案 1 :(得分:2)

我想出了这个,

%s/^\v\s*(\s*\w+){2}\s?(\w+).*/\2/g

确切地说,这一行不知道哪个词是你的“财产”。它只是将第3个单词留在那里,删除其他任何东西。

答案 2 :(得分:1)

在这种情况下,使用:normal可以替代:s或宏:

:%norm 03dwelD

您可能希望使用除整个文件%以外的其他范围。我建议用V直观地选择行,然后执行:norm 03dwelD。输入:后,您的提示会显示为:'<,'>。这是正确的。

如需更多帮助,请参阅:

:h :norm