1
0
Fork 0
vim-rc/vimrc
2021-12-16 20:50:12 +03:00

174 lines
4.7 KiB
VimL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

" === Пользовательские функции ===
"Функция получения текущего режима редактора
function GetMode()
let l:editor_mode = mode()
let l:editor_modes_list = [
\ "NORMAL",
\ "COMMAND",
\ "INSERT",
\ "VISUAL",
\ "VISUAL-LINE",
\ "VISUAL-BLOCK",
\ "REPLACE"
\ ]
if l:editor_mode == "n"
return l:editor_modes_list[0]
elseif l:editor_mode == "c"
return l:editor_modes_list[1]
elseif l:editor_mode == "i"
return l:editor_modes_list[2]
elseif l:editor_mode == "v"
return l:editor_modes_list[3]
elseif l:editor_mode == "V"
return l:editor_modes_list[4]
elseif l:editor_mode =="\<C-v>"
return l:editor_modes_list[5]
elseif l:editor_mode == "R"
return l:editor_modes_list[6]
else
echo l:editor_mode
return "?MODE"
endif
endfunction
function TabLine()
let s = ''
for i in range(tabpagenr('$'))
" Выбираем, какую вкладку подсвечивать
if i + 1 == tabpagenr()
let s .= '%#TabLineSel#'
else
let s .= '%#TabLine#'
endif
"Указываем номер вкладки
let s .= ' ' . (i + 1) . ':'
"Получаем подпись (имя файла) из TabLabel
let s .= ' %{TabLabel(' . (i + 1) . ')} '
endfor
" after the last tab fill with TabLineFill and reset tab page nr
let s .= '%#TabLineFill#%T'
return s
endfunction
function TabLabel(n)
let buflist = tabpagebuflist(a:n)
let winnr = tabpagewinnr(a:n)
return bufname(buflist[winnr - 1])
endfunction
function LessBehaviour()
if (!&modifiable || &ro)
set nonumber
set nospell
set laststatus=0
set cmdheight=1
endif
endfunction
" === Плагины ===
"Менеджер плагинов: Vim-Plug
"Подключение плагинов (для установки - :PlugInstal)
call plug#begin('~/.vim/plugged')
Plug 'airblade/vim-gitgutter'
call plug#end()
" === Настройки ===
"Включаем подсветку синтаксиса
syntax on
set nocompatible
set encoding=utf8
set showtabline=2
set tabline=%!TabLine()
"Включает колонку нумерации строк
set number
set numberwidth=4
set cursorline
"Не показывать режим (он отображается в кастомной строке статуса)
set noshowmode
"Настройки строки статуса
set laststatus=2
set statusline=
set statusline+=%#StatusLineEditorMode#\ %{GetMode()}\
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+=%#StatusLinePosition#\ %p%%\ %l:%c\
"Выключает перенос строк
set nowrap
"Автоподстановка табов
set smarttab
"Замена табов на пробелы
set expandtab
"Установка отступа на 4 символа
set tabstop=4
set shiftwidth=4
set softtabstop=4
"Автодополнение отступов
set autoindent
set smartindent
"Заставляем себя юзать только hjkl
"nnoremap <Left> :echoe "Use H pls"<CR>
"nnoremap <Right> :echoe "Use L pls"<CR>
"nnoremap <Up> :echoe "Use K pls"<CR>
"nnoremap <Down> :echoe "Use J pls"<CR>
"Не тянись до ESC
imap jk <ESC>
"Кеймапы для запуска Python скриптов
autocmd BufEnter *.py nmap <F5> :!python3 %<CR>
autocmd BufEnter *.py nmap <F9> :make<CR>
autocmd BufEnter *.py compiler pycodestyle
autocmd BufEnter *.py set colorcolumn=80
autocmd BufLeave *.py set colorcolumn=0
"Кеймапы запуска Bash скриптов
autocmd BufEnter *.sh nnoremap <F5> :!bash %<CR>
"Перенос сток для .md файлов
autocmd BufEnter *.md set wrap
autocmd BufEnter *.md set colorcolumn=80
autocmd BufLeave *.md set colorcolumn=0
"Кеймапы обновления темы vim
autocmd BufEnter *.vim nnoremap <F5> :source %<CR>
"Установка своей цветовой схемы
colorscheme custom_scheme_dark
"Довольно удобная реализация поддержки русских букв (говорят официальная)
set langmap=ФИСВУАПРШОЛДЬТЩЗЙКЫЕГМЦЧНЯ;ABCDEFGHIJKLMNOPQRSTUVWXYZ,фисвуапршолдьтщзйкыегмцчня;abcdefghijklmnopqrstuvwxyz
"Автоматическое включение LessBehaviour
augroup ReadOnly
au!
au VimEnter * :call LessBehaviour()
augroup END