yerden

Untitled

Sep 23rd, 2026
35
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VIM 7.69 KB | Source Code | 0 0
  1. syntax on
  2.  
  3. call plug#begin('~/.vim/plugged')
  4.  
  5. if !has('nvim')
  6.   Plug 'roxma/nvim-yarp'
  7.   Plug 'roxma/vim-hug-neovim-rpc'
  8. endif
  9.  
  10. let g:deoplete#enable_at_startup = 1
  11. "Plug 'powerline/powerline',{'rtp':'powerline/bindings/vim/'}
  12. "Plug 'crosbymichael/vim-cfmt'
  13. Plug 'vim-airline/vim-airline'
  14. "Plug 'vim-airline/vim-airline-themes'
  15. Plug 'ycm-core/YouCompleteMe'
  16. filetype plugin on
  17. Plug 'fatih/vim-go',{'do':':GoUpdateBinaries'}
  18. Plug 'preservim/tagbar'
  19. Plug 'scrooloose/nerdcommenter'
  20. Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
  21. Plug 'junegunn/fzf.vim'
  22. Plug 'rust-lang/rust.vim'
  23. Plug 'dense-analysis/ale'
  24. Plug 'airblade/vim-rooter'
  25. Plug 'prabirshrestha/vim-lsp'
  26. "Plug 'zacanger/angr.vim'
  27. "Plug 'morhetz/gruvbox'
  28. "Plug 'mattn/vim-lsp-settings'
  29. Plug 'cocopon/iceberg.vim'
  30. Plug 'ntpeters/vim-better-whitespace'
  31. Plug 'chriskempson/base16-vim'
  32. Plug 'rafi/awesome-vim-colorschemes'
  33. Plug 'rhysd/vim-clang-format'
  34. Plug 'tpope/vim-surround'
  35. Plug 'skywind3000/asyncrun.vim'
  36. Plug 'tpope/vim-fugitive'
  37. Plug 'habamax/vim-rst'
  38.  
  39. let g:airline_powerline_fonts=1
  40.  
  41. " YCM: load extra conf
  42. let g:ycm_confirm_extra_conf = 0
  43. let g:ycm_autoclose_preview_window_after_insertion = 1
  44. let g:ycm_semantic_triggers = { 'c': [ 're!\w{4}' ] }
  45. let g:ycm_clangd_args=['--header-insertion=never'] " don't include headers
  46.  
  47. let g:clang_format#command = "/usr/bin/clang-format"
  48.  
  49. "set omnifunc=ale#completion#OmniFunc
  50. let rustfmt_autosave=1
  51.  
  52. nmap <F8> :TagbarToggle<CR>
  53. let g:go_def_mapping_enabled=0
  54.  
  55. call plug#end()
  56.  
  57. set termguicolors
  58. " colorscheme selection
  59. "colorscheme iceberg
  60. "colorscheme mountaineer
  61. "colorscheme base16-gruvbox-dark-pale
  62. "colorscheme gotham
  63. colorscheme molokai
  64. "colorscheme termschool
  65.  
  66. "hi Search ctermbg=Yellow
  67. "hi Search ctermfg=Black
  68. " Настроим кол-во символов пробелов, которые будут заменять \t
  69. set tabstop=8
  70. set shiftwidth=8
  71. set smarttab
  72. " set et " — включим автозамену по умолчанию
  73. " set expandtab
  74. set copyindent
  75. " set smartindent
  76. set preserveindent
  77. set softtabstop=0
  78.  
  79. " 80 symbols per line
  80. set tw=80
  81.  
  82. set wrap " — попросим Vim переносить длинные строки
  83. set formatoptions=tcrq
  84.  
  85. " case sensitive search
  86. set noic
  87. " nmap <F9> :set ignorecase! ignorecase?
  88. nmap <F5> :FZF<CR>
  89. autocmd FileType go nmap <F7> :GoTest<CR>
  90. autocmd FileType go nmap <F9> :GoBuild<CR>
  91. autocmd FileType go nmap <F10> :GoDef<CR>
  92. autocmd FileType go nmap <F6> :cclose<CR>:pclose<CR>:lclose<CR>
  93. autocmd FileType rust nmap <F9> :Cargo build<CR>
  94. autocmd FileType rust nmap <F7> :Cargo test<CR>
  95. autocmd FileType rust nmap <F6> :cclose<CR>:pclose<CR>:lclose<CR>
  96. autocmd FileType rust setlocal omnifunc=lsp#complete
  97.  
  98. autocmd BufRead *.c,*.h nmap <F9> :ClangFormat<CR>
  99. autocmd BufRead *.c,*.h nmap <F10> :YcmCompleter GoToDefinition<CR>
  100.  
  101. autocmd BufRead *.rst set nowrap
  102.  
  103. set ai " — включим автоотступы для новых строк
  104. set cin " — включим отступы в стиле Си
  105.  
  106. " Далее настроим поиск и подсветку результатов поиска и совпадения скобок
  107. set showmatch
  108. set hlsearch
  109. set incsearch
  110.  
  111. highlight ExtraWhitespace ctermbg=red guibg=red
  112. match ExtraWhitespace /\s\+$/
  113. autocmd BufWinEnter * match ExtraWhitespace /\s\+$/
  114. autocmd InsertEnter * match ExtraWhitespace /\s\+\%#\@<!$/
  115. autocmd InsertLeave * match ExtraWhitespace /\s\+$/
  116. autocmd BufWinLeave * call clearmatches()
  117.  
  118. set lz " — ленивая перерисовка экрана при выполнении скриптов
  119.  
  120. " Показываем табы в начале строки точками
  121. set listchars=tab:··,trail:·
  122. "set listchars=tab:│·,trail:·,extends:→
  123. "set listchars=tab:│\ ,trail:·,extends:→
  124. set list
  125.  
  126. "Порядок применения кодировок и формата файлов
  127.  
  128. set ffs=unix,dos,mac
  129. set fencs=utf-8,cp1251,koi8-r,ucs-2,cp866
  130.  
  131. "Взаимодействие и элементы интерфейса
  132.  
  133. "Я часто выделяю мышкой содержимое экрана в Putty, но перехват мышки в Vim мне иногда мешает. Отключаем функционал вне графического режима:
  134. if !has('gui_running')
  135. set mouse=
  136. endif
  137.  
  138. "Опять же, системы сборки для разных платформ могут быть переопределены:
  139. if has('win32')
  140.     set makeprg=nmake
  141.     compiler msvc
  142. else
  143.     set makeprg=make
  144.     compiler gcc
  145. endif
  146.  
  147. "highlight Comment       ctermfg=DarkGrey
  148. set laststatus=2
  149. set t_Co=256
  150.  
  151.  
  152. " Turn ALE on
  153. let g:ale_enabled = 0
  154. "let g:ale_linters = { 'c': ['cppcheck']}
  155.  
  156. " Use cppcheck for C/C++
  157. let g:ale_linters = {
  158.     \ 'go': ['revive', 'gometalinter', 'gofmt'] ,
  159.     \ 'c':   ['cppcheck'],
  160.     \ 'cpp': ['cppcheck'],
  161. \}
  162.  
  163. " Linting behavior (pick what you like)
  164. let g:ale_lint_on_text_changed = 'normal'   " or 'never'
  165. let g:ale_lint_on_insert_leave = 1
  166. let g:ale_lint_on_enter = 1
  167. let g:ale_lint_on_save = 1
  168.  
  169. " Show signs + use loclist/quickfix if desired
  170. let g:ale_sign_column_always = 1
  171. let g:ale_set_loclist = 1
  172. let g:ale_set_quickfix = 0
  173.  
  174. " Optional: open list automatically when problems exist
  175. let g:ale_open_list = 0
  176.  
  177. let g:ale_cpp_cppcheck_options =
  178. \ '--enable=warning,style,performance,portability ' .
  179. \ '--inline-suppr ' .
  180. \ '--suppress=missingIncludeSystem ' .
  181. \ '--language=c++ ' .
  182. \ '--std=c++17'
  183.  
  184. let g:ale_c_cppcheck_options =
  185. \ '--enable=warning,style,performance,portability ' .
  186. \ '--inline-suppr ' .
  187. \ '--suppress=missingIncludeSystem ' .
  188. \ '--language=c ' .
  189. \ '--std=gnu17'
  190.  
  191. " crosbymichael/vim-cfmt
  192. "autocmd BufWritePre *.c,*.h Cfmt
  193. "let g:cfmt_style = '-linux -l120'
  194.  
  195. let g:tagbar_position = "topleft vertical"
  196. " For use with gotags
  197. let g:tagbar_type_go = {
  198.     \ 'ctagstype' : 'go',
  199.     \ 'kinds'     : [
  200.         \ 'p:package',
  201.         \ 'i:imports:1',
  202.         \ 'c:constants',
  203.         \ 'v:variables',
  204.         \ 't:types',
  205.         \ 'n:interfaces',
  206.         \ 'w:fields',
  207.         \ 'e:embedded',
  208.         \ 'm:methods',
  209.         \ 'r:constructor',
  210.         \ 'f:functions'
  211.     \ ],
  212.     \ 'sro' : '.',
  213.     \ 'kind2scope' : {
  214.         \ 't' : 'ctype',
  215.         \ 'n' : 'ntype'
  216.     \ },
  217.     \ 'scope2kind' : {
  218.         \ 'ctype' : 't',
  219.         \ 'ntype' : 'n'
  220.     \ },
  221.     \ 'ctagsbin'  : 'gotags',
  222.     \ 'ctagsargs' : '-sort -silent'
  223. \ }
  224.  
  225. set bg=dark
  226.  
  227. " Disable arrow keys - force to use home line
  228. nnoremap <up> <nop>
  229. nnoremap <down> <nop>
  230. inoremap <up> <nop>
  231. inoremap <down> <nop>
  232. inoremap <left> <nop>
  233. inoremap <right> <nop>
  234.  
  235. let g:rooter_patterns = ['.vimroot', '.git/', '.python-version']
  236.  
  237. augroup vimrc_rooter
  238.     autocmd VimEnter * :Rooter
  239. augroup END
  240.  
  241. "Toggle YouCompleteMe on and off with F3
  242. function Toggle_ycm()
  243.     if g:ycm_show_diagnostics_ui == 0
  244.         let g:ycm_auto_trigger = 1
  245.         let g:ycm_show_diagnostics_ui = 1
  246.         :YcmRestartServer
  247.         :e
  248.         :echo "YCM on"
  249.     elseif g:ycm_show_diagnostics_ui == 1
  250.         let g:ycm_auto_trigger = 0
  251.         let g:ycm_show_diagnostics_ui = 0
  252.         :YcmRestartServer
  253.         :e
  254.         :echo "YCM off"
  255.     endif
  256. endfunction
  257. map <F3> :call Toggle_ycm() <CR>
  258.  
  259. function MakeTabSpaces()
  260.     setlocal shiftwidth=4
  261.     setlocal tabstop=4
  262.     setlocal softtabstop=4
  263.     setlocal expandtab
  264. endfunction
  265.  
  266. function DockerExec(image, cmd)
  267.     let save_efm=&errorformat
  268.     setlocal errorformat=%*[^-]---\ %f:%l:\ error:\ %m
  269.     "setlocal errorformat=%E[\ \ ERROR\ \ \ ]%#---\ %m,%Z[\ \ \ LINE\ \ \ ]%#---\ %f:%l:%*[^:]:\ %m
  270.     "setlocal errorformat=%E[%#\ ERROR\ %#]%#---\ %m,%Z[%#\ LINE\ %#]%#---\ %f:%l:%*[^:]:\ %m
  271.     execute 'AsyncRun docker exec ' . a:image . ' ' . a:cmd
  272.     call clearmatches()
  273.     let &errorformat=save_efm
  274. endfunction
  275. map <F4> :call DockerExec("floweaver-24.11", "meson test -v") <CR>
  276.  
  277. nnoremap <C-j> :cnext<cr>
  278. nnoremap <C-k> :cprev<cr>
  279.  
Advertisement
Add Comment
Please, Sign In to add comment