ใน Sublime Text 2 คุณจะได้รับคำแนะนำในแนวตั้งที่มีการเยื้องของคุณเช่นนี้:
แต่ในกลุ่มฉันเห็นได้ชัดว่าไม่:
มีวิธีการแสดงบรรทัดเช่นนี้ในกลุ่ม? โดยวิธีการเยื้องของฉันคือ 2 ช่องว่าง
:set tabstop=2 softtabstop=2 shiftwidth=2 expandtab
ใน Sublime Text 2 คุณจะได้รับคำแนะนำในแนวตั้งที่มีการเยื้องของคุณเช่นนี้:
แต่ในกลุ่มฉันเห็นได้ชัดว่าไม่:
มีวิธีการแสดงบรรทัดเช่นนี้ในกลุ่ม? โดยวิธีการเยื้องของฉันคือ 2 ช่องว่าง
:set tabstop=2 softtabstop=2 shiftwidth=2 expandtab
คำตอบ:
คำตอบแบบรวม:
ฉันจะลองใช้ listchars:
:set listchars=tab:\|\
:set list
หมายเหตุ: มีช่องว่างหลังจาก\
ข้างบนครั้งสุดท้าย
วิธีนี้เป็นวิธีที่ดีเพราะใช้การสนับสนุนในตัวของ Vim ในการแสดงสิ่งนี้
ตัวอย่างผลลัพธ์:
| if (1) {
| | func();
| }
อย่างไรก็ตามวิธีนี้ใช้ไม่ได้กับช่องว่างนำหน้า ดังที่ @Josh Petrie ชี้ให้เห็นมีการปะแก้สำหรับช่องว่างแต่คุณจะต้องคอมไพล์ Vim ใหม่ซึ่งอยู่นอกเหนือขอบเขตของคำตอบนี้
Vaibhav Sagar ชี้ให้เห็นปลั๊กอินindentLineทำหน้าที่นี้ได้
ติดตั้งในวิธีปกติ (ดูการติดตั้งปลั๊กอิน ) และดูเหมือนว่าจะทำงานได้อย่างน่าอัศจรรย์โดยไม่ต้องป้อนข้อมูลเพิ่มเติม หากคุณไม่สนใจแถบ ASCII คุณไม่จำเป็นต้องทำอะไรกับแบบอักษรของคุณ ตัวอย่างผลลัพธ์จากตัวอย่างของคุณหลังจากตั้งค่าการเยื้องและเรียกใช้:IndentLinesReset
45 ¦ var move = function(direction) {
46 ¦ ¦ if(!initialized) { initialize(); }
47
48 ¦ ¦ if(shiftBoard(direction)) {
49 ¦ ¦ ¦ setTimeout(addRandomPiece, 100);
50 ¦ ¦ }
51 ¦ };
ปลั๊กอินต้องใช้ Vim 7.3 หรือใหม่กว่าและใช้คุณลักษณะปกปิดของเวอร์ชันนั้นอย่างชัดเจน แทนที่จะซ่อนข้อความจริงๆมันจะแทนที่ข้อความด้วยแถบในมุมมอง แต่ไม่ใช่บัฟเฟอร์จริง ผลลัพธ์คือคุณเห็นแถบ แต่จะไม่ได้รับการบันทึกลงในไฟล์ (เนื่องจากเป็นช่องว่าง)
วิธีการทั้งสองนี้ใช้รหัสที่เยื้องอย่างเหมาะสม พวกเขาไม่วางบรรทัดการเยื้องในระดับของการเยื้องเมื่อ "บล็อก" ถูกเปิด (ซึ่งประเสริฐที่ดูเหมือนจะทำ) แต่แทนที่จะวางเส้นตามช่วงเวลาปกติตามการตั้งค่าการเยื้องของคุณ นอกจากนี้มันจะแสดงเฉพาะแถบบนบรรทัดที่มีช่องว่างจริง ๆ (ซึ่งเป็นสาเหตุที่บรรทัดในเอาต์พุตกลุ่มภายใต้ชื่อแรกif
ไม่มีแถบทำให้เกิดช่องว่างที่มองเห็นได้)
ตัวเลือกอื่นที่ฉันใช้ซึ่งไม่ตรงกับที่คุณขอ แต่บรรลุวัตถุประสงค์เดียวกันทำให้ง่ายขึ้นที่จะเห็นสิ่งที่อยู่ในคอลัมน์เดียวกันคือการตั้งค่าต่อไปนี้ในของคุณvimrc
:
set cursorcolumn
set cursorline
นี่เป็นการแลกเปลี่ยนที่คุณต้องเลื่อนเคอร์เซอร์ไปยังคอลัมน์ที่คุณต้องการดู แต่คุณจะได้รับความยุ่งเหยิงทางสายตาน้อยลง โดยปกติเมื่อฉันสนใจเกี่ยวกับระดับการเยื้องฉันก็ยังคงใช้เคอร์เซอร์แทน วิธีการของฉันก็ไม่ได้ดูแปลก ๆ ในภาษาอย่างหลามโดยไม่ต้องปิดเครื่องหมายวงเล็บ
เพื่อความสมบูรณ์นอกจากนี้ยังมีปลั๊กอินการเยื้องซึ่งแสดงระดับการเยื้องโดยสลับสีของช่องว่างสีขาว ต้องการเวอร์ชัน 7.2 หรือใหม่กว่า เนื่องจากมันใช้ตัวแปรtabstop
และshiftwidth
มันอาจจะเหมาะกับการตั้งค่าการเยื้องของคุณทันที
เมื่อติดตั้งปลั๊กอินเสร็จคุณก็สามารถใช้หรือ:IndentGuidesEnable
:IndentGuidesDisable
หากคุณกำลังใช้ terminal vim โปรดทราบว่าตามคู่มือ
ในขณะนี้ Terminal Vim มีการสนับสนุนพื้นฐาน ซึ่งหมายความว่าสีจะไม่ถูกคำนวณโดยอัตโนมัติตามสีของคุณ แต่สีที่ตั้งไว้ล่วงหน้าบางส่วนจะใช้ขึ้นอยู่กับว่าพื้นหลังถูกตั้งค่าเป็นมืดหรือสว่าง
ในการเปลี่ยนสีของคำแนะนำสำหรับภาพหน้าจอฉันใช้วิธีต่อไปนี้
let g:indent_guides_auto_colors=0
ดังนั้นสีจะไม่ถูกคำนวณใหม่เมื่อมีการสลับบัฟเฟอร์แล้วตั้งค่าสีโดยใช้
hi IndentGuidesEven ctermbg=238
hi IndentGuidesOdd ctermbg=236
เช่นเดียวกับวิธีแก้ปัญหาอื่น ๆ ที่นำเสนอมันจะแสดงเฉพาะการเยื้องในบรรทัดที่มีช่องว่าง
let g:indent_guides_enable_on_vim_startup=1
. vimrc ของฉันเพื่อเปิดใช้งานสิ่งนี้เมื่อเริ่มต้น
ฉันพบปลั๊กอินindentLine แล้วจะดีที่สุดสำหรับสิ่งนี้ คุณต้องการแบบอักษรที่มีสัญลักษณ์ที่เหมาะสม แต่ฉันพบว่า Consolas บน Windows และ Menlo บน Mac OS X ทำงานได้ดี ดังที่มีการระบุไว้ในคำตอบแบบครบวงจรด้านบนมันทำงานโดย (ab) โดยใช้conceal
คุณสมบัติของกลุ่มเพื่อวางแท่งแนวตั้ง (จากแบบอักษรที่ใช้) ในตำแหน่งที่ถูกต้อง ฉันค่อนข้างมีความสุขกับวิธีแก้ปัญหานี้ แต่ข้อเสียของมันก็คือแถบแนวตั้งของฉันเป็นส่วนหนึ่งของ glyphs แบบวาดกล่องและพวกมันอยู่ตรงกลางแทนที่จะเรียงตัวชิดซ้ายเหมือนกับบรรณาธิการอื่น ๆ ฉันเคยชินกับมัน แต่มันสามารถแก้ไขได้ด้วยการแก้ไขแบบอักษรของคุณด้วยตนเองหรือใช้แบบอักษรเช่นFantasque Sans Mono (โปรดสังเกตว่าภาพหน้าจอในการเชื่อมโยง gitub repo ใช้ indentLine)
ปลั๊กอิน indentLine มีแนวโน้มที่จะค่อนข้างช้าในไฟล์ที่ไม่ใช่ไฟล์ขนาดเล็กสังเกตได้เมื่อคลิก Enter เนื่องจากมันล่าช้าเป็นวินาที
ฉันพบว่าvim-indentguidesนั้นเป็นปลั๊กอินที่เร็วขึ้นและคล้ายกันมากขึ้น