Làm cách nào để thiết lập điểm đánh dấu độ dài dòng trong vim / gvim?


75

Một số trình soạn thảo văn bản GUI có một đường thẳng đứng đóng vai trò là điểm đánh dấu độ dài dòng (nó giúp giữ các dòng ngắn hơn 80 ký tự trong các tệp mã nguồn).

Có thể có một cái gì đó tương tự trong vim / gvim? Tôi biết về tùy chọn thước kẻ vim, nhưng nó không thuận tiện để theo dõi trực quan trên màn hình lớn.

Chỉnh sửa: khi tìm kiếm "colorcolumn" để tìm hiểu thêm, tôi đã thấy rằng câu hỏi này là một bản sao của https://stackoverflow.com/questions/235439/vim-80-column-layout-concerns


trùng lặp trên một trang web khác ... stackoverflow.com/questions/235439/ từ
Trevor Boyd Smith

Câu trả lời:


131

Chỉ cần thực hiện điều này

:set colorcolumn=72

Bạn cũng có thể thêm tiền tố vào -hoặc +để đặt điểm đánh dấu có nhiều cột ở bên trái hoặc bên phải textwidthvà nó chấp nhận danh sách các cột được phân tách bằng dấu phẩy. Tôi nghĩ rằng colorcolumntùy chọn chỉ có trong Vim 7.3. Xem

:help colorcolumn

8
Wow, vim không bao giờ hết làm tôi ngạc nhiên!
Peter Nore

4
Đẹp! Cũng hữu ích khi columns=80, wrapđược đặt và colorcolumn=81,161,241,321,401,481,561,641,721,801- hiển thị tối đa 10 dòng được bọc với cột đầu tiên được tô sáng.
Amir

20

Từ bài nói chuyện "Vim tốt hơn ngay lập tức" của Damian Conway tại OSCON 2013:

highlight ColorColumn ctermbg=magenta
call matchadd('ColorColumn', '\%81v', 100)

Điều này dẫn đến ký tự được tô sáng bằng màu đỏ tươi (ảnh chụp màn hình DarkCyan) khi dòng vượt quá mức tối đa 80 ký tự.

vim với bật sáng

Đối với gVim: tốt nhất là di chuyển 2 dòng đó đến phần cuối cùng của .vimrctệp để đảm bảo nó hoạt động.


Huh! Tôi vừa trả lời câu hỏi rất giống của bạn về ... thế giới nhỏ bé này! superuser.com/questions/771558/
Mạnh

Tôi đặt câu trả lời này vào, sau đó nhớ rằng tôi không thể làm điều đó trong gVim, vì vậy tôi đã hỏi. ;)
Isxek

Wow, điều này thực sự tuyệt vời! Đây là loại tính năng tôi thậm chí không biết để tìm kiếm. Tôi đang sử dụng mẫu '\$81v\S'chỉ khớp với các ký tự không phải khoảng trắng. Điều này có nghĩa là phần tô sáng sẽ không hiển thị khi dòng dài chính xác 80 ký tự (đây là điều thực sự làm tôi bận tâm). Xem phần này để biết thêm thông tin stackoverflow.com/questions/12985042/ trên
fvss

1
Muốn thực hiện một vài điều chỉnh cho nhận xét trước đây của tôi. Đáng $lẽ phải là a %. Tương tự, bây giờ tôi sử dụng mẫu \%81v.vì điều này đảm bảo cột thứ 81 sẽ được tô sáng cho bất kỳ ký tự nào trong cột thứ 81, đây có thể là những gì bạn muốn.
fvss

2

Bạn có thể thử điều này:

grep '.\{81\}' file

hoặc là

set colorcolumn=80

(hoặc tương đương tốc ký)

set cc=80

hoặc như đã nói ở trên:

match ErrorMsg '\%>80v.\+'

0

Dưới đây là một mẹo vụng về từ Hacking Vim: A Cookbook để tận dụng tối đa Trình chỉnh sửa Vim mới nhất của Kim Schultz.

Nó nổi bật với ErrorMsg(thường là màu đỏ tươi) bất kỳ dòng nào có trên 80 ký tự. Hoạt động tốt cho tôi.

function! RemoveWidthLimitWarnigns()
    silent! call matchdelete(4)
endfunction
function! InsertWidthLimitWarnings()
    call RemoveWidthLimitWarnigns()
    call matchadd("ErrorMsg", "\\%>79v.\\+", 10, 4)
endfunction

Tôi phải làm gì với đoạn trích này? Chỉ cần dán nó vào .vimrc?
vtest

Cố gắng đầu tiên bằng cách chỉ gọi là :call matchadd("ErrorMsg", "\\%>79v.\\+", 10, 4)đủ. Nhưng tôi sẽ không đề xuất điều này nữa vì @ÿjohn biết điều gì đó tốt hơn
unperson325680
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.