emacs - переход на C / C ++ к началу содержащего блока


10

При редактировании файлов C или C ++ в emacs я хотел бы иметь возможность перейти к началу содержащего его блока кода. Я ожидал найти функцию c-begin-of-block, но, увы, такой функции не существует (насколько мне известно). Например, я мог бы редактировать следующий уродливый код C:

void myFunction()
{
  if (something) { //<--- I want to jump to this brace!
    // do lots of stuff
    if (stuff) {
      // stuff
    }
    // more stuff
    // ...

    // I want to put my cursor somewhere on this line <---
    // (anywhere just outside the following if) and call c-beginning-of-block
    // and jump to the brace marked above (skipping "sibling" statements)
    if (pizza_is_good) {
      // do something
      // wait, where am I?
    }
    // way more stuff
    // ...
    if (i_love_pizza) {
      // eat pizza
    }
  }
}

Я был бы очень удивлен, если бы это не было частью emacs, я просто не могу найти его нигде ...

Фортран-режим имеет fortran-beginning-of-block

Промела-режим имеет promela-find-start-of-containing-block

Ответы:


13

Попробуйте backward-up-list, привязанный по умолчанию к C-M-u.


1
и CMn (forward-list) переходят к концу блока
Франсуа

Продолжать переходить в пределах блока от начала до конца, это не решает цель, потому что когда я пытаюсь перейти к концу блока, C-M-nя перехожу к концу )вызова функции.
dknight

1
Существует четыре связанных команды: CMn (следующая) и CMp (предыдущая), которые переносят вас назад и вперед по целым блокам скобок, и CMu (вверх) и CMd (вниз), которые поднимают вас на один уровень вверх или вниз во вложенных скобках. (см. документацию ) Итак, чтобы перейти к концу текущего блока, вам нужен CMu CMn
rbennett485
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.