Auswählen des innersten Bereichs in C/C ++

Ich möchte den aktuellen Blockumfang markieren können. Mit anderen Worten, mit einem Code wie:

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

Wenn mein Cursor irgendwo im If-Body saß, würde es diesen Codebereich markieren. Ich denke, eine schnelle und schmutzige Lösung wäre, einen Skript-Scan für die vorherige geschweifte Klammer durchzuführen und alles zwischen ihm und seiner Übereinstimmung auszuwählen.

Wenn es dafür keinen Befehl gibt, würde jemand wissen, wie man ihn implementiert?

2

2 Antworten

Die Art, wie ich es tun würde ist: M-C-u M-C-SPC : die erste bewegt sich up-list und die zweite wählt die nächste sexp.

1
hinzugefügt

Funktioniert entweder M-x mark-defun oder c-mark-function ( C-M-h in meinem Setup), was Sie wollen?

Wenn nicht, ist expand-region eine weitere sehr gute Option ( Eine Videodemo kann hier gefunden werden. Wenn dieses Paket installiert ist (es ist über MELPA verfügbar), können Sie den Befehl er/expand-region verwenden, um die ausgewählte Region um semantische Einheiten zu erweitern. Es kann nicht den Bereich wählen, den Sie beim ersten Aufruf haben möchten, aber wiederholte Aufrufe werden Ihnen definitiv das bringen, was Sie wollen. Dieses Paket ist erstaunlich und wird intelligent mit vielen verschiedenen Modi arbeiten (d. H. Was als "semantische Einheit" angesehen wird, wird von Modus zu Modus unterschiedlich sein).

1
hinzugefügt