คำถามติดแท็ก indentation

การเยื้องใช้เพื่อจัดระเบียบโค้ดโดยระบุบล็อคการปิดเงื่อนไขและโครงสร้างอื่น ๆ ช่วยให้อ่านโค้ดได้ง่ายขึ้นและในบางภาษาจะใช้เพื่อจัดการโฟลว์การควบคุม

2
วิธีปิดการเยื้องบรรทัดใหม่โดยอัตโนมัติได้อย่างไร
ฉันเพิ่งอัพเกรด emacs เป็นรุ่น 24.4.1 และมีบางอย่างเปลี่ยนไปในการเยื้องบรรทัดใหม่ เมื่อฉันกดenterฉันคาดหวังว่าตัวละครขึ้นบรรทัดใหม่ "เปลือย" ณ จุดที่เคอร์เซอร์ปรากฏขึ้นโดยเฉพาะอย่างยิ่งถ้าฉันอยู่ตรงกลางบรรทัดนั้นควรแยกบรรทัดนั้นออกและไม่มีการลบอักขระใด ๆ รวมถึงช่องว่าง น่าเสียดายที่นี่ไม่ใช่กรณี นี่คือตัวอย่าง: a b เมื่อฉันวางเคอร์เซอร์หลังaและกดenterฉันจะได้รับ: a b ในขณะที่มันควรจะเป็น a b ฉัน googled เล็กน้อยและอาจเป็นเพราะการเยื้องอัตโนมัติฉันจะปิดการใช้งานนี้ได้อย่างไร ฉันกำลังพูดถึงข้อความหรือโหมดพื้นฐานหากเป็นเช่นนั้น

5
สไตล์การเยื้องที่แตกต่างกันสำหรับโครงการที่แตกต่างกัน
ฉันทำงานในโครงการ C ที่แตกต่างกันด้วยสไตล์การเยื้องที่ไม่ซ้ำใคร ฉันจะให้ Emacs ทำการตั้งค่าการเยื้องต่อโปรเจ็กต์ได้อย่างไรโดยไม่สร้างมลพิษให้กับแผนผังต้นน้ำโครงการด้วย.dir-locals.elไฟล์ ฉันต้องการจับคู่โครงการโดยใช้เส้นทางของพวกเขาบนดิสก์

5
วิธีการจัดรูปแบบรหัสสวย (แทรกขึ้นบรรทัดใหม่เยื้อง ฯลฯ โดยอัตโนมัติ?
ฉันใช้spacemacsแต่น่าจะเป็นความรู้ emacs ที่ต้องการที่นี่ ฉันมีไฟล์ JSON ที่มีบรรทัดยาวหนึ่งบรรทัดสมมุติว่า JSON นี้จาก json.org/example: {"menu": {"id": "file", "value": "File", "popup": {"menuitem": [{"value": "New", "onclick": "CreateNewDoc()"}, {"value": "Open", "onclick": "OpenDoc()"}, {"value": "Close", "onclick": "CloseDoc()"}]}}} ฉันอยากให้ emacs กลับมารวมตัวกันอีกครั้งซึ่งหมายความว่าฉันจะไม่เปลี่ยนตัวละครซ้ายสุดไปสู่ระดับการเยื้องที่เหมาะสม แต่แยกบรรทัดออกเป็นหลายบรรทัด ถ้าฉันใช้spacemacs/indent-region-or-buffer( SPC j =) แล้วข้อความจะไม่เปลี่ยนแปลงเลย ฉันจะขอให้ emacs แบ่งสายยาว ๆ นี้ได้อย่างไรและ reindent เพื่อให้ได้สิ่งนี้: {"menu": { "id": "file", "value": "File", …

2
มีเอกสาร SMIE ใดที่ชัดเจน?
ฉันใช้เวลาหลายชั่วโมงหลายชั่วโมงพยายามที่จะทำให้การเยื้องของ SMIE / ไวยากรณ์ / สิ่งต่าง ๆ ทำงานได้ มีตัวอย่างของโหมด SMIE ขนาดเล็กของเล่นหรือโครงกระดูกที่มีเอกสารประกอบเกี่ยวกับวิธีการใช้งานจริงหรือการอภิปรายใด ๆ เกี่ยวกับวิธีการใช้งานหรือไม่? สิ่งที่พูดกำหนดนิพจน์เป็นสตริงของโทเค็นที่ลงท้ายด้วยเซมิโคลอนและบล็อกเป็นนิพจน์บางอย่างระหว่างวงเล็บและไม่มีอะไรอื่น ง่ายจริงๆเหรอ? คำถามเฉพาะเมื่อใช้ smie-config-show-indent 90% ของเวลาที่ฉันได้รับการตอบสนอง ': list-intro "" -> ไม่มี' list-intro อ้างอิงตามคำจำกัดความของนิพจน์หรือรายการของนิพจน์อะไร ทำไมมันบอกว่าไม่มีและยังคงเยื้องบรรทัดต่อไปนี้? ฉันจะเปลี่ยนได้อย่างไร ประการที่สอง: มีความสัมพันธ์ใด ๆ ระหว่างไวยากรณ์และกฎระเบียบ smie ของฉันหรือไม่ ฉันคิดว่ามีเพราะทั้งคู่ผ่านเข้าไปใน smie-setup แต่ฉันไม่สามารถหาวิธีพูดว่า "เมื่อคุณเห็น 'บล็อก' เยื้องเนื้อหา 'ตัวอย่างเช่นอิงตามไวยากรณ์ที่ระบุบล็อก . ประการที่สาม SMIE ดูเหมือนจะมีกฎมากมาย "อบใน" เพียงแค่เตะมันออกไปจะช่วยให้สามารถจัดการกับวงเล็บ, วงเล็บปีกกาและวงเล็บโดยทั่วไป มีวิธีใดบ้างที่จะเห็นกฎเหล่านี้หรือแก้ไขมัน? หรือว่าตารางไวยากรณ์กำลังทำสิ่งนี้ทั้งหมดและ …
18 indentation  smie 

4
โค้ด elisp เยื้องอัตโนมัติอีกครั้งเมื่อเพิ่มหรือลบโค้ดก่อนบล็อกที่เยื้อง
ว่าฉันมีรหัส elisp เช่น: (+ 2 3▮(+ 3 4)) มีวิธีที่จะเยื้อง sexp หลังเคอร์เซอร์อีกครั้งโดยอัตโนมัติเมื่อฉันเพิ่มหรือลบสัญลักษณ์? ดังนั้นหลังจากกดSPC 4 SPCฉันจะได้รับโดยอัตโนมัติ: (+ 2 3 4 ▮(+ 3 4)) ฉันจะทำคู่มือฉบับนี้โดยการโทรตามมาด้วยmark-sexp indent-regionมีวิธีที่ดีกว่าในการทำเช่นนี้?

2
ปิดใช้งานการเยื้องอัตโนมัติทั้งหมดโดยสมบูรณ์
ฉันจะปิดการใช้งานการเยื้องอัตโนมัติทั้งหมดใน Emacs ได้อย่างไร ฉันต้องปิดการใช้งานอย่างน้อยสำหรับโหมด Fundamental แต่ฉันก็สบายดีเพราะมันถูกปิดการใช้งานทั่วโลกสำหรับเซสชันปัจจุบัน โปรดอ่านคำถามที่เหลือก่อนที่จะประกาศซ้ำ คำตอบอื่น ๆ ทั้งหมดที่ฉันพบมีไว้สำหรับการปิดการเยื้องเป้าหมาย ฉันต้องการปิดการใช้งานการเยื้องอัตโนมัติสำหรับเซสชันทั้งหมดอย่างสมบูรณ์ การตั้งค่าelectric-layout-modeเป็นnilไม่ทำงาน รายละเอียด บางครั้งฉันต้องการเขียน Git ขนาดใหญ่ส่งข้อความด้วยโปรแกรมแก้ไขข้อความ Windows ASCII ของฉัน ข้อความเหล่านี้มักจะมีรายการหัวข้อย่อยบล็อกโค้ดหรือสิ่งอื่น ๆ ที่การจัดรูปแบบที่แม่นยำในเอกสารต้นฉบับของฉันมีความหมาย codebase ของฉันอยู่บน Linux และฉันเชื่อมต่อกับกล่องโดยใช้ไคลเอ็นต์ SSH แบบข้อความเท่านั้น เมื่อ Git เข้าสู่ Emacs เพื่อแก้ไขข้อความคอมมิทฉันต้องการที่จะคัดลอกข้อความคอมมิทซอร์สไปยังคลิปบอร์ดของ Windows จากนั้นวางโดยใช้คำสั่ง Windows paste จากมุมมองของ Emacs ฉันกำลังพิมพ์สิ่งที่พบในไฟล์ข้อความ Windows น่าเสียดายที่เมื่อ Emacs เห็นเส้นที่เยื้องมันเพิ่มการเยื้องอัตโนมัติของตัวเองดังนั้นฉันจึงได้พื้นที่สามเหลี่ยมขนาดใหญ่นี้ตามขอบด้านซ้ายของบัฟเฟอร์ ฉันใช้ GNU Emacs 24.3.1 วิธีแก้ปัญหา วิธีแก้ปัญหาปัจจุบันของฉันคือการถ่ายโอนไฟล์ข้อความ …

1
จะเยื้องรายการในสภาพแวดล้อม Laize DeaX / AUCTeX ได้อย่างไร
ถาม:ฉันจะได้รับการเยื้อง "เหมาะสม" ของitemizeสภาพแวดล้อมLaTeX ได้auctexอย่างไร นี่คือสิ่งที่ฉันต้องการจะอยู่itemในitemizeสภาพแวดล้อม: \item บรรทัดถูกเยื้องสองช่องว่างสัมพันธ์กับจุดเริ่มต้นของสภาพแวดล้อม บรรทัดที่มีความต่อเนื่องในรายการจะเพิ่มช่องว่างอีกสองช่องที่สัมพันธ์กับ\itemบรรทัด นี่คือสิ่งที่ฉันต้องการ / คาดหวังที่จะเห็น: \begin{itemize} \item Here's a really long item in a LaTeX itemize environment; note how the *initial* item line is indented two spaces, and the continuation lines are indented another two spaces. \end{itemize} หนึ่งสามารถปรับเยื้องเริ่มต้นของรายการที่มีตัวแปรที่เริ่มต้นที่LaTeX-item-indent -2ด้วยค่าเริ่มต้นนี้ฉันจะได้รับพฤติกรรมที่ไม่พึงประสงค์ของการ\itemไม่เยื้อง แต่ฉันจะได้รับพฤติกรรมที่ต้องการของเส้นต่อเนื่องที่ถูกชดเชยด้วยช่องว่างสองช่องเพิ่มเติม: \begin{itemize} \item Here's a …

3
นำทางด้วยการเยื้อง
ฉันต้องการนำทางระหว่างบรรทัดของไฟล์ตามการเยื้อง ไฟล์ถูกจัดโครงสร้างโดยการเยื้อง: บรรทัดที่เยื้องกว่าบรรทัดก่อนหน้าคือชายด์ของบรรทัดก่อนหน้าบรรทัดที่มีการเยื้องเดียวกันกับบรรทัดก่อนหน้าคือพี่น้อง ฉันกำลังมองหาสามคำสั่งเป็นส่วนใหญ่: ย้ายไปยังพี่น้องถัดไปเช่นบรรทัดถัดไปที่มีการเยื้องเดียวกันข้ามบรรทัดที่เยื้องมากกว่า แต่ไม่ข้ามบรรทัดที่เยื้องน้อยลง ย้ายไปยังพี่น้องก่อนหน้านั่นคือสิ่งเดียวกันในทิศทางอื่น ย้ายไปที่พาเรนต์เช่นไปยังบรรทัดก่อนหน้าโดยมีการย่อหน้าที่น้อยกว่า ตำแหน่งคอลัมน์ของจุดไม่ควรเปลี่ยนแปลง เหล่านี้เป็น analogs ข้อมูลเยื้องโครงสร้างการforward-sexp, backward-sexpและbackward-up-listข้อมูล sexp โครงสร้าง การเยื้องสอดคล้องกับโครงสร้างของโปรแกรมในภาษาเช่น Haskell และ Python ฟังก์ชั่นเหล่านี้มีประโยชน์อย่างยิ่งในบริบทนี้ แต่ฉันไม่ได้มองหาโหมดเฉพาะใด ๆ (กรณีการใช้งานหลักของฉันคือข้อมูลที่มีโครงสร้างความตั้งใจภายในรูปแบบไฟล์อื่น) ระดับการเยื้องสีสามารถช่วยนำทางด้วยตนเองด้วยUp/ Downแต่ฉันต้องการบางสิ่งบางอย่างโดยอัตโนมัติ คำถามผู้ใช้ระดับสูงนี้คล้ายกัน แต่มีข้อกำหนดน้อยกว่าและไม่มีคำตอบที่ตรงกับความต้องการของฉัน

1
เยื้องที่ถูกต้องสำหรับสายที่ถูกห่อ
ฉันมีข้อความที่ถูกห่อต่อไปนี้โดยเฉพาะอย่างยิ่งเมื่อคุณใช้ windows หลายบาน: ฉันสงสัยว่าการเยื้องของข้อความที่ห่อสามารถเปลี่ยนแปลงได้ใน Vim: ) เมื่อทำการค้นหาดูเหมือนว่าAutoFillModeจะทำหน้าที่นี้ ฉันหวังว่าสิ่งนี้อาจได้รับการปรับปรุงใน Emacs 25 หลังจากอัปเกรดเป็นไบนารีที่รวบรวมของ Emacs 25 ฉันเห็นพฤติกรรมเดียวกัน ดังนั้นฉันสงสัยว่าฉันจะแก้ปัญหานี้ในอีกทางหนึ่งได้ไหม?

1
ดูรหัสด้วยการเยื้องที่แตกต่างจากที่บันทึกไว้ในดิสก์
ฉันทำงานในบางโครงการที่มีสไตล์การเยื้องที่ฉันพบว่าน่ารำคาญจริงๆ ฉันต้องการดูโค้ดที่มีรูปแบบการเยื้อง แต่มักจะบันทึกลงดิสก์ด้วยสไตล์การเยื้องที่กำหนดไว้เสมอ โดยเฉพาะฉันชอบ emacs สไตล์เริ่มต้นของการเยื้องในข้อโต้แย้งฟังก์ชั่นหลายบรรทัด ... void foo(int a, int b, string c) แต่โครงการเป็นแบบแท็บเท่านั้นเยื้องเดียวกับทุกสิ่ง ... void foo(int a, int b, string c) ฉันสามารถดูกรณีแรก แต่แชร์สิ่งที่สองได้ไหม

2
การเยื้องและการนำทางที่ดีขึ้นในซอร์สโค้ดแอสเซมบลี
เมื่อฉันเขียนโค้ด C หรือ Java มันเป็นเรื่องปกติมาก แต่ด้วยแอสเซมบลี ( asm-mode) มันไม่เป็นระเบียบ ฉันใช้และauto-complete yasnippetฉันสร้างสนิปเพตและใช้มัน แต่การจัดระเบียบโค้ดและการเยื้องไม่เป็นระเบียบ แพคเกจใดจะช่วยฉัน: เยื้องรหัสและความคิดเห็นอย่างถูกต้องได้อย่างง่ายดายเพื่อให้ฉันสามารถดูว่าแต่ละชิ้นของรหัสกำลังทำอะไรอยู่ สำรวจรหัสจำนวนมากดังนั้นฉันสามารถข้ามไปมาระหว่างชิ้นส่วนของรหัสได้อย่างง่ายดายหรือไม่

4
วิธีกำหนดเยื้องโหมดองค์กร
คำถามนี้เกิดขึ้นจริงเพราะฉันชอบที่จะใช้แบบอักษรที่ไม่ใช่แบบโมโนโพสต์, (Sabon, Minion, Garamond ฯลฯ ) ทำให้เกิดปัญหาเมื่อใช้โหมด org-indent เนื่องจากข้อความใต้หัวข้อไม่ตรงกับหัวเรื่อง ตัวอย่าง: แบบอักษรคือจอร์เจีย ตอนนี้ถ้าฉันเปลี่ยนเป็น consolas: ฉันคิดว่าปัญหาคือว่าในฟอนต์ที่ไม่ใช่แบบโมโนโพสต์ "ช่องว่าง" และ * ไม่ใช้พื้นที่เดียวกัน แม้ว่าฉันจะไม่รู้วิธีแก้ปัญหานี้ ฉันค้นหาทางอินเทอร์เน็ตและไม่พบบทช่วยสอนเพื่อปรับการเยื้องของตัวเอง ฉันพยายามอ่าน org-indent.el แต่มันก็นานสำหรับฉันที่จะเข้าใจ ความช่วยเหลือได้รับการชื่นชมอย่างมาก!

1
การเยื้องอัตโนมัติ \ if คำสั่งที่มี AUCTeX
AUCTeXพฤติกรรมปัจจุบันของtexรหัสดั้งเดิมที่เกี่ยวข้องกับคำสั่งif -like คือการเยื้องคำสั่งเงื่อนไขที่ระดับเดียวกันกับสภาพแวดล้อม เช่นรหัสเช่น \if@sometoggle% \dosomething% \else% \doanotherthing% \fi% ปรากฏเป็นบล็อกข้อความขนาดใหญ่ ฉันต้องการทำAUCTeXตัวอย่างโค้ดดังต่อไปนี้: \if@sometoggle% \dosomething% \else% \doanotherthing% \fi% เป็นไปได้ไหม

1
หลามอัตโนมัติเยื้องปัญหา
ฉันใช้ Emacs 24.4 เมื่อเขียนโค้ดไพ ธ อน Emacs จะทำงานผิดปกติด้วยความเยื้อง ตัวอย่างเช่น: for i in range(10): print(i) for i in range(10) เมื่อฉันป้อนข้อมูล:Emacs จะเพิ่มการเยื้องที่ไม่จำเป็นที่จุดเริ่มต้นของบรรทัดที่สาม นี่มันแปลกมากนี่เป็นข้อผิดพลาดหรือไม่?

1
ระบายสีระดับการเยื้อง
พิจารณาภาพรวมสองภาพต่อไปนี้: ภาพด้านล่างแรกมาจาก Emacs ในโหมด Python (ด้วย Jedi & Elpy) ภาพที่สองด้านล่างนี้มาจากการถ่ายภาพด้วยตนเองก่อนหน้านี้เพื่อให้ง่ายต่อการแยกความแตกต่างระหว่างระดับการเยื้องจำนวนมาก มีแพ็คเกจใดบ้างที่สามารถช่วยให้เกิดผลภายหลัง ในตัวอย่างข้างต้นฉันใช้สองสี (เพียงพอที่จะแยกระดับการเยื้องจากเพื่อนบ้านของพวกเขา) แต่โทนสีอื่น ๆ ที่ใช้สีอื่น ๆ อาจทำให้การนำทางง่ายขึ้น โปรดทราบว่าใน Emacs อักขระการย่อหน้าจะถูกกำหนดโดย: # Insert multiple spaces for indentation: (setq indent-tabs-mode nil) # Insert TAB for indentation: (setq indent-tabs-mode nil)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.