Показано інший колір фону в Vim за останні 80 символів


134

Я бачив проблеми з компонуванням стовпців Vim 80 , але відповідь там висвітлює лише фактичний вміст, який перевищує позначку 80 символів. Я хочу, щоб вікно Vim із стовпчиком 100+ було відкритим із крайніми крайніми стовпцями 80, використовуючи звичайний фон і все, що минуло, ніж трохи інше. Фон вікна Vim повинен бути іншого кольору, а не лише текст, який перевищує точку 80 символів. Це вказувало б на те, наскільки я близький до точки 80 знаків, не спершу переходячи її.

Я не думаю, що наразі це можливо, але я подумав, що прошу про всяк випадок.

Може, це можна зробити за допомогою плагіна?

Приклад TextMate бажаного підкреслення правого поля Vim

Вибравши "Виділити правий запас" у загальних налаштуваннях TextMate, ви можете побачити приклад бажаної поведінки Vim.

Приклад виділеного правого поля TextMate


Відповіді:


223

Якщо у вас Vim> = v7.3, ви можете просто додати це до свого, .vimrcщоб виділити 81 і далі (тому 80 - ваш останній дійсний стовпець):

let &colorcolumn=join(range(81,999),",")

Якщо ви не бачите виділення, можливо, вам не встановлено ColorColumnколір виділення. Додайте це (підкоригуйте відповідно до ваших уподобань):

highlight ColorColumn ctermbg=235 guibg=#2c2d27

Зараз я люблю виділяти колонку 80, а також 120 і далі, тому у мене є окремі маркери "попередження" та "небезпеки". Ви можете зробити це таким чином:

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

Приклад

Ось скріншот GVim редагування мого .vimrc.

GVim редагування мого .vimrc

Я використовую шрифт Ubuntu Mono 11 та кольорову схему molokai . Ви можете знайти мій конфігурацію vim та всі мої dotfiles на GitHub.


3
Колонна колонка обмежена 256 визначеннями, за :help colorcolumn... до того ж, моє налаштування, здається, укорочене на деякій довжині при використанні вашої техніки приєднання, хоча я не можу оцінити пошук через джерело vim, щоб зрозуміти, яка ця довжина. Крім того, vim аналізує значення цього параметра у вигляді рядка щоразу, коли він заходить у вікно, ініціалізує буфер тощо, тому це на зразок дорогий спосіб досягнення бажаного результату.
cptstubing06

15
Ваші dotfiles ГОРЯЧІ.
obfk

1
Дякую за повідомлення про це, саме те, що я шукав! Ще одне запитання, чи є спосіб не встановити ці правила для певного типу файлів (.md)?
Девід Діас

1
@DavidDias Звичайно! Ви можете зробити щось на кшталт, autocmd FileType markdown let &colorcolumn=""щоб зняти це повністю.
Джастін Форс

1
оновлено посилання на vim config
reergymerej

78

Виділіть 81 стовпець

:set textwidth=80
:set colorcolumn=+1

Ви також можете зробити кілька стилів:

:hi ColorColumn guibg=#2d2d2d ctermbg=246

2
Це, і також можливо, щоб він виділяв до 256 стовпців, але, на жаль, потрібен список стовпців, щоб виділити, і для цього немає стенограми, тож вам доведеться зробити щось на зразок :set colorcolumn=+1,+2,+3,+4,+5,+6etcetera, можливо, аж до +256широкої кількості ти думаєш, що тобі потрібен правильний запас. Це, однак, виділить лише рядки, які існують у буфері, а не всі рядки у вікні.
mkomitee

1
@Dyslexic Tangent: Чому замість цього не виділити перші 80 стовпців?
бріс

1
Я не думав про це. Встановіть ваш фон кольором, який ви хочете використовувати для виділення> 80 стовпців, а також встановіть колонку кольорів для всіх стовпців від 1-80, а групу виділення кольорового стовпця встановіть тим кольором, яким ви хочете стати звичайним фоном.
mkomitee

2
Одне запитання, хоча я можу правильно встановити колір, набравши :hi colorcolumn ...його, здається, не працює, коли я вставлю його у свій .vimrc. Ви знаєте, як це зробити?
robbrit

Я бачу ту саму проблему, що і robbrit - Якщо я запускаю команду виділення у колишньому режимі, вона виглядає добре, але якщо я маю її у своєму файлі vimrc, вона знищує мою
кольорову схему

16

Рішення, запропоноване в коментарі вище. Спершу виділіть фон, а потім виділіть чорний колір ColorColumn як накладку. Встановіть кольорову колонку на лінії 1-80.

hi Normal guibg=#32322f ctermbg=236
hi NonText guibg=#32322f ctermbg=236
hi ColorColumn guibg=#000000 ctermbg=0
let &colorcolumn=join(range(1,80),",")

1
Це просто, але геніально. Дякую!
авіаудар

8

спробуйте:

:/\%>80v./+

він позначить +80 символів як помилку


Так розумно на дрібку. Мені це подобається, тому що він адаптується до змін теми. Дякую.
Бенджамін

0

Я не думаю, що можна мати те, що ти хочеш, але я стежу за цим питанням, оскільки мене саме таке цікавить.

Можливо, я констатую очевидне, але ви можете встановити високу висоту в стовпцях 70-х +, щоб отримати вказівку на те, як близько ви підходите до 80-ї колонки.


0

Для тих, хто використовує onedark.vim, як я, який хоче рішення, розміщене Conner, я додав ці рядки до мого файлу vimrc

let &colorcolumn=join(range(1,80),",")
let g:onedark_color_overrides = {
  \ "black": {"gui": "#2C323C", "cterm": "236", "cterm16": "8"},
  \ "cursor_grey": {"gui": "#282C34", "cterm": "235", "cterm16": "0"}
  \ }

Я просто поміняв два значення, взяв його з вихідного коду onedark

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.