ตัดบรรทัดเป็นกลุ่มด้วยการเยื้อง


20

Vim / gvim จะตัดบรรทัดที่ยาวเช่นนี้:

000000000000000000000000000000000000|
00000000000000                      |
    11111111111111111111111111111111|
111111111111111111                  |
    22222222222222222222222222222222|
222222222222222222                  |
        3333333333333333333333333333|
3333333333333333333333              |

มีวิธีรับ Vim เพื่อตัดบรรทัดเหล่านี้เช่นนี้แทนหรือไม่:

000000000000000000000000000000000000|
 00000000000000                     |
    11111111111111111111111111111111|
     111111111111111111             |
    22222222222222222222222222222222|
     222222222222222222             |
        3333333333333333333333333333|
         3333333333333333333333     |

ฉันต้องการให้เส้นที่พันกันเริ่มต้นที่ผ่านมาเยื้องที่บรรทัดนั้นเริ่มต้น (เพื่อความชัดเจนฉันกำลังพูดถึงเรื่องการพันไม่ใช่ไวด์วิดท์)

ฉันต้องการให้มีการพิจารณาการเยื้องของบรรทัดในการตัดบรรทัดนั้นเพื่อให้โครงสร้างโค้ดไม่ถูกซ่อนโดยบรรทัดที่ถูกพัน

คำตอบ:


17

UPDATE:ฟังก์ชันนี้ที่ดินในกลุ่ม 7.4.338 แม้ว่าคุณจะต้องการ 7.4.354 หรือในภายหลัง


ดังนั้นเห็นได้ชัดว่านี้ต้องใช้แพทช์ที่จะเป็นกลุ่ม มีโปรแกรมแก้ไขโดย Vaclav Smilauerตั้งแต่ปีพ. ศ. 2550 ฉันได้ทำการปรับปรุงตัวแก้ไขเพื่อทำงานกับ Vim 7.2.148 จาก Fedora 11 แต่ดูเหมือนว่าจะทำงานได้ดี


1
เมื่อ Fedora เผยแพร่การอัพเดทเป็นกลุ่มฉันกำลังอัปเดตแพตช์ ดูretracile.net/wiki/VimBreakIndentเพื่อดูล่าสุด
retracile

คะแนนโบนัสสำหรับคนที่สามารถอธิบายวิธีการทำงานกับ MacVim
โดนัท

แพทช์อยู่ที่ไหน ไซต์นั้นไม่เชื่อมโยงกับสิ่งใดที่ฉันเห็น
อึก

@puk: ขออภัยการอัปเกรดซอฟต์แวร์ที่สำคัญมีการเปลี่ยนแปลงสถานที่เชื่อมโยงบางส่วน ฉันได้แก้ไขสิ่งเหล่านี้แล้ว
retracile

1
ณ วันนี้ (25 มิถุนายน 2014) แพทช์ breakindent เป็นส่วนหนึ่งของ Vim 7.4 อย่างเป็นทางการโดยมีการเพิ่มแพตช์ 338 และ 345
Heptite

14

ใน. vimrc ของคุณ:

set wrap               " soft-wrap lines

" requires +linebreak compile-time option (not in the 'tiny' and 'small' builds); check your :version
set showbreak=----->   " prefix for soft-wrapped lines (no actual line break character)
"set linebreak          " soft-wrap lines only at certain characters (see :help breakat)

" If you like line numbers, you may want this instead:
"set number
"set showbreak=------>\  " line up soft-wrap prefix with the line numbers
"set cpoptions+=n        " start soft-wrap lines (and any prefix) in the line-number area

หรือเพียงพิมพ์:set showbreak=----->ในเซสชันใดก็ได้

สำหรับการอ้างอิงงานวิจัยของฉัน (Vim 6.2): :help 'wrap'-> :help 'linebreak'-> ( :help 'showbreak'-> :help 'cpoptions', :help 'breakat')


เจ๋งมาก แต่ไม่ใช่สิ่งที่ฉันตั้งใจจริงๆ คุณเอามันไปมากกว่าที่ฉันตั้งใจจริงๆ ฉันจะดูว่าฉันสามารถชี้แจง
retracile

1

วิธีแก้ปัญหาสำหรับคำถามของคุณสามารถทำได้โดยการตั้งค่าพารามิเตอร์สองตัวในvimrc:

หากต้องการทำลายเส้นที่มีการเยื้องเดียวกัน: set breakindent

และอีกหนึ่งช่องว่างสำหรับการเยื้องบรรทัดที่มีการห่อหุ้มอ่อน: let &showbreak=' '

มันจะทำงานด้วยวิธีนี้:

111111111111111|
 11111111111111|
 11111         |
222222222222222|
 222222222222  |
333333333333333|
 33333         |

0

ไม่ใช่คำตอบที่สมบูรณ์แบบที่คุณกำลังมองหา แต่นี่คือสิ่งที่ฉันทำเพื่อหลีกเลี่ยงการเยื้องที่เหมาะสม

ก่อนอื่นดาวน์โหลดคู่มือการเยื้องของ Nathanael Kane (เป็นทางเลือก) เนื่องจากเป็นการบ่งบอกถึงระดับการเยื้องของคุณได้ดียิ่งขึ้นจนถึงจุดที่คุณสามารถตั้งค่าความกว้างของแท็บให้มีเพียง 2 ช่องว่าง!

ประการที่สองแมปชุดค่าผสมเพื่อสลับสลับคำ ฉันได้ตั้งค่าของฉันเป็น 'r' สำหรับ 'wrap' ('w' สำหรับการบันทึก) อย่างนั้น

:noremap <leader>r :set nowrap! <CR>

จากนั้นฉันก็มักจะตัดคำออกเพราะมันเป็นสุนทรียภาพมากกว่าและฉันก็เปิดมันอย่างรวดเร็วถ้าฉันต้องการแก้ไขบรรทัด


0

"วิธีแก้ปัญหา" เหม็นที่ฉันใช้อยู่ในปัจจุบันคือต้องมีการเยื้องที่คงที่ แต่ยิ่งใหญ่ในคำนำหน้า มันดูดีตราบใดที่การเยื้องคงที่นี้ใหญ่กว่าการเยื้องของบรรทัดที่พันไว้ซึ่งเป็นกรณีส่วนใหญ่

" 'showbreak'   : string to put before wrapped screen lines
set sbr=\ \ \ \ \ \ \ \ \ \ \ \ \ \|\ 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.