|
|
" ~/.vimrc |
|
|
" |
|
|
" vim: foldmethod=marker |
|
|
" |
|
|
"############################################################################### |
|
|
" {{{ НАСТРОЙКИ VIM |
|
|
"############################################################################### |
|
|
|
|
|
" {{{-------------------------- Общие настройки -------------------------------- |
|
|
|
|
|
" let &runtimepath.=',$SHELLRC/etc/vim/vim' |
|
|
|
|
|
set nocompatible " Несовместимость настроек с Vi |
|
|
set history=500 " Настройка истории |
|
|
set t_Co=256 " 256-цветный режим |
|
|
set nohidden " Выгружать буферы при переключении |
|
|
set novisualbell " Отключение визуального оповещения |
|
|
set t_vb= " Отключение визуального оповещения |
|
|
set tabpagemax=99 " Предел открытия вкладок |
|
|
set winminheight=0 " Минимальная высота окна |
|
|
set winminwidth=0 " Минимальная ширина окна |
|
|
set winaltkeys=menu " Включение Win/Alt |
|
|
set autochdir " Переходить в каталог файла |
|
|
set viewdir=$HOME/.shellrc/var/vim/view " Директория файлов состояний буферов |
|
|
set modeline " Настройка modeline |
|
|
set modelineexpr " Настройка modeline |
|
|
set lazyredraw " Перерисовывать экран только выполнения макроса |
|
|
silent set suffixesadd " Включать расширения при переходе к файлу по gf |
|
|
|
|
|
" При выходе запоминать состояние файла |
|
|
au BufWinLeave * if bufname("") =~ "..*" | mkview | endif |
|
|
|
|
|
au BufWinEnter * call RestoreState() |
|
|
au BufWinEnter * set cursorline |
|
|
|
|
|
" Отключение zip |
|
|
let g:loaded_zipPlugin = 1 |
|
|
let g:loaded_zip = 1 |
|
|
|
|
|
" Enable quickfix filtering |
|
|
packadd cfilter |
|
|
|
|
|
" }}}--------------------------------------------------------------------------- |
|
|
|
|
|
" {{{-------------------------- Работа с файловой системой---------------------- |
|
|
|
|
|
set autoread " Перечитывать файл при изменении |
|
|
set browsedir=current " Открывать в Ex директорию файла |
|
|
set wildignore=*.bak,*.~ " Не показывать временные файлы в меню |
|
|
|
|
|
" }}}--------------------------------------------------------------------------- |
|
|
|
|
|
" {{{-------------------------- Языки и кодировки ------------------------------ |
|
|
|
|
|
set helplang=ru,en " Языки справки |
|
|
set encoding=utf8 " Кодировка |
|
|
set termencoding=utf-8 " Кодировка текста по умолчанию |
|
|
|
|
|
" }}}--------------------------------------------------------------------------- |
|
|
|
|
|
" {{{-------------------------- Настройка мыши и клавиатуры -------------------- |
|
|
|
|
|
"set mouse=a " Мышь в текстовом режиме |
|
|
set ruler " Всегда показывать положение курсора |
|
|
set mousehide " Скрывать указатель мыши при наборе |
|
|
set scrolljump=7 " Вверх в режиме редактирования |
|
|
set scrolloff=7 " Вниз в режиме редактирования |
|
|
|
|
|
" Смена указателя в зависимости от режима |
|
|
|
|
|
let &t_SI = "\<Esc>]50;CursorShape=1\x7" |
|
|
let &t_EI = "\<Esc>]50;CursorShape=0\x7" |
|
|
|
|
|
if &term =~ "xterm\\|rxvt\\|xterm-256color" |
|
|
let &t_SI = "\033]12;orange\007" |
|
|
let &t_EI = "\033]12;darkgrey\007" |
|
|
autocmd VimLeave * :!echo -ne "\033]12;darkgrey\007" |
|
|
endif |
|
|
|
|
|
set backspace=indent,eol,start whichwrap+=<,>,[,] |
|
|
|
|
|
" }}}--------------------------------------------------------------------------- |
|
|
|
|
|
" {{{-------------------------- Редактирование текста -------------------------- |
|
|
|
|
|
syntax on " Подсветка синтаксиса |
|
|
filetype on " Определение типа файла |
|
|
filetype plugin on " Определение типа файла |
|
|
set nu " Нумерация строк |
|
|
set iminsert=0 " Раскладка по умолчанию - английская |
|
|
set virtualedit=all " Перемещение курсора по всему экрану |
|
|
|
|
|
"match ErrorMsg '\%>80v.\+' " Подсветка выхода за 80-й символ |
|
|
|
|
|
match ErrorMsg /\s\+\%#\@<!$\| \+\ze\t/ " Подсветка висящих пробелов |
|
|
|
|
|
" }}}--------------------------------------------------------------------------- |
|
|
|
|
|
" {{{-------------------------- Настройка табуляции ---------------------------- |
|
|
|
|
|
set tabstop=8 " Размер табуляции |
|
|
set softtabstop=8 " Табуляция |
|
|
set shiftwidth=8 " Размер сдвига блоков ( << , >> ) |
|
|
|
|
|
" Показывать табуляцию и висящие пробелы (:set list) |
|
|
set listchars=tab:▸·,space:·,nbsp:␣,trail:+,eol:¶,precedes:«,extends:» |
|
|
|
|
|
" }}}--------------------------------------------------------------------------- |
|
|
|
|
|
" {{{-------------------------- Настройка отступов ----------------------------- |
|
|
|
|
|
filetype plugin indent on |
|
|
set autoindent " Автоматическая расстановка отступов |
|
|
set smartindent " Умная расстановка отступов |
|
|
set cindent " Умная расстановка отступов |
|
|
set cin " Расстановка отступов в стиле С |
|
|
|
|
|
" }}}--------------------------------------------------------------------------- |
|
|
|
|
|
" {{{-------------------------- Настройка автодополнения ----------------------- |
|
|
|
|
|
set wildmenu " Меню при автодополнении команд |
|
|
|
|
|
set completeopt=menu " Показывать меню автодополнения |
|
|
set undolevels=1000 " Размер истории для отмены |
|
|
set wrap " Включаем перенос строк |
|
|
set linebreak " Перенос строк по словам, а не по буквам |
|
|
|
|
|
set complete="" " Автозавершение слов |
|
|
set complete+=. " Из текущего буфера |
|
|
set complete+=k " Из словаря |
|
|
set complete+=b " Из других открытых буферов |
|
|
set complete+=t " Из тегов |
|
|
|
|
|
" Автодополнение из файла с синтаксисом |
|
|
autocmd FileType * exec('set dict+='.$VIMRUNTIME.'/syntax/'.getbufvar("%","current_syntax").'.vim') |
|
|
|
|
|
" }}}--------------------------------------------------------------------------- |
|
|
|
|
|
" {{{-------------------------- Скрытие блоков кода ---------------------------- |
|
|
|
|
|
set foldcolumn=1 " Видимая колонка фолдинга |
|
|
" set foldmethod=syntax " Скрытие блоков текста |
|
|
|
|
|
" }}}--------------------------------------------------------------------------- |
|
|
|
|
|
" {{{---------------------- Настройки поиска и замены -------------------------- |
|
|
|
|
|
set incsearch " Поиск по набору текста |
|
|
set inccommand=nosplit " Поиск и замена по ходу набора |
|
|
set hlsearch " Подсветка результатов поиска |
|
|
set wrapscan " Не останавливать поиск при достижении конца файла |
|
|
set ignorecase " Игнорировать регистр букв при поиске |
|
|
set smartcase " Учитывать регистр, если есть заглавные буквы |
|
|
set wildignorecase " Не учитывать регистр при дополнении команд |
|
|
|
|
|
" }}}--------------------------------------------------------------------------- |
|
|
|
|
|
" {{{-------------------------- Настройка резервного копирования --------------- |
|
|
|
|
|
set dir^=~/.shellrc/var/vim/swp/ " Директория сохранения swap-файлов |
|
|
set backup " Cоздавать .bak файлы |
|
|
set backupdir=~/.shellrc/var/vim/backup " Директория хранения бэкапов |
|
|
|
|
|
" Бэкапы в поддиректории |
|
|
function! BackupDir() |
|
|
" Каталог для сохранения резервной копии |
|
|
let l:backupdir=$HOME.'/.shellrc/var/vim/backup/'. |
|
|
\substitute(expand('%:p:h'), '^'.$HOME, '~', '') |
|
|
|
|
|
" Каталог не существует, создадим его рекурсивно |
|
|
if !isdirectory(l:backupdir) |
|
|
call mkdir(l:backupdir, 'p', 0700) |
|
|
endif |
|
|
|
|
|
" Каталог для резервных копий |
|
|
let &backupdir=l:backupdir |
|
|
|
|
|
" Расширение файла резервной копии |
|
|
let &backupext=strftime('.%d-%m-%Y.%T~') |
|
|
endfunction |
|
|
|
|
|
autocmd! bufwritepre * call BackupDir()" |
|
|
|
|
|
" }}}--------------------------------------------------------------------------- |
|
|
|
|
|
" {{{-------------------------- Настройка отмены действий ---------------------- |
|
|
set undodir=$SHELLRC/var/vim/undo |
|
|
set undofile |
|
|
set undolevels=1000 |
|
|
set undoreload=10000" |
|
|
" }}}--------------------------------------------------------------------------- |
|
|
|
|
|
" }}}########################################################################### |
|
|
" {{{ НАСТРОЙКИ ЦВЕТА |
|
|
" ############################################################################## |
|
|
|
|
|
" set background=dark |
|
|
" colo wombat_converted " Цветовая схема |
|
|
" set termguicolors |
|
|
set background=light |
|
|
colo PaperColor_Edit |
|
|
|
|
|
" Грамматические ошибки |
|
|
" hi clear SpellBad |
|
|
" hi SpellBad cterm=bold ctermfg=160 ctermbg=NONE |
|
|
|
|
|
" Ошибки в заглавных буквах |
|
|
" hi clear SpellCap |
|
|
" hi SpellCap cterm=bold ctermfg=110 ctermbg=NONE |
|
|
|
|
|
" Стилистические ошибки |
|
|
" hi clear SpellLocal |
|
|
" hi SpellLocal cterm=bold ctermfg=120 ctermbg=NONE |
|
|
|
|
|
" hi Todo ctermfg=black ctermbg=221 " Метки TODO |
|
|
|
|
|
" hi MatchParen ctermfg=47 ctermbg=NONE " Парные скобки |
|
|
|
|
|
" hi Pmenu ctermfg=black ctermbg=lightgreen " Дополнение - Фон |
|
|
" hi PmenuSel ctermfg=black ctermbg=darkgreen " Дополнение - Элемент |
|
|
|
|
|
" hi CursorLine ctermfg=NONE ctermbg=234 cterm=NONE " Подсветка строки |
|
|
" set cursorline |
|
|
|
|
|
" hi Folded ctermfg=black ctermbg=gray " Скрытие блоков |
|
|
" hi FoldColumn ctermfg=black ctermbg=black " Скрытие блоков |
|
|
|
|
|
hi Error ctermfg=238 ctermbg=160 " Ошибки |
|
|
hi ErrorMsg ctermfg=255 ctermbg=160 " Сообщение об ошибке |
|
|
|
|
|
" hi TabLineFill ctermfg=black ctermbg=black " Строка вкладок |
|
|
" hi TabLineSel ctermfg=lightgreen ctermbg=NONE " Текущая вкладка |
|
|
" hi TabLine ctermfg=yellow ctermbg=NONE " Остальные вкладки |
|
|
|
|
|
" hi Search ctermfg=black ctermbg=209 " Цвет найденного |
|
|
|
|
|
" hi SignColor ctermbg=64 ctermfg=lightyellow guibg=grey guifg=RoyalBlue3 |
|
|
|
|
|
" Более заметные комментарии |
|
|
hi Comment ctermbg=225 ctermfg=16 |
|
|
|
|
|
" OLOLO-отладка |
|
|
autocmd BufEnter * syntax match OloloDebugging /^.*@@@@.*$/ containedin=ALL |
|
|
hi OloloDebugging ctermbg=34 ctermfg=231 |
|
|
|
|
|
" }}}########################################################################### |
|
|
" {{{ СТРОКА СОСТОЯНИЯ |
|
|
" ############################################################################## |
|
|
|
|
|
set title |
|
|
" set titlestring=\ %t\ (%{expand('%:p:h')}) |
|
|
|
|
|
set showcmd " Показывать размер выделенной области |
|
|
set ch=1 " Количество строк |
|
|
set cmdheight=1 " Коммандная строка в одну линию |
|
|
set laststatus=2 " Всегда отображать статусную строку |
|
|
|
|
|
" set statusline=%#Question# " Цвет |
|
|
" set statusline+=%t%m%r%h%w " Имя файла |
|
|
" set statusline+=%= " Выравн. справа |
|
|
" set statusline+=%#Function# " Цвет |
|
|
" set statusline+=\ [%{strlen(&ft)?&ft:'none'} " Тип файла |
|
|
" set statusline+=\/\%{(&fenc==\"\"?&enc:&fenc)} " Кодировка |
|
|
" set statusline+=\|%L:%03l,%03v\ %p%%] " Строка/столбец |
|
|
|
|
|
" }}}########################################################################### |
|
|
" {{{ КОМБИНАЦИИ КЛАВИШ |
|
|
" ############################################################################## |
|
|
|
|
|
" , как <leader> |
|
|
let mapleader="," |
|
|
nmap \ , |
|
|
|
|
|
" Автоматическое перемещение по длинным параграфам построчно |
|
|
nnoremap <expr> k (v:count == 0 ? 'gk' : 'k') |
|
|
nnoremap <expr> j (v:count == 0 ? 'gj' : 'j') |
|
|
|
|
|
" Открытие/закрытие блоков текста |
|
|
nnoremap <Space> za |
|
|
vnoremap <Space> za |
|
|
|
|
|
" Удаление конечных пробелов |
|
|
map <leader>S :%s/\s\+$//<cr>:let @/=''<CR> |
|
|
|
|
|
" Удаление дубликатов строк |
|
|
map <leader>D :%s/^\(.*\)\(\n\1\)\+$/\1/<CR> |
|
|
|
|
|
" Выделение недавно редактированного текста |
|
|
nmap gV `[v`] |
|
|
|
|
|
" Отключение подсветки найденного |
|
|
nmap <silent> ,/ :nohlsearch<CR> |
|
|
|
|
|
" Перемещение курсора в режиме вставки |
|
|
" imap <C-h> <left> |
|
|
" imap <C-j> <down> |
|
|
" imap <C-k> <up> |
|
|
" imap <C-l> <right> |
|
|
|
|
|
" Показ строк, содержащих слово под курсором |
|
|
nmap <leader>g [I:let nr=input("> ")<Bar>exe "normal " . nr . "[\t"<CR> |
|
|
|
|
|
" История комманд |
|
|
cmap <C-P> <Up> |
|
|
|
|
|
" Omnicompletion |
|
|
imap <S-Tab> <C-X><C-O> |
|
|
|
|
|
" Открытие буфера с ошибками |
|
|
map <leader>co :copen<CR> |
|
|
map <leader>l :lopen<CR> |
|
|
|
|
|
" URxvt Home/End |
|
|
map! <Esc>[7;7^ <C-Home> |
|
|
map <Esc>[7;7^ <C-Home> |
|
|
map <Esc>[8;8^ <C-End> |
|
|
map! <Esc>[8;8^ <C-End> |
|
|
|
|
|
" Копирование от курсора до конца строки |
|
|
nmap Y y$ |
|
|
|
|
|
" Открытие руководства |
|
|
nmap <F1> <S-K><cr> |
|
|
imap <F1> <esc><S-K><cr> |
|
|
vmap <F1> <esc><S-K><cr> |
|
|
nmap fm <F1> |
|
|
|
|
|
" Сохранение файла |
|
|
nmap <F2> :up<cr><Right> |
|
|
vmap <F2> <esc>:up<cr>i<Right> |
|
|
imap <F2> <esc>:up<cr>i<Right> |
|
|
|
|
|
" Включение режима вклейки |
|
|
set pastetoggle=<F6> |
|
|
|
|
|
"nmap `` <Plug>Goto_next_sign |
|
|
|
|
|
" Проверка орфографии |
|
|
set wcm=<Tab> |
|
|
menu Spell.ru :setlocal spell<CR>:setlocal spelllang=<CR>:setlocal spelllang=ru<CR> |
|
|
menu Spell.el :setlocal spell<CR>:setlocal spelllang=<CR>:setlocal spelllang=el<CR> |
|
|
menu Spell.en :setlocal spell<CR>:setlocal spelllang=<CR>:setlocal spelllang=en<CR> |
|
|
menu Spell.ru,en,el :setlocal spell<CR>:setlocal spelllang=<CR>:setlocal spelllang=ru,en,el<CR> |
|
|
menu Spell.off :setlocal nospell<CR> |
|
|
map <F6> :emenu Spell.<TAB> |
|
|
|
|
|
" Навигация по ошибкам |
|
|
"nmap <F8> :cn<cr>zv:cc<cr> |
|
|
"vmap <F8> <esc>:cn<cr>zv:cc<cr> |
|
|
"imap <F8> <esc>:cn<cr>zv:cc<cr> |
|
|
|
|
|
"nmap <S-F8> :cp<cr>zv:cc<cr> |
|
|
"vmap <S-F8> <esc>:cp<cr>zv:cc<cr> |
|
|
"imap <S-F8> <esc>:cp<cr>zv:cc<cr> |
|
|
|
|
|
" Компиляция/запуск интерпретатора |
|
|
nmap <F9> :make<cr> |
|
|
vmap <F9> <esc>:make<cr> |
|
|
imap <F9> <esc>:make<cr> |
|
|
|
|
|
nmap <S-F9> :copen<cr> |
|
|
imap <S-F9> <esc>:copen<cr> |
|
|
|
|
|
nmap <F11> :echo system("robodoc &")<CR>:echo "MAKING DOCUMENTATION"<CR> |
|
|
imap <F11> :echo system("robodoc &")<CR>:echo "MAKING DOCUMENTATION"<CR> |
|
|
vmap <F11> :echo system("robodoc &")<CR>:echo "MAKING DOCUMENTATION"<CR> |
|
|
|
|
|
" < & > - отступы для блоков текста |
|
|
vmap < <gv |
|
|
vmap > >gv |
|
|
|
|
|
" Открытие новой вкладки |
|
|
" nmap <C-t> :tabnew<cr> |
|
|
" imap <C-t> <ESC>:tabnew<cr> |
|
|
" vmap <C-t> <ESC>:tabnew<cr> |
|
|
|
|
|
" Редактирование командной строки как в Emacs |
|
|
cnoremap <C-B> <Left> |
|
|
cnoremap <C-E> <End> |
|
|
" cnoremap <C-F> <Right> |
|
|
cnoremap <C-N> <Down> |
|
|
cnoremap <C-P> <Up> |
|
|
cnoremap <ESC>b <S-Left> |
|
|
cnoremap <ESC><C-B> <S-Left> |
|
|
cnoremap <ESC>f <S-Right> |
|
|
cnoremap <ESC><C-F> <S-Right> |
|
|
cnoremap <ESC><C-H> <C-W> |
|
|
|
|
|
" Редактирование макросов ("X,@) |
|
|
nn <leader>@ :<c-u><c-r><c-r>='let @'.v:register.' = |
|
|
\ '.string(getreg(v:register))<cr><c-f><left> |
|
|
|
|
|
" }}}########################################################################### |
|
|
" {{{ НАСТРОЙКИ ФОРМАТОВ ФАЙЛОВ |
|
|
" ############################################################################## |
|
|
|
|
|
" Terraform {{{ |
|
|
|
|
|
" Вызов terraform fmt при сохранении файла |
|
|
let g:terraform_fmt_on_save = 1 |
|
|
|
|
|
" }}} |
|
|
|
|
|
" }}}########################################################################### |
|
|
" {{{ НАСТРОЙКИ ПЛАГИНОВ |
|
|
" ############################################################################## |
|
|
|
|
|
" Pathogen {{{ |
|
|
" Отключенные плагины |
|
|
let g:pathogen_disabled = ['colorsupport', 'timelog'] |
|
|
execute pathogen#infect('+plugins/{}') |
|
|
" call pathogen#runtime_append_all_bundles() |
|
|
call pathogen#helptags() |
|
|
" }}} |
|
|
|
|
|
" Airline {{{ |
|
|
let g:airline_left_sep = '' |
|
|
let g:airline_right_sep = '' |
|
|
let g:airline_linecolumn_prefix = '/ ' |
|
|
let g:airline_branch_prefix = '⇵ ' |
|
|
let g:airline_paste_symbol = '' |
|
|
let g:airline_whitespace_symbol = '∅' |
|
|
|
|
|
let g:airline_section_c = '%t%m%r%h%w' |
|
|
let g:airline_section_z = '%L:%03l,%03v %p%%' |
|
|
|
|
|
let g:airline_extensions = ['neomake', 'whitespace', 'coc'] |
|
|
|
|
|
" enable/disable fugitive/lawrencium integration |
|
|
let g:airline_enable_branch=1 |
|
|
|
|
|
" enable/disable syntastic integration |
|
|
let g:airline_enable_syntastic=0 |
|
|
|
|
|
" enable/disable tagbar integration |
|
|
let g:airline_enable_tagbar=0 |
|
|
|
|
|
" enable modified detection |
|
|
let g:airline_detect_modified=1 |
|
|
|
|
|
" enable paste detection |
|
|
let g:airline_detect_paste=1 |
|
|
|
|
|
" enable iminsert detection |
|
|
let g:airline_detect_iminsert=1 |
|
|
|
|
|
" enable whitespace detection |
|
|
let g:airline_detect_whitespace=1 "icon and message (default) |
|
|
|
|
|
" change the default theme |
|
|
let g:airline_theme='cool' |
|
|
|
|
|
" enable/disable usage of patched powerline font symbols |
|
|
let g:airline_powerline_fonts=0 |
|
|
|
|
|
let g:airline#extensions#coc#enabled = 1 |
|
|
let airline#extensions#coc#error_symbol = 'E:' |
|
|
let airline#extensions#coc#warning_symbol = 'W:' |
|
|
let airline#extensions#coc#stl_format_err = '%E{[%e(#%fe)]}' |
|
|
let airline#extensions#coc#stl_format_warn = '%W{[%w(#%fw)]}' |
|
|
|
|
|
" define the set of text to display for each mode. |
|
|
let g:airline_mode_map = { 'i': '+', 'n': ' ', 'v': '⇄', 'V': '⇄', '': '⇅', 'R': '✂', 'c': '#', 's': 'SELECT', '^S': 'S-BLOCK', 'S': 'S-LINE' } |
|
|
|
|
|
" }}} |
|
|
|
|
|
" VimWiki"{{{ |
|
|
let wiki = {} |
|
|
|
|
|
if has("win32unix") |
|
|
let wiki.path = '/d/etc/wiki/' |
|
|
let wiki.path_html = '/z/wiki/' |
|
|
else |
|
|
let wiki.path = '~/.shellrc/vimwiki/wiki/' |
|
|
let wiki.path_html = '~/.shellrc/vimwiki/html/' |
|
|
endif |
|
|
|
|
|
let wiki.template_path = '~/.shellrc/vimwiki/style/' |
|
|
let wiki.template_default = 'template' |
|
|
let wiki.template_ext = '.html' |
|
|
let wiki.css_name = 'css/vimwiki.css' |
|
|
let wiki.auto_export = 0 |
|
|
let wiki.nested_syntaxes = { |
|
|
\'prolog': 'prolog' |
|
|
\, 'bash': 'sh' |
|
|
\, 'tcl': 'tcl' |
|
|
\, 'scheme': 'scheme' |
|
|
\, 'haskell': 'haskell' |
|
|
\, 'erlang': 'erlang' |
|
|
\, 'bnf': 'abnf' |
|
|
\, 'plain': 'txt' |
|
|
\, 'diff': 'diff' |
|
|
\, 'javascript': 'javascript' |
|
|
\, 'vim': 'vim' |
|
|
\, 'latex': 'tex'} |
|
|
|
|
|
let wiki.diary_rel_path = 'ЖЖ/Календарь/' |
|
|
let wiki.diary_index = 'Календарь' |
|
|
let wiki.diary_header = 'Календарь' |
|
|
let wiki.diary_link_count = 4 |
|
|
let wiki.maxhi = 0 " Не проверять ссылки (на больших файлах вики тормозит) |
|
|
|
|
|
let g:vimwiki_list = [wiki] |
|
|
|
|
|
let g:vimwiki_hl_headers = 1 |
|
|
let g:vimwiki_fold_lists = 1 " Скрытие блоков |
|
|
let g:vimwiki_camel_case = 0 " Не использовать ВикиСлова |
|
|
let g:vimwiki_list_ignore_newline = 0 " Преобразовывать переводы строк в </ br> |
|
|
|
|
|
let g:vimwiki_html_header_numbering = 2 " Нумерация заголовков HTML со второго уровня |
|
|
let g:vimwiki_html_header_numbering_sym = '.' " Нумерация оканчивается точкой |
|
|
|
|
|
let g:vimwiki_user_htmls = 'ЖЖ/Календарь/today.html,ЖЖ/Календарь/timeline.html,ЖЖ/Календарь/statistic_words.html,ЖЖ/Календарь/statistic_tags.html,ЖЖ/Календарь/Карты/Челябинск.html,ЖЖ/Календарь/Карты/Дегтярск.html,ЖЖ/Календарь/Карты/Карабаш.html,ЖЖ/Календарь/Карты/Екатеринбург.html' |
|
|
|
|
|
let g:vimwiki_hl_cb_checked = 1 " Подсвечивать выполненные задания как комментарии |
|
|
|
|
|
let g:vimwiki_valid_html_tags = 'b,i,s,u,sub,sup,kbd,br,hr,embed,type,src,width,height,quality,object,param,p,cite' |
|
|
let g:vimwiki_file_exts = 'pdf,txt,doc,rtf,xls,php,zip,rar,7z,html,gz,mp3,ogg' |
|
|
|
|
|
let g:vimwiki_listsyms = ' ○◐●✓' |
|
|
|
|
|
"}}} |
|
|
|
|
|
" MRU"{{{ |
|
|
nmap <leader>m :MRU<cr> |
|
|
|
|
|
let MRU_File = $HOME . '/.shellrc/var/vim/mru/vim_mru_files' |
|
|
let MRU_Add_Menu = 0 |
|
|
let MRU_Max_Entries = 150 |
|
|
let MRU_Exclude_Files = '^/tmp/.*\|^/var/tmp/.*\|MERGE_MSG\|.*COMMIT_EDITMSG.*\|viper.*\|_cheat\|bash-fc.*\|vifm\.rename.*\|tmpprms2en3.yml' |
|
|
"}}} |
|
|
|
|
|
" Quickhl {{{ |
|
|
nmap <leader>qq <Plug>(quickhl-toggle) |
|
|
vmap <leader>qq <Plug>(quickhl-toggle) |
|
|
nmap <leader>qr <Plug>(quickhl-reset) |
|
|
vmap <leader>qr <Plug>(quickhl-reset) |
|
|
"}}} |
|
|
|
|
|
" vim-commentary {{{ |
|
|
nmap <C-C> <Plug>Commentary |
|
|
nmap <C-C><C-C> <Plug>CommentaryLine |
|
|
imap <C-C> <ESC><Plug>Commentary |
|
|
vmap <C-C> <Plug>Commentary |
|
|
"}}} |
|
|
|
|
|
" vim-signify {{{ |
|
|
|
|
|
let g:signify_sign_add = '→' |
|
|
let g:signify_sign_delete = '←' |
|
|
let g:signify_sign_delete_first_line = '×' |
|
|
let g:signify_sign_change = '~' " '⮂' |
|
|
let g:signify_sign_change_delete = g:signify_sign_change . g:signify_sign_delete_first_line |
|
|
|
|
|
" }}} |
|
|
|
|
|
" Tasklist"{{{ |
|
|
let g:tlWindowPosition = 1 " Открывать окно снизу экрана |
|
|
let g:tlTokenList = ['TODO','FIXME','DONE','INPROGRESS','XXX','DEBUG','TMP','BUGS', 'knownBug'] |
|
|
"}}} |
|
|
|
|
|
" Timestamp {{{ |
|
|
let g:timestamp_regexp = '\v\C%(<%(Last %([cC]hanged?|modified)|Modified|Измен(е|ё)н)\s*:\s+)@<=.{2,3} \d{2} .{3} \d{4} \d{2}:\d{2}:\d{2}.*$|TIMESTAMP' |
|
|
|
|
|
" %c seems to be different on different systems. Use a full form instead. |
|
|
let g:timestamp_rep = '%a %d %b %Y %H:%M:%S' |
|
|
|
|
|
"}}} |
|
|
|
|
|
"Pummode"{{{ |
|
|
" Выбор вариантов дополнения курсорными клавишами |
|
|
call pummode#map('i', '', 1, "<C-j>", '<TAB>') |
|
|
call pummode#map('i', '', 1, "<C-k>", '<C-p>') |
|
|
call pummode#map('i', '', 0, '<CR>', '<C-y>') |
|
|
"}}} |
|
|
|
|
|
"Yankring {{{ |
|
|
let g:yankring_history_file=".shellrc/var/vim/yankring/history" |
|
|
let g:yankring_min_element_length = 5 |
|
|
let g:yankring_map_dot = 0 |
|
|
let g:yankring_ignore_operator = 'g~ gu gU ! = gq g? > < zf g@ @:' |
|
|
let g:yankring_clipboard_monitor = 0 |
|
|
|
|
|
map <leader>y :YRShow<cr> |
|
|
"}}} |
|
|
|
|
|
"Errormarker {{{ |
|
|
let g:errormarker_errorgroup = "Error" |
|
|
let g:errormarker_warninggroup = "Todo" |
|
|
let g:errormarker_errortext = "⚫" |
|
|
let g:errormarker_warningtext = "⚑" |
|
|
"}}} |
|
|
|
|
|
" vim-sdcv {{{ |
|
|
let g:sdcv_save = 1 |
|
|
let g:sdcv_cmd = "sdcv -n --data-dir ~/.shellrc/etc/soft/sdcv/dictionaries/ " |
|
|
|
|
|
nmap fw ,qq<ESC>:call Dict(expand("<cword>"))<CR> |
|
|
vmap fw ,qq<Esc>gv:call Dict(@*)<CR> |
|
|
" }}} |
|
|
|
|
|
" javascript-libraries-syntax {{{ |
|
|
let g:used_javascript_libs = 'jquery' |
|
|
" }}} |
|
|
|
|
|
" neomake {{{ |
|
|
" When writing a buffer (no delay). |
|
|
call neomake#configure#automake('w') |
|
|
" let g:neomake_open_list = 2 |
|
|
let g:neomake_haskell_enabled_makers = ["hlint"] |
|
|
" }}} |
|
|
|
|
|
" nnn.vim {{{ |
|
|
|
|
|
let g:nnn#command = 'nnn -C' |
|
|
|
|
|
" Disable default mappings |
|
|
let g:nnn#set_default_mappings = 0 |
|
|
|
|
|
" Start nnn in the current file's directory |
|
|
nnoremap <leader>n :NnnPicker %:p:h<CR> |
|
|
|
|
|
" Floating window (neovim) |
|
|
let g:nnn#layout = { 'window': { 'width': 0.3, 'height': 0.9, 'highlight': 'Debug', 'xoffset': 0.07, 'yoffset': 0.5 } } |
|
|
|
|
|
let g:nnn#action = { 't': 'tab split' } |
|
|
|
|
|
" }}} |
|
|
|
|
|
" vim-easymotion {{{ |
|
|
map <leader><leader>f <Plug>(easymotion-bd-f) |
|
|
nmap <leader><leader>f <Plug>(easymotion-overwin-f) |
|
|
|
|
|
hi EasyMotionTarget ctermbg=155 ctermfg=black cterm=bold |
|
|
hi EasyMotionTarget2First ctermbg=155 ctermfg=black cterm=bold |
|
|
hi EasyMotionTarget2Second ctermbg=119 ctermfg=black cterm=bold |
|
|
" }}} |
|
|
|
|
|
" startify {{{ |
|
|
|
|
|
let g:startify_bookmarks = [ |
|
|
\ {'r': 'README.md'}, |
|
|
\ {'t': 'TODO.wiki'}, |
|
|
\ ] |
|
|
|
|
|
let g:startify_commands = [ |
|
|
\ {'d': ['Open current directory (GUI)', 'silent exec "!x-open ."']}, |
|
|
\ {'m': ['Make current project ($ make)', 'make']}, |
|
|
\ ] |
|
|
|
|
|
let g:ascii = systemlist('git-cal --unicode 2>/dev/null | head -n 10 | grep -v fatal || echo') |
|
|
|
|
|
let g:ascii = systemlist('git-cal --unicode 2>/dev/null | head -n 10 | grep -v fatal || echo') |
|
|
|
|
|
" ++todo |
|
|
" let g:ascii = systemlist('git-cal --unicode 2>/dev/null | head -n 10 | grep -v fatal || echo; echo; todolist | head | sed "s/^/ /; s/:.*TODO:/@TODO:/" | column -t -s @ ') |
|
|
|
|
|
let g:startify_custom_header = g:ascii |
|
|
|
|
|
let g:startify_fortune_use_unicode = 1 |
|
|
|
|
|
let g:startify_session_dir = "$HOME/.shellrc/var/vim/sessions" " Директория файлов сессий |
|
|
|
|
|
autocmd User Startified setlocal buflisted |
|
|
|
|
|
" }}} |
|
|
|
|
|
" cheat40 {{{ |
|
|
|
|
|
let g:cheat40_use_default = 0 |
|
|
|
|
|
" }}} |
|
|
|
|
|
" floaterm {{{ |
|
|
|
|
|
let g:floaterm_keymap_toggle = ',s' |
|
|
let g:floaterm_width = 0.8 |
|
|
let g:floaterm_height = 0.7 |
|
|
let g:floaterm_position = 'center' |
|
|
let g:floaterm_borderchars = ['─', '│', '─', '│', '┌', '┐', '┘', '└'] |
|
|
let g:floaterm_autoclose = 1 |
|
|
|
|
|
" Фокус на основное окно |
|
|
tnoremap <leader>w <C-\><C-n><C-w>w |
|
|
|
|
|
hi FloatermBorder ctermbg=none ctermfg=236 |
|
|
|
|
|
" }}} |
|
|
|
|
|
" vim-toggle {{{ |
|
|
|
|
|
let g:toggle_map = '<C-g>' |
|
|
|
|
|
" }}} |
|
|
|
|
|
" vim-matchup {{{ |
|
|
|
|
|
let g:matchup_matchparen_stopline = 400 |
|
|
let g:matchup_matchparen_offscreen = {'method': 'popup'} |
|
|
|
|
|
hi MatchParen ctermbg=193 ctermfg=53 guibg=#bdfc8d |
|
|
|
|
|
" }}} |
|
|
|
|
|
" vim-peekaboo {{{ |
|
|
|
|
|
let g:peekaboo_window = 'vertical botright 40new' |
|
|
let g:peekaboo_compact = 0 |
|
|
|
|
|
" }}} |
|
|
|
|
|
" committia.vim {{{ |
|
|
|
|
|
let g:committia_min_window_width = 80 |
|
|
|
|
|
" }}} |
|
|
|
|
|
" Coc {{{ |
|
|
let g:coc_global_extensions = ['coc-json', 'coc-yaml', 'coc-docker'] |
|
|
let g:coc_suggest_disable = 1 |
|
|
|
|
|
command! Lopen normal! :CocDiagnostics<CR> |
|
|
nnoremap <silent><leader>L :CocDiagnostics<CR> |
|
|
|
|
|
nnoremap <silent> K :call <SID>show_documentation()<CR> |
|
|
|
|
|
function! s:show_documentation() |
|
|
if (index(['vim','help'], &filetype) >= 0) |
|
|
execute 'h '.expand('<cword>') |
|
|
else |
|
|
call CocAction('doHover') |
|
|
endif |
|
|
endfunction |
|
|
|
|
|
" Highlight the symbol and its references when holding the cursor. |
|
|
" autocmd CursorHold * silent call CocActionAsync('highlight') |
|
|
|
|
|
" Introduce function text object |
|
|
" NOTE: Requires 'textDocument.documentSymbol' support from the language server. |
|
|
xmap if <Plug>(coc-funcobj-i) |
|
|
xmap af <Plug>(coc-funcobj-a) |
|
|
omap if <Plug>(coc-funcobj-i) |
|
|
omap af <Plug>(coc-funcobj-a) |
|
|
|
|
|
" GoTo code navigation. |
|
|
nmap <silent> gD :<C-u>call CocActionAsync('jumpDefinition', 'split')<CR> |
|
|
nmap <silent> gy <Plug>(coc-type-definition) |
|
|
nmap <silent> gI <Plug>(coc-implementation) |
|
|
nmap <silent> gr <Plug>(coc-references) |
|
|
|
|
|
nmap <silent> <leader>rf <Plug>(coc-refactor) |
|
|
nmap <silent> <leader>rn <Plug>(coc-rename) |
|
|
nmap <silent> <leader>qf :CocFix<CR> |
|
|
|
|
|
nmap <silent> <leader>f :CocOutline<CR> |
|
|
|
|
|
" use [h and ]h to navigate between holes |
|
|
nnoremap <silent> [h :<C-U>call CocActionAsync('diagnosticPrevious', 'hint')<CR> |
|
|
nnoremap <silent> ]h :<C-U>call <SID>JumpToNextHole()<CR> |
|
|
|
|
|
" <leader>d to perform a pattern match, <leader>n to fill a hole |
|
|
nnoremap <silent> <leader>d :<C-u>set operatorfunc=<SID>WingmanDestruct<CR>g@l |
|
|
nnoremap <silent> <leader>N :<C-u>set operatorfunc=<SID>WingmanFillHole<CR>g@l |
|
|
nnoremap <silent> <leader>r :<C-u>set operatorfunc=<SID>WingmanRefine<CR>g@l |
|
|
nnoremap <silent> <leader>c :<C-u>set operatorfunc=<SID>WingmanUseCtor<CR>g@l |
|
|
nnoremap <silent> <leader>a :<C-u>set operatorfunc=<SID>WingmanDestructAll<CR>g@l |
|
|
|
|
|
function! s:JumpToNextHole() |
|
|
call CocActionAsync('diagnosticNext', 'hint') |
|
|
endfunction |
|
|
|
|
|
function! s:GotoNextHole() |
|
|
" wait for the hole diagnostics to reload |
|
|
sleep 500m |
|
|
" and then jump to the next hole |
|
|
normal 0 |
|
|
call <SID>JumpToNextHole() |
|
|
endfunction |
|
|
|
|
|
function! s:WingmanRefine(type) |
|
|
call CocAction('codeAction', a:type, ['refactor.wingman.refine']) |
|
|
call <SID>GotoNextHole() |
|
|
endfunction |
|
|
|
|
|
function! s:WingmanDestruct(type) |
|
|
call CocAction('codeAction', a:type, ['refactor.wingman.caseSplit']) |
|
|
call <SID>GotoNextHole() |
|
|
endfunction |
|
|
|
|
|
function! s:WingmanDestructAll(type) |
|
|
call CocAction('codeAction', a:type, ['refactor.wingman.splitFuncArgs']) |
|
|
call <SID>GotoNextHole() |
|
|
endfunction |
|
|
|
|
|
function! s:WingmanFillHole(type) |
|
|
call CocAction('codeAction', a:type, ['refactor.wingman.fillHole']) |
|
|
call <SID>GotoNextHole() |
|
|
endfunction |
|
|
|
|
|
function! s:WingmanUseCtor(type) |
|
|
call CocAction('codeAction', a:type, ['refactor.wingman.useConstructor']) |
|
|
call <SID>GotoNextHole() |
|
|
endfunction |
|
|
|
|
|
" Use tab for trigger completion with characters ahead and navigate. |
|
|
" NOTE: Use command ':verbose imap <tab>' to make sure tab is not mapped by |
|
|
" other plugin before putting this into your config. |
|
|
inoremap <silent><expr> <TAB> |
|
|
\ pumvisible() ? "\<C-n>" : |
|
|
\ <SID>check_back_space() ? "\<TAB>" : |
|
|
\ coc#refresh() |
|
|
inoremap <expr><S-TAB> pumvisible() ? "\<C-p>" : "\<C-X>\<C-O>" |
|
|
|
|
|
inoremap <silent><expr> <C-l> |
|
|
\ pumvisible() ? coc#_select_confirm() : |
|
|
\ coc#expandableOrJumpable() ? "\<C-r>=coc#rpc#request('doKeymap', ['snippets-expand-jump',''])\<CR>" : |
|
|
\ <SID>check_back_space() ? "\<TAB>" : |
|
|
\ coc#refresh() |
|
|
|
|
|
function! s:check_back_space() abort |
|
|
let col = col('.') - 1 |
|
|
return !col || getline('.')[col - 1] =~# '\s' |
|
|
endfunction |
|
|
|
|
|
" Use <C-l> for trigger snippet expand. |
|
|
" imap <C-l> <Plug>(coc-snippets-expand) |
|
|
|
|
|
" Use <C-j> for select text for visual placeholder of snippet. |
|
|
vmap <C-j> <Plug>(coc-snippets-select) |
|
|
|
|
|
" Use <C-j> for jump to next placeholder, it's default of coc.nvim |
|
|
let g:coc_snippet_next = '<c-j>' |
|
|
|
|
|
" Use <C-k> for jump to previous placeholder, it's default of coc.nvim |
|
|
let g:coc_snippet_prev = '<c-k>' |
|
|
|
|
|
" }}} |
|
|
|
|
|
" HaskellConcealPlus {{{ |
|
|
|
|
|
nnoremap <silent> <leader>. :call pointfree#suggestions()<CR> |
|
|
vnoremap <silent> <leader>. :call pointfree#selection()<CR> |
|
|
|
|
|
" }}} |
|
|
|
|
|
" HaskellConcealPlus {{{ |
|
|
|
|
|
" [ ] 'q' option to disable concealing of scientific constants (e.g. π) |
|
|
" [ ] '℘' option to disable concealing of powerset function |
|
|
" [ ] '𝐒' option to disable String type to 𝐒 concealing |
|
|
" [ ] '𝐓' option to disable Text type to 𝐓 concealing |
|
|
" [ ] '𝐄' option to disable Either/Right/Left to 𝐄/𝑅/𝐿 concealing |
|
|
" [ ] '𝐌' option to disable Maybe/Just/Nothing to 𝐌/𝐽/𝑁 concealing |
|
|
" [X] 'A' option to not try to preserve indentation |
|
|
" [ ] 's' option to disable space consumption after ∑,∏,√ and ¬ functions |
|
|
" [X] '*' option to enable concealing of asterisk with '⋅' sign |
|
|
" [X] 'x' option to disable default concealing of asterisk with '×' sign |
|
|
" [X] 'E' option to enable ellipsis concealing with ‥ (two dot leader) |
|
|
" [X] 'e' option to disable ellipsis concealing with … (ellipsis sign) |
|
|
" [ ] '⇒' option to disable `implies` concealing with ⇒ |
|
|
" [ ] '⇔' option to disable `iff` concealing with ⇔ |
|
|
" [X] 'r' option to disable return (η) and join (µ) concealing |
|
|
" [ ] 'b' option to disable bind (left and right) concealing |
|
|
" [ ] 'f' option to enable formal (★) right bind concealing |
|
|
" [ ] 'c' option to enable encircled b/d (ⓑ/ⓓ) for right and left binds |
|
|
" [ ] 'h' option to enable partial concealing of binds (e.g. »=) |
|
|
" [ ] 'C' option to enable encircled 'm' letter ⓜ concealing for fmap |
|
|
" [X] 'l' option to disable fmap/lift concealing with ↥ |
|
|
" [X] '↱' option to disable mapM/forM concealing with ↱/↰ |
|
|
" [X] 'w' option to disable 'where' concealing with "due to"/∵ symbol |
|
|
" [X] '-' option to disable subtract/(-) concealing with ⊟ |
|
|
" [ ] 'I' option to enable alternative ':+' concealing with with ⨢ |
|
|
" [ ] 'i' option to disable default concealing of ':+' with ⅈ |
|
|
" [ ] 'R' option to disable realPart/imagPart concealing with ℜ/ℑ |
|
|
" [X] 'T' option to enable True/False constants concealing with bold 𝐓/𝐅 |
|
|
" [X] 't' option to disable True/False constants concealing with italic 𝑇/𝐹 |
|
|
" [ ] 'B' option to disable Bool type to 𝔹 concealing |
|
|
" [ ] 'Q' option to disable Rational type to ℚ concealing |
|
|
" [ ] 'Z' option to disable Integer type to ℤ concealing |
|
|
" [ ] 'N' option to disable Natural, Nat types to ℕ concealing |
|
|
" [ ] 'D' option to disable Double type to 𝔻 concealing |
|
|
" [ ] 'C' option to disable Complex type to ℂ concealing |
|
|
" [ ] '1' option to disable numeric superscripts concealing, e.g. x² |
|
|
" [ ] 'a' option to disable alphabet superscripts concealing, e.g. xⁿ |
|
|
|
|
|
let hscoptions="Ax*Eerl↱w-Tt" |
|
|
|
|
|
" }}} |
|
|
|
|
|
" {{{ goc |
|
|
lua << EOF |
|
|
local goc = require'nvim-goc' |
|
|
goc.setup({ verticalSplit = false }) |
|
|
|
|
|
vim.api.nvim_command("command! Goc normal! :lua require('nvim-goc').Coverage()<CR>") |
|
|
vim.api.nvim_command("command! Gocc normal! :lua require('nvim-goc').ClearCoverage()<CR>") |
|
|
vim.api.nvim_command("command! Gocw normal! :lua cf()<CR><CR>") |
|
|
|
|
|
_G.cf = function() |
|
|
local cb = function(path) |
|
|
if path then |
|
|
vim.cmd(":silent exec \"!xdg-open " .. path .. "\"") |
|
|
end |
|
|
end |
|
|
|
|
|
goc.Coverage(nil, cb) |
|
|
end |
|
|
EOF |
|
|
|
|
|
" }}} |
|
|
|
|
|
" }}}########################################################################### |
|
|
" {{{ ВВОД КОМАНД В ДРУГИХ РАСКЛАДКАХ |
|
|
" ############################################################################## |
|
|
|
|
|
runtime +layouts/russian.vim |
|
|
runtime +layouts/greek.vim |
|
|
runtime +layouts/coptic.vim |
|
|
|
|
|
" }}}########################################################################### |
|
|
" {{{ ДОПОЛНИТЕЛЬНЫЕ ФУНКЦИИ |
|
|
" ############################################################################## |
|
|
|
|
|
runtime vimrc.functions |
|
|
|
|
|
lua << EOF |
|
|
require'range-highlight'.setup{} |
|
|
EOF |
|
|
|
|
|
" FTerm |
|
|
" lua << EOF |
|
|
" require'FTerm'.setup({ |
|
|
" border = 'single', |
|
|
" dimensions = { |
|
|
" height = 0.7, |
|
|
" width = 0.8, |
|
|
" }, |
|
|
" }) |
|
|
" vim.api.nvim_set_keymap('n', '<leader>s', '<CMD>lua require("FTerm").toggle()<CR>', {noremap = true, silent = true}) |
|
|
" vim.api.nvim_set_keymap('t', '<leader>s', '<C-\\><C-n><CMD>lua require("FTerm").toggle()<CR>', {noremap = true, silent = true}) |
|
|
" EOF |
|
|
" }}} ##########################################################################
|
|
|
|