0

我有一大堆变量名,我需要在迁移文件、视图、语言环境文件等之间移动。

我不想重新输入所有这些,也不想复制、粘贴和修剪,因为我做的太多了。

我一直在尝试通过正则表达式将它们拉出来,但每次我尝试这样做时,都会打印整行而不是只打印我想要的以 ':' 开头并以 '\s' 结尾的变量名,如下所示: :name, :email, :home_phone 等

我怎样才能让这些只是提取出我想要的东西?

我一直在尝试在 vim 中这样做:

      :%s/:.*\s/y

这是输入文件:

      <%= f.input  :name %>
      <%= f.input  :email %>
      <%= f.input  :home_phone %>
      <%= f.input  :cell_phone %>
      <%= f.input  :other_phones %>

      <%= f.input  :last_position_candidate_id %>
      <%= f.input  :last_position_title %>
      <%= f.input  :last_position_company_id %>
      <%= f.input  :last_position_start_date %>
      <%= f.input  :last_position_salary %>
      <%= f.input  :last_position_medical_insurance %>
      <%= f.input  :last_position_christmas_bonus %>
      <%= f.input  :last_position_annual_bonus %>
      <%= f.input  :last_position_vehicle %>
      <%= f.input  :last_position_other_benefits %>

      <%= f.input  :conversational_english %>
      <%= f.input  :written_english %>
      <%= f.input  :vehicle %>

这就是我想要得到的:

              :name 
      :email 
      :home_phone 
      :cell_phone 
      :other_phones 
      :last_position_candidate_id 
      :last_position_title 
      :last_position_company_id 
      :last_position_start_date 
      :last_position_salary 
      :last_position_medical_insurance 
      :last_position_christmas_bonus 
      :last_position_annual_bonus 
      :last_position_vehicle 
      :last_position_other_benefits 
      :conversational_english 
      :written_english 
      :vehicle
4

2 回答 2

3
%s/.*\(:\w\+\)\s.*/\1/

有关详细信息,请参阅http://vimregex.com/#backreferences

于 2012-09-14T19:44:36.347 回答
1

为了避免重新输入,可能就足够了

:set iskeyword+=:

在 Vim 中打开源文件,并在另一个缓冲区中使用内置的插入模式完成(例如:last_,后跟Ctrl+ )。N

于 2012-09-14T21:19:16.360 回答