如何删除vim中所有大括号{}之间的文本

时间:2016-09-05 20:07:44

标签: vim

我想删除文件中每个大括号{}之间的所有文本(包括大括号本身)。我知道命令%d在光标下的大括号之间删除了文本,但是我想自动为所有文档制作它。

实施例: 我有类似的东西:

using UnityEngine;
using System.Collections;

public class ssj : MonoBehaviour {

 IEnumerator ShowMessageCoroutine(string message, float timeToShow = 10)
 {
     // Show the text
     text.text = message;

     // Wait for 10 seconds
     float timeShown = 0f;
     while (timeShown < timeToShow)
     {
         timeShown += Time.deltaTime;
         yield return null;
     }

     // Hide the text
     text.text = "";
 }
}  

我希望有类似的东西:

public int getMinimum() {
    return min;
}
public void setMinimum(int min) {
    this.min= min;
}

3 个答案:

答案 0 :(得分:3)

您可以使用global命令执行此操作:

:g/{/normal f{da{

这样做:对于包含{的所有行,移至该行的第一个* {并从中删除所有内容,包括匹配的}

如果您想在最后添加; - 我怀疑这是您想要的下一件事 - 您可以在该命令的末尾添加A;。< / p>

请注意,如果您的文件中包含{}的注释或字符串,则可能会中断。

*如果该行的第一个字符是{,并且它包含另一个 {,则实际上会转移到第二个{。在这种情况下不太可能发生,但值得记住。我认为在这种情况下你可以做f{F{,虽然我认为应该以某种方式跳转到第n个角色或某事,但我不知道那个命令会是什么。

答案 1 :(得分:1)

将光标放在{},然后v%d

答案 2 :(得分:0)

如何使用着名的vim dot命令?

/{
d%

现在根据您的需要多次使用n.。 还想自动化吗?录制宏:

qqn.q
99@q

如此完整的序列将是:/{<cr>d%qqn.q99@q 为什么这样?因为它很直观,而且它完全是vim的方式,你可以适应任何情况。