From af07768694b3c7a9b55f62f8618e54a16a4e5111 Mon Sep 17 00:00:00 2001 From: John Solncev Date: Thu, 1 Apr 2021 01:17:13 +0300 Subject: [PATCH] Status line update. Status line: - Show git branch on status line; - Rename and change colors for status line. --- colors/my_first_scheme.vim | 46 ++++++++++++++++------------- vimrc | 60 ++++++++++++++++++++++++-------------- 2 files changed, 64 insertions(+), 42 deletions(-) diff --git a/colors/my_first_scheme.vim b/colors/my_first_scheme.vim index a6493dd..9e28012 100644 --- a/colors/my_first_scheme.vim +++ b/colors/my_first_scheme.vim @@ -10,29 +10,35 @@ let color_name="my_first_vim_theme" "=== Цвета псевдоинтерфейса === "Цвета линейки строк (та, что слева номера строк показыват) -hi LineNr ctermfg=250 ctermbg=234 cterm=NONE -hi CursorLineNr ctermfg=250 ctermbg=236 cterm=bold -hi CursorLine cterm=underline -hi ModeMsg ctermfg=0 ctermbg=14 cterm=NONE -hi NonText ctermfg=215 -hi Visual ctermbg=241 +hi LineNr ctermfg=250 ctermbg=234 cterm=NONE +hi CursorLineNr ctermfg=250 ctermbg=236 cterm=bold +hi CursorLine cterm=underline +hi ModeMsg ctermfg=0 ctermbg=14 cterm=NONE +hi NonText ctermfg=215 +hi Visual ctermbg=241 "Цвета, используемые в статусной строке -hi StatusLineGrey ctermfg=0 ctermbg=251 -hi StatusLineWhite ctermfg=0 ctermbg=15 -hi StatusLineCyan ctermfg=0 ctermbg=14 -hi StatusLineClear cterm=NONE +hi StatusLineEditorMode ctermfg=15 ctermbg=57 cterm=bold +hi StatusLineGitBranch ctermfg=15 ctermbg=63 cterm=bold +hi StatusLineFilePath ctermfg=0 ctermbg=15 +hi StatusLineFileFormat ctermfg=0 ctermbg=251 +hi StatusLineEmpty ctermbg=239 +hi StatusLineReadOnlyFlag ctermfg=0 ctermbg=239 +hi StatusLineEncoding ctermfg=0 ctermbg=251 +hi StatusLineFileType ctermfg=0 ctermbg=15 +hi StatusLinePosition ctermfg=15 ctermbg=57 +hi StatusLinePercentPos ctermfg=15 ctermbg=63 "Vim-Gitgutter цвета -hi SignColumn ctermbg=NONE -hi GitGutterAdd ctermfg=2 cterm=bold -hi GitGutterChange ctermfg=3 cterm=bold -hi GitGutterDelete ctermfg=1 cterm=bold +hi SignColumn ctermbg=NONE +hi GitGutterAdd ctermfg=2 cterm=bold +hi GitGutterChange ctermfg=3 cterm=bold +hi GitGutterDelete ctermfg=1 cterm=bold "=== Подсвтека синтаксиса === -hi Comment ctermfg=248 -hi Constant ctermfg=105 -hi Identifier ctermfg=111 -hi Statement ctermfg=204 cterm=bold -hi PreProc ctermfg=41 -hi Type ctermfg=79 +hi Comment ctermfg=248 +hi Constant ctermfg=105 +hi Identifier ctermfg=111 +hi Statement ctermfg=204 cterm=bold +hi PreProc ctermfg=41 +hi Type ctermfg=79 diff --git a/vimrc b/vimrc index 0b12535..5a403da 100644 --- a/vimrc +++ b/vimrc @@ -1,8 +1,8 @@ "Функция получения текущего режима редактора function GetMode() - let s:editor_mode = mode() + let l:editor_mode = mode() - let s:editor_modes_list = [ + let l:editor_modes_list = [ \ "NORMAL", \ "INSERT", \ "VISUAL", @@ -11,27 +11,38 @@ function GetMode() \ "REPLACE" \ ] - if s:editor_mode == "n" - return s:editor_modes_list[0] + if l:editor_mode == "n" + return l:editor_modes_list[0] - elseif s:editor_mode == "i" - return s:editor_modes_list[1] + elseif l:editor_mode == "i" + return l:editor_modes_list[1] - elseif s:editor_mode == "v" - return s:editor_modes_list[2] - elseif s:editor_mode == "V" - return s:editor_modes_list[3] - elseif s:editor_mode =="\" - return s:editor_modes_list[4] + elseif l:editor_mode == "v" + return l:editor_modes_list[2] + elseif l:editor_mode == "V" + return l:editor_modes_list[3] + elseif l:editor_mode =="\" + return l:editor_modes_list[4] - elseif s:editor_mode == "R" - return s:editor_modes_list[5] + elseif l:editor_mode == "R" + return l:editor_modes_list[5] else return "?MODE" endif endfunction +"Git branch +function GetGitBranchName() + return system('git rev-parse --abbrev-ref HEAD 2>/dev/null | tr -d "\n"') +endfunction + +function StatuslineGetGitBranch() + let l:branch = GetGitBranchName() + + return strlen(l:branch) > 0 ? l:branch : '' +endfunction + "Менеджер плагинов: Vim-Plug "Подключение плагинов (для установки - :PlugInstal) call plug#begin('~/.vim/plugged') @@ -60,13 +71,18 @@ set noshowmode set laststatus=2 set statusline= -set statusline+=%#StatusLineCyan#\ %{GetMode()}\ -set statusline+=%#StatusLineWhite#\ %f\ -set statusline+=%#StatusLineGrey#\ %{&ff}\ -set statusline+=%#StatusLineClear#%= -set statusline+=%r\ %y\ -set statusline+=%#StatusLineWhite#\ %l:%c\ -set statusline+=%#StatusLineCyan#\ %p%%\ +set statusline+=%#StatusLineEditorMode#\ %{GetMode()}\ +if strlen(GetGitBranchName()) > 0 + set statusline+=%#StatusLineGitBranch#\ %{StatuslineGetGitBranch()}\ +endif +set statusline+=%#StatusLineFileName#\ %f\ +set statusline+=%#StatusLineFileFormat#\ %{&ff}\ +set statusline+=%#StatusLineEmpty#%= +set statusline+=%#StatusLineReadOnlyFlag#\ %r\ +set statusline+=%#StatusLineEncoding#\ %{&fileencoding?&fileencoding:&encoding}\ +set statusline+=%#StatusLineFileType#\ %{&ft}\ +set statusline+=%#StatusLinePercentPos#\ %p%%\ +set statusline+=%#StatusLinePosition#\ %l:%c\ "Выключает перенос строк set nowrap @@ -99,7 +115,7 @@ autocmd BufRead *.sh nnoremap :!bash % autocmd BufRead *.md set wrap "Кеймапы обновления темы vim -autocmd BufRead *.vim nnoremap :colorscheme my_first_scheme +autocmd BufRead *.vim nnoremap :source % "Установка своей цветовой схемы colorscheme my_first_scheme