1
0
Fork 0
vim-rc/vimrc

175 lines
4.7 KiB
VimL
Raw Normal View History

" === Пользовательские функции ===
"Функция получения текущего режима редактора
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
2021-10-29 15:01:56 +03:00
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
2021-11-11 12:16:05 +03:00
set showtabline=2
set tabline=%!TabLine()
2020-10-05 09:41:03 +03:00
"Включает колонку нумерации строк
set number
set numberwidth=4
set cursorline
2020-10-05 09:41:03 +03:00
"Не показывать режим (он отображается в кастомной строке статуса)
set noshowmode
"Настройки строки статуса
2020-10-05 09:41:03 +03:00
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\
2020-10-05 09:41:03 +03:00
"Выключает перенос строк
set nowrap
"Автоподстановка табов
set smarttab
"Замена табов на пробелы
set expandtab
"Установка отступа на 4 символа
set tabstop=4
set shiftwidth=4
set softtabstop=4
"Автодополнение отступов
set autoindent
set smartindent
2021-10-25 20:36:16 +03:00
"Заставляем себя юзать только 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>
2021-10-25 20:36:16 +03:00
"Не тянись до ESC
imap jk <ESC>
2020-10-05 09:41:03 +03:00
"Кеймапы для запуска Python скриптов
2021-11-11 14:33:32 +03:00
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
2020-10-05 09:41:03 +03:00
"Кеймапы запуска Bash скриптов
2021-11-11 14:33:32 +03:00
autocmd BufEnter *.sh nnoremap <F5> :!bash %<CR>
2020-10-05 09:41:03 +03:00
2021-02-04 13:20:02 +03:00
"Перенос сток для .md файлов
2021-11-11 14:33:32 +03:00
autocmd BufEnter *.md set wrap
autocmd BufEnter *.md set colorcolumn=80
autocmd BufLeave *.md set colorcolumn=0
2021-02-04 13:20:02 +03:00
2020-10-05 09:41:03 +03:00
"Кеймапы обновления темы vim
2021-11-11 14:33:32 +03:00
autocmd BufEnter *.vim nnoremap <F5> :source %<CR>
2020-10-05 09:41:03 +03:00
"Установка своей цветовой схемы
2021-09-13 08:23:54 +03:00
colorscheme custom_scheme_dark
2021-09-23 15:25:38 +03:00
"Довольно удобная реализация поддержки русских букв (говорят официальная)
set langmap=ФИСВУАПРШОЛДЬТЩЗЙКЫЕГМЦЧНЯ;ABCDEFGHIJKLMNOPQRSTUVWXYZ,фисвуапршолдьтщзйкыегмцчня;abcdefghijklmnopqrstuvwxyz
"Автоматическое включение LessBehaviour
augroup ReadOnly
au!
au VimEnter * :call LessBehaviour()
augroup END