emacs - C / C ++ ข้ามไปที่จุดเริ่มต้นของบล็อกที่มี


10

ในขณะที่แก้ไขไฟล์ C หรือ C ++ ใน emacs ฉันอยากจะไปที่จุดเริ่มต้นของ มี บล็อกของรหัส ฉันคาดหวังว่าจะพบฟังก์ชั่น c-initial-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 มี fortran-beginning-of-block

โหมด promela มี promela-find-start-of-containing-block

คำตอบ:


12

ลอง backward-up-listถูกผูกไว้โดยค่าเริ่มต้นเป็น C-M-U .


1
และ C-M-n (ไปข้างหน้ารายการ) ข้ามไปยังจุดสิ้นสุดของบล็อก
Francois

เพื่อให้การกระโดดในบล็อกตั้งแต่ต้นจนจบนี่ไม่ได้แก้วัตถุประสงค์เพราะเมื่อฉันพยายามที่จะย้ายไปยังจุดสิ้นสุดของบล็อก C-M-n พาฉันไปที่จุดสิ้นสุดของ ) ของการเรียกใช้ฟังก์ชัน
dknight

1
มีคำสั่งที่เกี่ยวข้องสี่คำสั่ง: C-M-n (ถัดไป) และ C-M-p (ก่อนหน้า) ซึ่งพาคุณย้อนกลับและส่งต่อไปยังบล็อกวงเล็บทั้งหมดและ C-M-u (ขึ้น) และ C-M-d (ลง) ซึ่งนำคุณหนึ่งระดับขึ้นหรือลง (ดู เอกสาร ) ดังนั้นเพื่อไปยังจุดสิ้นสุดของบล็อกปัจจุบันคุณต้องมี C-M-u C-M-n
rbennett485
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.