Làm thế nào tôi có thể thiết lập một thước đo tại một cột cụ thể?


50

Khi mã hóa bằng các ngôn ngữ khác nhau, tôi có xu hướng cần giới hạn các dòng của mình ở một độ dài cụ thể (thường là 79 hoặc 80 ký tự).

Tôi đã thấy điều này được thực hiện trong các trình soạn thảo khác thông qua việc sử dụng thước đo (đường liền nét hiển thị ở cột) hoặc bằng cách thay đổi màu của văn bản để chỉ ra rằng nó đã đi qua.

Làm cách nào tôi có thể chỉ ra Vim cho tôi khi tôi tiếp cận hoặc vượt qua 79 ký tự trong một dòng?

Câu trả lời:


64

Bạn có thể hiển thị thước đo ở một dòng cụ thể bằng cách sử dụng tùy chọn :set colorcolumn( :set ccviết tắt) chỉ có trong Vim 7.3 trở lên.

set colorcolumn=80

Điều này sẽ đặt màu nền của cột đó thành màu đỏ, cung cấp cho bạn một thước đo trực quan để làm việc.

Hình ảnh của bảng màu mặc định được đặt thành 80

Nếu bạn muốn sử dụng một màu khác ngoài màu đỏ (thực sự nổi bật), bạn có thể thay đổi màu bằng cách đặt highlightcho ColorColumn.

highlight ColorColumn ctermbg=0 guibg=lightgrey

Màu tùy chỉnh cho cột

Bạn có thể đặt màu cho các phiên bản đầu cuối của Vim bằng cách sử dụng ctermđối số và phiên bản GUI của Vim bằng guibgđối số. Các 0là giá trị của mã ASCII thoát cho màu đen, đó là màu xám khi sáng (mà nó là, theo mặc định). Giá trị lightgreyđược sử dụng cho các phiên bản GUI của Vim, như gVim, để thay đổi màu nền thành màu xám nhạt.


10
Bạn thậm chí có thể có nhiều màu sắc được phân tách bằng dấu phẩy!
200_success 4/2/2015

4
Kết hợp điều đó với phép nối & phạm vi và bạn có thể có một loạt các cột được tô màu với rất ít mã. .Vimrc của tôi có:execute "set colorcolumn=" . join(range(81,335), ',')
Thăm dò ý kiến ​​Cody

19

Là một phụ lục cho câu trả lời của Kevin, bạn có thể có nhiều màu sắc. Khi tôi viết mã, đôi khi tôi có giới hạn "mềm" ở 80 cột và giới hạn "cứng" ở 120 cột. Vì vậy, tôi muốn một dòng ở 80, và sau đó mỗi cột sau 120 được tô màu.

Tôi làm điều này với

let &colorcolumn="80,".join(range(120,999),",")

Tất nhiên, điều này có thể dễ dàng sửa đổi để ưu tiên khác.


14

Vim 7.3 mang đến colorcolumntùy chọn, như chi tiết rất tốt trong các câu trả lời khác.

Tuy nhiên, nếu bạn không có phiên bản 7.3 vì bất kỳ lý do gì, bạn vẫn có thể đạt được một dấu hiệu trực quan rằng bạn đang vượt quá số lượng cột cụ thể bằng matchchức năng của vim (xem :help matchđể biết chi tiết).

Về cơ bản, các lệnh khớp cho phép bạn tạo các điểm nổi bật liên tục cho văn bản khớp với một biểu thức chính quy định. :match ColorColumn "\%80v."sẽ đánh dấu văn bản trong cột 80 với nhóm "ColorColumn". Tất nhiên bạn có thể thay thế bất kỳ nhóm đánh dấu và bất kỳ giá trị cột nào. Nếu bạn muốn một dấu hiệu trực quan mạnh, biểu thức "\%>79v.\+"sẽ làm nổi bật cột 80 và hơn thế nữa.

( \%80vcó nghĩa là "khớp trong cột ảo 80" và \%>79vcó nghĩa là "khớp sau cột ảo 79; xem :help /\%cthêm.)

Cách tiếp cận này sẽ chỉ nổi bật khi có các ký tự thực tế có trong các cột được chỉ định, tuy nhiên, điều này làm cho nó ít nhất quán hơn colorcolumn.


4
Cá nhân tôi thấy cách tiếp cận ít nhất quán của matches tốt hơn, vì nó chỉ làm nổi bật những dòng mà tôi vượt quá giới hạn 80 cột, thay vì hiển thị một dòng lớn màu đỏ xâm nhập (bên phải tôi) ở bên phải màn hình. Do đó, trong vimrc của tôi cho Python tôi sử dụng call matchadd('ColorColumn', '\(\%80v\|\%100v\)')(80 và 100 là độ dài được đề xuất trong PEP 8)
jalanb
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.