104 lines
2.7 KiB
VimL
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)
|
|
|