2009-06-12 26 views
102

Tôi muốn sử dụng khả năng soft wrap của Vim (:set wrap) để bọc một số mã ở 80 ký tự, bất kể chiều rộng cửa sổ thực tế của tôi là bao nhiêu.Bọc mềm ở 80 ký tự trong Vim trong cửa sổ có chiều rộng tùy ý

tôi đã không thể tìm thấy một cách để thực hiện điều này - tất cả các gói phần mềm dường như gắn liền với chiều rộng của cửa sổ

  • textwidthwrapmargin đều cho gói cứng (họ chèn ký tự newline vào tệp)
  • chia tách dọc thành nhiều cửa sổ và sử dụng :vertical resize 80 (có thể với :set breakat= để cho phép ngắt trên bất kỳ ký tự nào) trên một trong số các loại tác phẩm đó (mặc dù nó hơi bị hack), nhưng bị hỏng khi sử dụng :set number làm dòng các con số chiếm một số cột thay đổi (tùy thuộc vào độ dài của tệp) và đây là một phần của số 80.

Có cách nào để thực hiện việc này không? It doesn't look promising, according to other sources.

Hiện tại, phép tính xấp xỉ của tôi chỉ là có /^.\{80}\zs.\+ làm tìm kiếm mặc định của tôi để ít nhất được đánh dấu. Tôi nghĩ về việc thêm một mục :syntax cho nó, nhưng điều đó đã phá vỡ khi nó chồng chéo các mục cú pháp khác, vì vậy tôi đã bỏ ý tưởng đó.

+0

Thực ra, bạn đã thiết lập tìm kiếm mặc định bằng cách nào? – thethinman

+2

Bạn đã tìm thấy câu trả lời nào chưa? Tôi có cùng một vấn đề. –

+1

bạn có tìm thấy câu trả lời không? dưới đây được chọn những gì đã làm việc? – Angela

Trả lời

32

Bạn có thể đặt chiều rộng tối thiểu lớn cho cột số dòng thông qua :set numberwidth=6 và sau đó bạn có thể :set columns=86 hoặc đổi kích thước cửa sổ của mình thành kích thước phù hợp. Nếu bạn chỉnh sửa một tệp với hàng triệu dòng trong đó, bạn có thể gặp sự cố, nhưng điều đó là không thể. Bạn đang lãng phí 6 cột của màn hình bất động sản theo cách này quá. Vì vậy, vẫn còn có tất cả các loại vấn đề.

Bạn có thể đánh dấu qua cột thứ 80 bằng cách sử dụng :match như nó nói herehere.

Ngoài ra, tôi không thể thấy bất kỳ cách nào để thực hiện việc này. Có vẻ như nó sẽ là một tính năng tốt đẹp mặc dù.

+0

Thật không may vim không giữ các cột thiết lập nếu cửa sổ được thay đổi kích cỡ. Điều này dẫn đến một tình huống không may với các nhà quản lý cửa sổ ốp lát, nơi không có cách nào tốt để bọc mềm đến 80 cột nếu cửa sổ quá rộng. – gravitation

+0

Tác phẩm này hoạt động nhưng không dính. Tôi đoán bước tiếp theo là thiết lập một autocmd để giữ cho các cột ở kích thước mong muốn mới cho các loại tệp mà bạn muốn. – xer0x

1

Bạn đã thử 'linebreak' chưa?

 *'linebreak'* *'lbr'* *'nolinebreak'* *'nolbr'* 
    'linebreak' 'lbr' boolean (default off) 
     local to window 
     {not in Vi} 
     {not available when compiled without the |+linebreak| 
     feature} 
If on Vim will wrap long lines at a character in 'breakat' rather 
than at the last character that fits on the screen. Unlike 
'wrapmargin' and 'textwidth', this does not insert <EOL>s in the file, 
it only affects the way the file is displayed, not its contents. The 
value of 'showbreak' is used to put in front of wrapped lines. 
This option is not used when the 'wrap' option is off or 'list' is on. 
Note that <Tab> characters after an <EOL> are mostly not displayed 
with the right amount of white space. 
+1

Hmm ... nhưng 'breakat' chỉ là một mẫu (không phải là chiều dài), vì vậy tôi không thấy làm thế nào tôi có thể sử dụng điều này để buộc bọc mềm ở 80 .... – rampion

+0

Hmmm, tôi tự hỏi nếu nó có thể làm cho một regex sẽ phù hợp với các từ có tổng chiều dài (cộng với khoảng trắng ở giữa) nhỏ hơn hoặc bằng n ký tự. –

+0

@ ShaneCreighton-Young: '^. {, 80} \ b' sẽ làm cho những người sử dụng tab mềm/mở rộng. Lưu ý đó là perl regex, chứ không phải regex. –

15

Tôi không có một giải pháp cho bọc mềm, nhưng như để đánh dấu một cột, tính đến Vim 7.3 (phát hành 2010/08/15) :set colorcolumn=80 sẽ làm nổi bật cột 80. Màu sắc sẽ phụ thuộc vào bạn tệp cú pháp.

Xem Vim 80 column layout concerns, :h colorcolumn.

+0

Báo giá không phải là URL hợp lệ để có ý nghĩa. Tên neo không được chứa các ký tự URL không hợp lệ, SO không được sửa lỗi của các nhà phát triển trang web khác. –

+1

Thuật sĩ bóng tối đề cập đến một phiên bản trước của câu trả lời của tôi, trong đó tôi tự hỏi về cách đặt dấu nháy đơn trong URL bằng cách sử dụng Markdown. Sau đó, [ib đề xuất] (http://stackoverflow.com/revisions/6322217/2) sử dụng% 27, hoạt động. Cảm ơn, ib. – ftvs

+0

Gần đây đã phát hiện ra cách chỉ đánh dấu các cột qua 80 ~ ': hãy để w: eighty_column_match = matchadd ('ColorColumn', '\% 81v. \ +', 100)' – rampion

10

Hãy thử điều này:

set columns=80 
autocmd VimResized * if (&columns > 80) | set columns=80 | endif 
set wrap 
set linebreak 
set showbreak=+++ 

Bạn có thể loại bỏ các if (&columns > 80) | nếu bạn luôn muốn 80 cột.

Các vấn đề liên quan