Более полезная строка состояния в vim? [закрыто]


150

Я хотел бы сделать свою строку состояния в vim более информативной и интересной, и для этого мне нужны некоторые идеи. Как вы настраивали свою статусную строку?


5
@paxdiablo: Иногда стоит потратить время на настройку инструмента в соответствии с вашими потребностями, чтобы вы могли лучше использовать его и, таким образом, сэкономить время во время работы.
DarkDust

10
Это должно быть сообщество вики, так как нет правильного ответа.
Рэнди Моррис

3
Речь идет не столько о мнениях, сколько об использовании опыта и знаний более образованных людей. Опрашивающий ищет информацию, которую он не может угадать, не прося людей конкурировать за лучшее. Ответы будут генерировать несколько вариантов, которых у него не было раньше. Тот факт, что вопрос имеет более одного ответа, не означает, что это не вопрос технической экспертизы. Этот вопрос хорошо подходит для формата SO и должен оставаться открытым.
NeilG

Ответы:


134

Редактировать:-

Обратите внимание, что vim-Airlines набирает обороты благодаря новой опции vimscript, так как Powerline стала питоном.


Кажется, что линия электропередачи находится там, где она находится в эти дни:

Нормальная строка состояния

линия электропередачи

Индивидуальные строки состояния для других плагинов (например, ctrlp )

линия электропередачи


3
@Gavin, как я могу перейти на ваши сегменты линии электропередач? Вы могли бы обновить некоторые сценарии модификации сегмента по умолчанию? ура
Джерри Гао

@ Гавин Я тоже был бы признателен, если бы вы поделились, как вы включили такие вещи, как ваша ветка в vim-powerline
Эрик Ху,

1
Ничего особенного не было сделано, из: github.com/Lokaltog/vim-powerline#trou устранение ошибок просто убедитесь, что у вас есть "let g: Powerline_symbols = 'fancy" "в вашем файле vimrc и установлены исправленные шрифты.
Гэвин Гилмор

это хороший плагин. Но моя производительность прокрутки при первом открытии файла очень и очень плохая из-за этого.
Ахмед Эон Аксан

2
@AhmedAeonAxan попробуйте авиакомпанию, она начинается быстро (чистый vimscript). И требует гораздо меньше усилий для настройки, особенно с Vundle или Pathogen. И как только вы установите шрифт Powerline, он более или менее похож на авиакомпанию. github.com/Lokaltog/powerline-fonts
заснеженный

60

Вот мой:

set statusline=
set statusline +=%1*\ %n\ %*            "buffer number
set statusline +=%5*%{&ff}%*            "file format
set statusline +=%3*%y%*                "file type
set statusline +=%4*\ %<%F%*            "full path
set statusline +=%2*%m%*                "modified flag
set statusline +=%1*%=%5l%*             "current line
set statusline +=%2*/%L%*               "total lines
set statusline +=%1*%4v\ %*             "virtual column number
set statusline +=%2*0x%04B\ %*          "character under cursor

Vim Statusline

И вот цвета, которые я использовал:

hi User1 guifg=#eea040 guibg=#222222
hi User2 guifg=#dd3333 guibg=#222222
hi User3 guifg=#ff66ff guibg=#222222
hi User4 guifg=#a0ee40 guibg=#222222
hi User5 guifg=#eeee40 guibg=#222222

1
На самом деле c - это число байтов, даже если его иногда называют счетчиком столбцов даже в справке vim. Вы можете использовать v, чтобы получить то, что обычно подразумевается под номером столбца.
Людвиг Вайнцерль

Спасибо @Ludwig, я этого не заметил. Я отредактирую ответ.
Tassos

8
Мне нравится ясность комментирования каждого добавленного значения в отдельной строке. Если бы я сделал это 7 лет назад, я бы не выбросил его, когда делал последнюю чистую установку ОС.
Бруно Броноски

Sweeet! Одна вещь, которую я пропустил, используя эту строку, это линия, которая разделяет разделенную сессию
Хулио Маринс

1
@trusktr Обратите внимание, что guifgи guibgдля gvim. Если вы работаете vimв терминале, попробуйте ctermfgи ctermbgвместо этого. Вам также понадобятся разные цвета, числа 1-16 или 1-256, в зависимости от того, сколько цветов вы включили в vim. Соответствующие цвета для каждого номера.
joelostblom

46

Это тот, который я использую:

set statusline=
set statusline+=%7*\[%n]                                  "buffernr
set statusline+=%1*\ %<%F\                                "File+path
set statusline+=%2*\ %y\                                  "FileType
set statusline+=%3*\ %{''.(&fenc!=''?&fenc:&enc).''}      "Encoding
set statusline+=%3*\ %{(&bomb?\",BOM\":\"\")}\            "Encoding2
set statusline+=%4*\ %{&ff}\                              "FileFormat (dos/unix..) 
set statusline+=%5*\ %{&spelllang}\%{HighlightSearch()}\  "Spellanguage & Highlight on?
set statusline+=%8*\ %=\ row:%l/%L\ (%03p%%)\             "Rownumber/total (%)
set statusline+=%9*\ col:%03c\                            "Colnr
set statusline+=%0*\ \ %m%r%w\ %P\ \                      "Modified? Readonly? Top/bot.

Выделить на? функция:

function! HighlightSearch()
  if &hls
    return 'H'
  else
    return ''
  endif
endfunction

Цвета (адаптировано из ligh2011.vim):

hi User1 guifg=#ffdad8  guibg=#880c0e
hi User2 guifg=#000000  guibg=#F4905C
hi User3 guifg=#292b00  guibg=#f4f597
hi User4 guifg=#112605  guibg=#aefe7B
hi User5 guifg=#051d00  guibg=#7dcc7d
hi User7 guifg=#ffffff  guibg=#880c0e gui=bold
hi User8 guifg=#ffffff  guibg=#5b7fbb
hi User9 guifg=#ffffff  guibg=#810085
hi User0 guifg=#ffffff  guibg=#094afe

Мой StatusLine


2
Хорошо, это избавляет от необходимости иметь модные плагины строки состояния, по крайней мере, для моего случая, глазной леденец :)
Nishant

1
Как заставить цвета работать?
trusktr

Я попытался поставить это после того, как любой colorschemeбыл установлен, но я просто вижу двухтональную строку состояния.
trusktr

@trusktr, не легко объяснить .... Вам нужно поместить первые 2 блока в ваш файл vimrc и блок colors в ваш текущий файл colorscheme. Вы можете найти ваш текущий файл colorscheme с помощью этой команды::colorscheme
Reman

1
Ваш основной поиск будет короче (без какой-либо функции), просто используя троичный оператор, как этот -> echo &hls ? 'H' : '' в моем случае:let &stl.="%6*%01(%{&hls?'H':''}%)%0* "
SergioAraujo

20

То , что я нашел полезным, чтобы знать , какие копировать / вставить буфер (регистр) в настоящее время активен: %{v:register}. В противном случае моя полная строка состояния выглядит почти так же, как стандартная строка.

:set statusline=%<%f\ %h%m%r\ %y%=%{v:register}\ %-14.(%l,%c%V%)\ %P

2
Боже, это v:registerвыглядит очень полезным!
nperson325681

Что значит для реестра быть активным? Мое (плохое) понимание регистров состоит в том, что они были в основном буфером обмена для хранения текста.
Роймунсон

15

В несколько раз меньше - больше, вам действительно нужно знать процентное содержание в файле, который вы используете при кодировании? Как насчет типа файла?

set statusline=%F%m%r%h%w\ 
set statusline+=%{fugitive#statusline()}\    
set statusline+=[%{strlen(&fenc)?&fenc:&enc}]
set statusline+=\ [line\ %l\/%L]          
set statusline+=%{rvm#statusline()}       

строка статуса

строка статуса

Я также предпочитаю минимальный цвет, чтобы не отвлекать от кода.

Взято из: https://github.com/krisleech/vimfiles

Примечание: rvm#statuslineспецифично для Ruby и для fugitive#statuslinegit.


1
+1 за статусную строку, связанную с git
Патрик


1

set statusline=%<%f%m\ \[%{&ff}:%{&fenc}:%Y]\ %{getcwd()}\ \ \[%{strftime('%Y/%b/%d\ %a\ %I:%M\ %p')}\]\ %=\ Line:%l\/%L\ Column:%c%V\ %P

Это моё, дай в качестве предложения

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.