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

Jawaban:


14

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


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.