emacs - перехід C / C ++ до початку блоку, що містить


10

Під час редагування файлів C або C ++ в emacs, я хотів би мати можливість перейти до початку блоку коду, що містить . Я сподівався знайти функцію c-початок блоку, але, на жаль, такої функції немає (наскільки мені відомо). Наприклад, я можу редагувати такий потворний код 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-режим є fortran-beginning-of-block

promela-режим має promela-find-start-of-containing-block

Відповіді:


14

Спробуйте backward-up-list, за замовчуванням прив’язаний до C-M-u.


1
і CMn (форвард) перестрибує до кінця блоку
Франсуа

Щоб продовжувати стрибки всередині блоку від початку до кінця, це не вирішує мети, оскільки коли я намагаюся перейти до кінця блоку, це призводить C-M-nдо завершення )виклику функції.
ночі

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