0

我正在尝试对文件执行 vimgrep,以便从 xml 文件中仅获取两个属性及其值。到目前为止,我可以获得完整的线条,我希望在小组的帮助下获得更好的展示。

:vimgrep 键= % | 哥本

^ 我想在这个命令中添加“()”的分组可能性......但目前没有成功。

感谢您的帮助,以便获得“预期结果”中解释的结果

我正在使用的文件的一部分:

 
<policy name="Menu_Controls" class="User" displayName="$(string.Menu_Controls)" explainText="$(string.IE_ExplainMenu_Controls)" presentation="$(presentation.Menu_Controls)" key="Software\Policies\Microsoft\Windows\CurrentVersion\Internet Settings\AllowedControls">
      <parentCategory ref="AdminApproved" />
      <supportedOn ref="SUPPORTED_IE5" />
      <elements>
        <boolean id="MCSiMenu" valueName="{275E2FE0-7486-11D0-89D6-00A0C90C9B67}">
          <trueValue>
            <decimal value="0" />
          </trueValue>
          <falseValue>
            <decimal value="1" />
          </falseValue>
        </boolean>
        <boolean id="PopupMenu_Object" valueName="{7823A620-9DD9-11CF-A662-00AA00C066D2}">
          <trueValue>
            <decimal value="0" />
          </trueValue>
          <falseValue>
            <decimal value="1" />
          </falseValue>
        </boolean>
        <boolean id="Ikonic_Control" valueName="{F5131C24-E56D-11CF-B78A-444553540000}">
          <trueValue>
            <decimal value="0" />
          </trueValue>
          <falseValue>
            <decimal value="1" />
          </falseValue>
        </boolean>
      </elements>
    </policy>
    <policy name="Microsoft_Agent" class="User" displayName="$(string.Microsoft_Agent)" explainText="$(string.IE_Explain_Microsoft_Agent)" presentation="$(presentation.Microsoft_Agent)" key="Software\Policies\Microsoft\Windows\CurrentVersion\Internet Settings\AllowedControls">
      <parentCategory ref="AdminApproved" />
      <supportedOn ref="SUPPORTED_IE5" />
      <elements>
        <boolean id="Microsoft_Agent_Control" valueName="{D45FD31B-5C6E-11D1-9EC1-00C04FD7081F}">
          <trueValue>
            <decimal value="0" />
          </trueValue>
          <falseValue>
            <decimal value="1" />
          </falseValue>
        </boolean>
      </elements>
    </policy>

我的预期结果:

 name="Menu_Controls"  key="Software\Policies\Microsoft\Windows\CurrentVersion\Internet Settings\AllowedControls"
 name="Microsoft_Agent" key="Software\Policies\Microsoft\Windows\CurrentVersion\Internet Settings\AllowedControls"

在此先感谢您的帮助。东芝

4

3 回答 3

0

我的ExtractMatches 插件提供了一个:YankMatches命令,您可以使用该命令提取匹配项并将它们放入暂存缓冲区。作为一个单行:

:execute 'YankMatches \<\%(name\|key\)="[^"]*"' | new | put!

结果:

name="Menu_Controls"
key="Software\Policies\Microsoft\Windows\CurrentVersion\Internet Settings\AllowedControls"
name="Microsoft_Agent"
key="Software\Policies\Microsoft\Windows\CurrentVersion\Internet Settings\AllowedControls"
于 2015-01-13T14:46:47.697 回答
0

两个 cmds 可以做到:

v/<policy /d

然后

%s/.* \(name="[^"]*"\).*\(key="[^"]*"\).*/\1 \2/g
于 2015-01-13T14:55:15.407 回答
0

如果您发现:vimgrepquickfix 列表真的很有帮助,您可以使用editqf.vim 插件使您的 grep 结果的 quickfix 列表可编辑,然后使用例如@Kent:%s的答案中给出的命令的变体来去除无关的东西。

于 2015-01-13T15:04:01.597 回答