vim dòng bọc với thụt lề


20

Vim / gvim sẽ gói những hàng dài như thế này:

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

Có cách nào để khiến Vim bọc những dòng như thế này không:

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

Tôi muốn đường bao bọc bắt đầu một chút qua vết lõm nơi đường bắt đầu. (Để rõ ràng, tôi đang nói về sự bao bọc, không phải băng thông.)

Tôi muốn thụt dòng của dòng được xem xét trong gói của dòng đó để cấu trúc mã không bị ẩn bởi các dòng được bọc.

Câu trả lời:


17

CẬP NHẬT: Chức năng này hạ cánh trong vim 7.4.338, mặc dù bạn sẽ muốn 7.4.354 trở lên .


Vì vậy, rõ ràng điều này đòi hỏi một bản vá cho Vim . Có một bản vá của Vaclav Smilauer từ hồi năm 2007. Tôi đã cập nhật bản vá để hoạt động với Vim 7.2.148 từ Fedora 11. Nhưng có vẻ như nó thực hiện được công việc.


1
Khi Fedora phát hành bản cập nhật cho Vim, tôi đang cập nhật bản vá. Xem retracile.net/wiki/VimBreakInent để biết thông tin mới nhất.
truy xuất

Điểm thưởng cho ai đó có thể giải thích làm thế nào để điều này hoạt động với MacVim.
bánh rán

Bản vá ở đâu? Trang web đó không liên kết đến bất kỳ trang nào tôi có thể thấy
puk

@puk: Xin lỗi, một bản nâng cấp phần mềm lớn đã thay đổi một số vị trí liên kết. Tôi đã sửa chúng rồi.
truy cứu

1
Kể từ hôm nay (25 tháng 6 năm 2014), bản vá đột phá chính thức là một phần của Vim 7.4 - nó được thêm vào bởi bản vá 338 và 345.
Heptite

14

Trong .vimrc của bạn:

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

Hoặc chỉ cần gõ :set showbreak=----->vào bất kỳ phiên nào.

Để tham khảo, con đường nghiên cứu của tôi (Vim 6.2): :help 'wrap'-> :help 'linebreak'-> ( :help 'showbreak'-> :help 'cpoptions', :help 'breakat')


Rất tuyệt, nhưng không thực sự như tôi muốn nói. Bạn đã hiểu nó hơn một chút theo nghĩa đen của tôi, vì vậy lỗi của tôi ở đó. Tôi sẽ xem nếu tôi có thể làm rõ.
truy xuất

1

Giải pháp cho câu hỏi của bạn có thể đạt được khi đặt hai tham số trong vimrc:

Để ngắt dòng với cùng một vết lõm: set breakindent

Và một không gian để thụt dòng bọc mềm: let &showbreak=' '

Nó sẽ hoạt động theo cách này:

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

0

Không phải là câu trả lời hoàn hảo mà bạn đang tìm kiếm, nhưng đây là những gì tôi làm để giải quyết vấn đề thiếu thụt lề thích hợp của vim.

Đầu tiên, tải xuống hướng dẫn thụt lề của Nathanael Kane (tùy chọn) vì nó cho biết mức độ thụt lề của bạn ở mức nào, thậm chí đến mức bạn có thể đặt băng thông chỉ là 2 khoảng trắng!

Thứ hai, ánh xạ một tổ hợp phím để chuyển đổi từ bọc. Tôi có cài đặt của tôi thành 'r' cho 'quấn' ('w' là để lưu) như vậy

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

Sau đó, tôi luôn luôn có từ tắt, vì nó có tính thẩm mỹ hơn, và tôi nhanh chóng bật nó lên nếu tôi cần chỉnh sửa dòng.


0

"Cách giải quyết" hôi mà tôi hiện đang sử dụng là có một vết lõm cố định nhưng lớn trong tiền tố. Nó có vẻ tốt, miễn là vết lõm cố định này lớn hơn vết lõm của đường bao bọc, đó là trường hợp hầu hết thời gian.

" 'showbreak'   : string to put before wrapped screen lines
set sbr=\ \ \ \ \ \ \ \ \ \ \ \ \ \|\ 
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.