在C/C ++中选择最里面的范围

我希望能够标记当前的块范围。换句话说,给出一些代码如:

...
if (1) {
  ...
}
...

如果我的游标位于if-body中的某个位置,则会标记该代码区域。我想一个快速而肮脏的解决方案就是只需要对前一个大括号进行脚本扫描,并选择它与其匹配之间的所有内容。

如果没有现成的命令,有人会知道如何实现它吗?

2

2 答案

我这样做的方式是: M-C-u M-C-SPC :第一个移动 up-list ,第二个选择下一个sexp。

1
额外

M-x mark-defunc-mark-function (我的设置中的 C-M-h )可以做你想要的吗?

如果没有, expand-region 是另一个非常好的选择(可以在此处找到视频演示。安装该软件包后(可通过MELPA获得),您可以使用命令 er/expand-region 按语义单元扩展所选区域。它可能不会在第一次调用时选择您想要的区域,但重复调用肯定会得到您想要的。该包是惊人的,并且将以许多不同的模式智能地工作(即,被认为是“语义单元”的将在模式与模式之间不同)。

1
额外