emacs - C / C ++ przeskakuje na początek bloku zawierającego


10

Podczas edytowania plików C lub C ++ w emacsie chciałbym móc przejść do początku zawierającego blok kodu. Spodziewałem się znaleźć funkcję początku bloku c, ale niestety, taka funkcja nie istnieje (o ile mi wiadomo). Na przykład mógłbym edytować następujący brzydki kod 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
    }
  }
}

Byłbym bardzo zaskoczony, jeśli nie jest to już część emacsa, po prostu nie mogę go nigdzie znaleźć ...

tryb fortran ma fortran-beginning-of-block

tryb promela ma promela-find-start-of-containing-block

Odpowiedzi:


14

Spróbuj backward-up-list, domyślnie związany z C-M-u.


1
a CMn (lista do przodu) przeskakuje na koniec bloku
Francois,

Aby przeskakiwać w obrębie bloku od początku do końca, nie rozwiązuje to celu, ponieważ kiedy próbuję przejść do końca bloku, C-M-nzabiera mnie do końca )wywołania funkcji.
dknight

1
Istnieją cztery pokrewne polecenia: CMn (następny) i CMp (poprzedni), które prowadzą do tyłu i do przodu przez całe bloki nawiasów, oraz CMu (w górę) i CMd (w dół), które przenoszą cię o jeden poziom w górę lub w dół w zagnieżdżaniu nawiasów. (patrz dokumenty ) Aby przejść do końca bieżącego bloku, potrzebujesz CMu CMn
rbennett485
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.