dotfiles/.vimrc
2026-02-26 15:20:31 +00:00

104 lines
2.7 KiB
VimL

" Включить подсветку синтаксиса
syntax on
" Включить подсветку результатов поиска
set incsearch
set hlsearch
" Включить номера строк
set number
set cursorline
" Использовать системный буфер обмена для yank
set clipboard=unnamedplus
" Поддержка мыши во всех режимах
set mouse=a
" Копировать отступы при вставке
set copyindent
" Цвета
set background=dark
hi CursorLine ctermfg=NONE ctermbg=NONE cterm=NONE
hi LineNr ctermfg=gray ctermbg=NONE cterm=NONE
hi CursorLineNr ctermfg=gray ctermbg=NONE cterm=bold
" Переключение между буферами
nnoremap <A-,> :bprevious<CR>
nnoremap <A-.> :bnext<CR>
" Переключение фокуса между окнами
nnoremap <A-Left> :wincmd h<CR>
nnoremap <A-Right> :wincmd l<CR>
nnoremap <A-Up> :wincmd k<CR>
nnoremap <A-Down> :wincmd j<CR>
nnoremap <C-M-Left> :vertical resize -5<CR>
nnoremap <C-M-Right> :vertical resize +5<CR>
nnoremap <C-M-Up> :resize -3<CR>
nnoremap <C-M-Down> :resize +3<CR>
set expandtab
set shiftwidth=2
set softtabstop=2
" Error bells are displayed visually.
"set visualbell
set encoding=utf-8
set laststatus=2
set noshowmode
set statusline=%!CompactStatusLine()
function! CompactStatusLine() abort
" Mode
let l:m = mode()
let l:mode = l:m ==# 'n' ? 'N' : l:m =~# 'i' ? 'I' : l:m =~# 'v' ? 'V' : 'R'
" File name / no name / modified / readonly
let l:name = expand('%:t') ==# '' ? '[NoName]' : expand('%:t')
let l:mod = &modified ? '+' : ''
let l:ro = &readonly ? 'RO' : ''
" Filetype explicitly
let l:ft = &filetype ==# '' ? 'none' : &filetype
" Encoding / fileformat
let l:enc = &fileencoding ==# '' ? &encoding : &fileencoding
let l:ff = &fileformat
" File size human-readable
let l:fs = getfsize(expand('%:p'))
if l:fs < 0
let l:sz = ''
elseif l:fs < 1024
let l:sz = printf('%dB', l:fs)
elseif l:fs < 1024*1024
let l:sz = printf('%.1fK', l:fs/1024.0)
else
let l:sz = printf('%.1fM', l:fs/1024.0/1024.0)
endif
" Build left and right parts; %=% separates
let l:left = printf(' %s %s%s%s [%s]', l:mode, l:name, l:mod, l:ro, l:ft)
let l:right = printf('%s %s %s', l:enc, l:ff, l:sz)
return l:left . '%=' . l:right . ' %l:%c %p%%'
endfunction
call plug#begin()
Plug 'yegappan/lsp'
call plug#end()
let lspOpts = #{autoHighlightDiags: v:false}
autocmd User LspSetup call LspOptionsSet(lspOpts)
let lspServers = [#{
\ name: 'clang',
\ filetype: ['c', 'cpp'],
\ path: '/usr/bin/clangd',
\ args: ['--background-index']
\ }]
autocmd User LspSetup call LspAddServer(lspServers)