emacs - C / C ++ melompat ke awal berisi blok

10

Saat mengedit file C atau C ++ di emacs, saya ingin dapat membuka bagian awal dari blok kode yang berisi . Saya mengharapkan untuk menemukan fungsi c-awal-blok, tapi sayangnya, tidak ada fungsi seperti itu (setahu saya). Misalnya, saya mungkin mengedit kode C jelek berikut:

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
    }
  }
}

Saya akan sangat terkejut jika ini belum menjadi bagian dari emacs, saya tidak dapat menemukannya di mana pun ...

Fortran-mode miliki fortran-beginning-of-block

mode promela miliki promela-find-start-of-containing-block

mgalg
sumber

Jawaban:

14

Coba backward-up-list, terikat secara default ke C-M-u.

scottfrazer
sumber
1
dan CMn (daftar depan) melompat ke ujung blok
Francois
Untuk terus melompat dalam blok dari awal hingga akhir, ini tidak menyelesaikan tujuan karena ketika saya mencoba untuk pindah ke ujung blok C-M-nmembawa saya ke akhir )panggilan fungsi.
dknight
1
Ada empat perintah terkait: CMn (berikutnya) dan CMp (sebelumnya), yang membawa Anda mundur dan maju di atas seluruh blok tanda kurung, dan CMu (atas) dan CMd (bawah) yang membawa Anda satu tingkat naik atau turun dengan bersarang tanda kurung. (lihat dokumen ) Jadi untuk menuju akhir blok saat ini, Anda memerlukan CMu CMn
rbennett485