Зробити активне вікно в vim більш очевидним


22

Моя робоча область зазвичай є одним дуже великим xterm з vim, розділеним на шість і більше буферів. Було б дуже корисно, якби було більш очевидним, який із активних буферів. Зараз я використовую для цього наявність рядків:

augroup BgHighlight
    autocmd!
    autocmd WinEnter * set number
    autocmd WinLeave * set nonumber
augroup END

але це означає, що коли я міняю буфери, мій код стрибає вліво або вправо, що дратує. Крім того, я хотів би мати можливість бачити рядок 94 навіть у неактивному буфері. То чи існує спосіб зміни кольорів номерів рядків в активному буфері?

Відповіді:


26

Дотримуючись шаблону, ви можете змінювати різні властивості, наприклад кольоровий стовпець:

augroup BgHighlight
    autocmd!
    autocmd WinEnter * set colorcolumn=80
    autocmd WinLeave * set colorcolumn=0
augroup END

Це забарвить стовпець 80 у вашому поточному вікні, а відключить його на інших. Це трохи менша кількість, ніж встановлення / змінення номерів рядків.

Ще менш нав'язливий варіант, якщо ви звикли виділяти поточну лінію (встановити куль), це зробити:

augroup BgHighlight
    autocmd!
    autocmd WinEnter * set cul
    autocmd WinLeave * set nocul
augroup END

Все зводиться до вашого використання та того, що ви готові миритися.


11

Колір рядка стану - це звичайний спосіб дізнатися, яке вікно активне. Це визначено у вашій кольоровій схемі за допомогою цих двох рядків:

hi StatusLine   ctermfg=15  guifg=#ffffff ctermbg=239 guibg=#4e4e4e cterm=bold gui=bold
hi StatusLineNC ctermfg=249 guifg=#b2b2b2 ctermbg=237 guibg=#3a3a3a cterm=none gui=none

Перше - для поточного вікна, друге - для "поточного" вікна.

Це уривок з xoria256 , ви повинні адаптувати кольори до вашої кольорової схеми.

Але ви можете спробувати щось подібне (будьте уважні, кольори у другому рядку абсолютно випадкові):

augroup NrHighlight
  autocmd!
  autocmd WinEnter * hi LineNr ctermfg=247 guifg=#9e9e9e ctermbg=233 guibg=#121212
  autocmd WinLeave * hi LineNr ctermfg=274 guifg=#e9e9e9 ctermbg=133 guibg=#212121
augroup END

Я вже намагався змінити підсвічування LineNr на WinEnter / WinLeave, але, здається, забарвлення LineNr є глобальною.
DrHyde

Так, і мені довелося чекати вашого коментаря, щоб пам'ятати про це. Отже, ні, якщо LineNr глобальний, очевидно, немає можливості змінити його у конкретному вікні. Ви не вважаєте, що статус достатній?
romainl

Мені було цікаво, чи може бути якась інша віконна версія LineNr. І ні, я не думаю, що статус статус недостатній. Це допомагає, але я хотів би більше. Одна з проблем використання рядка статусу полягає в тому, що наявність активного індикатора вікна в нижній частині вікна - це абсолютно протилежне тому, що ми маємо майже скрізь - інший рядок заголовка у верхній частині вікна, який змінює колір - тому є момент пауза, щоб подумати "о так, Вім робить це навпаки". Тоді як номери рядків завжди в кожному додатку в одному і тому ж місці.
DrHyde

Мені б дуже хотілося, якби ви могли змінити колір фону вікна, але це здається, що з вищезазначеного це неможливо.
Джонатан Хартлі

Використання hi StatusLine...і hi StatusLineNC...працює як шарм!
Люк М


2

Це те, що я роблю:

augroup BgHighlight
    autocmd!
    autocmd WinEnter * set relativenumber
    autocmd WinLeave * set norelativenumber
augroup END

Відносні числа - це лише допомога для обчислення кількості повторень команд, їх немає у вікні, яке ви не редагуєте.



1

Ви можете додати це до свого ~/.vimrc, що зробить смуги стану неактивних вікон темно-сірим фоном, щоб відрізнятись від білого рядка стану активного вікна.

highlight StatusLineNC cterm=bold ctermfg=white ctermbg=darkgray

Дивіться цей приклад скріншоту. Середнє вікно активне (біла смужка стану). Лівий і правий вікна неактивні (темно-сірий рядок стану).

введіть тут опис зображення

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