Advertisement
Guest User

.vimrc vladimirse

a guest
Mar 2nd, 2018
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VIM 21.69 KB | None | 0 0
  1. "====================================
  2. "                                   =
  3. "      ПЛАГИНЫ И ИХ НАСТРОЙКИ       =
  4. "                                   =
  5. "====================================
  6.  
  7. "====================================
  8. " Инициализация менеджера плагинов  =
  9. "====================================
  10.  
  11. call plug#begin('~/.vim/plugged')
  12.  
  13. "====================================
  14.  
  15.  
  16. "************************************
  17. "              ОБЩИЕ                *
  18. "************************************
  19.  
  20. "====================================
  21. "  Навигация по файлам и каталогам  =
  22. "====================================
  23.  
  24. Plug 'scrooloose/nerdtree'
  25.  
  26. " Открыть/закрыть панель NERDTree
  27. map <F12> :NERDTreeToggle<CR>
  28.  
  29. "Закрывать vim если NerdTree единственное открытое окно
  30. autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif
  31.  
  32. " Отображать скрытые файлы
  33. let NERDTreeShowHidden=1
  34.  
  35. "====================================
  36.  
  37.  
  38. "====================================
  39. "   Навигация по буферам и файлам   =
  40. "====================================
  41.  
  42. Plug 'Shougo/unite.vim'
  43.    
  44. " Отобразить список буферов
  45. nnoremap <F10> :Unite buffer<CR>
  46. " Перемещение между буферами
  47. nmap <F8> :bprev<CR>
  48. nmap <F9> :bnext<CR>
  49. " Закрыть текущий буфер
  50. map <C-q> :bd<CR>
  51.  
  52.  
  53. "====================================
  54. "            Миникарта              =
  55. "====================================
  56.  
  57. Plug 'severin-lemaignan/vim-minimap'
  58.  
  59. let g:minimap_highlight='Visual'
  60.  
  61. "let g:minimap_show='<leader>ms'
  62. "let g:minimap_update='<leader>mu'
  63. "let g:minimap_close='<leader>gc'
  64. "let g:minimap_toggle='<leader>gt'
  65. nnoremap <F2> :MinimapToggle<CR>
  66.  
  67. "====================================
  68.  
  69.  
  70. "====================================
  71. "        Дерево изменений           =
  72. "====================================
  73.  
  74. Plug 'mbbill/undotree'
  75. nnoremap <F4> :UndotreeToggle<cr>
  76.  
  77. if has("persistent_undo")
  78.     set undodir=~/.vim/undodir/
  79.     set undofile
  80. endif
  81.  
  82. "====================================
  83.  
  84.  
  85. "====================================
  86. "  Визуальное отображение отступов  =
  87. "====================================
  88.  
  89. Plug 'Yggdroot/indentLine'
  90.  
  91. " let g:indentLine_setColors = 0
  92. " set listchars=tab:›\ ,trail:•,extends:#,nbsp:.
  93.  
  94. "====================================
  95.  
  96.  
  97. "====================================
  98. "         Стартовый экран           =
  99. "====================================
  100.  
  101. Plug 'mhinz/vim-startify'
  102.  
  103. "====================================
  104.  
  105.  
  106. "====================================
  107. "   Управление парными элементами   =
  108. "====================================
  109. Plug 'jiangmiao/auto-pairs'
  110.  
  111. let g:AutoPairsMapCR = 0
  112. let g:AutoPairsMapReturn = 0
  113. let g:AutoPairsMapSpace = 0
  114.  
  115. "====================================
  116.  
  117.  
  118. "====================================
  119. "    Установка/замена обрамляющих   =
  120. "          символов и тэгов         =
  121. "====================================
  122.  
  123. Plug 'tpope/vim-surround'
  124.  
  125. "====================================
  126.  
  127.  
  128. "====================================
  129. "    Подсветка парных элементов     =
  130. "====================================
  131.  
  132. Plug 'kien/rainbow_parentheses.vim'
  133.  
  134. "====================================
  135.  
  136.  
  137. "====================================
  138. "    Многострочное редактирование   =
  139. "====================================
  140.  
  141. Plug 'terryma/vim-multiple-cursors'
  142.  
  143. " set selection=inclusive
  144. "
  145. " " Отключение сочетание клавиш по умолчанию
  146. " let g:multi_cursor_use_default_mapping=0
  147. "
  148. " " Сочетания клавиш
  149. " let g:multi_cursor_next_key='<C-n>'
  150. " let g:multi_cursor_prev_key='<C-p>'
  151. " let g:multi_cursor_skip_key='<C-x>'
  152. " let g:multi_cursor_quit_key='<Esc>'
  153. "
  154. " " Default highlighting (see help :highlight and help :highlight-link)
  155. " highlight multiple_cursors_cursor term=reverse cterm=reverse gui=reverse
  156. " highlight link multiple_cursors_visual Visual
  157.  
  158. "====================================
  159.  
  160.  
  161. "====================================
  162. "         Терминал в буфере         =
  163. "====================================
  164.  
  165. " Plug 'rosenfeld/conque-term'
  166. "
  167. " " Открыть терминал по F6
  168. " nnoremap <F6> :ConqueTermSplit /bin/bash<CR>
  169. " let g:ConqueTerm_StartMessages = 0
  170. " let g:ConqueTerm_CloseOnEnd = 0
  171.  
  172. "====================================
  173.  
  174.  
  175. "====================================
  176. "         Строка состояния          =
  177. "====================================
  178.  
  179. Plug 'vim-airline/vim-airline'
  180. Plug 'vim-airline/vim-airline-themes'
  181.  
  182. "====================================
  183.  
  184.  
  185. "====================================
  186. "          Цветовая схема           =
  187. "====================================
  188.  
  189. Plug 'chriskempson/base16-vim'
  190.  
  191. "====================================
  192.  
  193.  
  194. "====================================
  195. "              Иконки               =
  196. "====================================
  197. Plug 'ryanoasis/vim-devicons'
  198.  
  199. "====================================
  200.  
  201.  
  202. "************************************
  203. "    СИСТЕМЫ КОНТРОЛЯ ВЕРСИЙ        *
  204. "************************************
  205.  
  206. "====================================
  207. "     Поддержка Git в NerdTree      =
  208. "====================================
  209.  
  210. " Plug 'Xuyuanp/nerdtree-git-plugin'
  211.  
  212. "====================================
  213.  
  214.  
  215. "====================================
  216. "       Поддержка Git в VIM         =
  217. "====================================
  218.  
  219. " Plug 'jreybert/vimagit'
  220.  
  221. "====================================
  222.  
  223.  
  224. "************************************
  225. "        ПРОГРАММИРОВАНИЕ           *
  226. "************************************
  227.  
  228. " let ext = expand("%:e") " получаем расширение файла
  229.  
  230. "====================================
  231. "     Цветовая индикация строк,     =
  232. " привышающих длинну в 150 символов,=
  233. "    для файлов py,sh bat,c,cpp.    =
  234. "====================================
  235.  
  236. " set colorcolumn=150
  237. augroup colorcolumn_size
  238.     autocmd!
  239.     autocmd FileType python,sh,bat,c,cpp highlight Excess ctermbg=DarkGrey guibg=Black
  240.     autocmd FileType python,sh,bat,c,cpp match Excess /\%81v.*/
  241.     autocmd FileType python,sh,bat,c,cpp set nowrap
  242.     autocmd FileType python,sh,bat,c,cpp set colorcolumn=150
  243. augroup END
  244.  
  245. "====================================
  246.  
  247.  
  248. "====================================
  249. " Навигация по классам, функциям,   =
  250. "            переменным             =
  251. "====================================
  252.  
  253. Plug 'majutsushi/tagbar'
  254.  
  255. " Открыть tagbar
  256. nnoremap <F3> :TagbarToggle<CR>
  257.  
  258. "====================================
  259.  
  260.  
  261. "====================================
  262. "          Комментарии              =
  263. "====================================
  264.  
  265. Plug 'scrooloose/nerdcommenter'
  266.  
  267. " Добавлять пробел после комментариев
  268. let g:NERDSpaceDelims = 1
  269. " Выравнивать коментарии по левой стороне
  270. let g:NERDDefaultAlign = 'left'
  271. " Разрешить комментировать пустые строки
  272. let g:NERDCommentEmptyLines = 1
  273. " Обрезать конечные пробелы при раскомментировании
  274. let g:NERDTrimTrailingWhitespace = 1
  275.  
  276. " Комментировать по Ctrl+c
  277. vmap <silent> <C-c> <Plug>NERDCommenterToggle
  278. nmap <silent> <C-c> <Plug>NERDCommenterToggle
  279.  
  280. "====================================
  281.  
  282.  
  283. "====================================
  284. "            Сниппеты               =
  285. "====================================
  286.  
  287. Plug 'SirVer/ultisnips'
  288.  
  289. " Установить фрагмент
  290. let g:UltiSnipsExpandTrigger="<tab>"
  291. " Переключить на следующий фрагмент
  292. let g:UltiSnipsJumpForwardTrigger="<C-x>"
  293. " Переключить на предыдущий фрагмент
  294. let g:UltiSnipsJumpBackwardTrigger="<C-z>"
  295. " Разбивать окно по вертикали
  296. " let g:UltiSnipsEditSplit="vertical"
  297.  
  298. "====================================
  299.  
  300.  
  301. "====================================
  302. "       Репозитории сниппетов       =
  303. "           для различных           =
  304. "      языков программирования      =
  305. "====================================
  306.  
  307. Plug 'honza/vim-snippets'
  308.  
  309. "====================================
  310.  
  311.  
  312. "====================================
  313. "            Синтаксис              =
  314. "====================================
  315.  
  316. Plug 'vim-syntastic/syntastic'
  317. " рекомендуемые настройки для syntastic
  318. set statusline+=%#warningmsg#
  319. set statusline+=%{SyntasticStatuslineFlag()}
  320. set statusline+=%*
  321.  
  322. let g:syntastic_always_populate_loc_list = 1
  323. let g:syntastic_auto_loc_list = 1
  324. let g:syntastic_check_on_open = 1
  325. let g:syntastic_check_on_wq = 0
  326. let g:syntastic_enable_signs = 1
  327. let g:syntastic_aggregate_errors = 1
  328.  
  329. " F7 - проверка синтаксиса текущего файла
  330. noremap <F7> :w<CR>:SyntasticCheck<CR>
  331.  
  332. "====================================
  333.  
  334. "====================================
  335. "         Автодополнение            =
  336. "====================================
  337.  
  338. " Автодополнение по <Ctrl+Space>
  339. inoremap <C-space> <C-x><C-o>
  340.  
  341. "====================================
  342.  
  343.  
  344. "************************************
  345. "      ЯЗЫКИ ПРОГРАММИРОВАНИЯ       *
  346. "************************************
  347.  
  348. "====================================
  349. "             Python                =
  350. "====================================
  351.  
  352. " Поддержка Python в Vim
  353. Plug 'klen/python-mode'
  354.  
  355. " Поддерживаемая версия python
  356. let g:pymode_python='python3'
  357.  
  358. " Отключаем автокомплит по коду (у нас вместо него используется jedi-vim)
  359. let g:pymode_rope = 0
  360. let g:pymode_rope_completion = 0
  361. let g:pymode_rope_complete_on_dot = 0
  362.  
  363. " Документация
  364. let g:pymode_doc = 0
  365. let g:pymode_doc_key = 'K'
  366.  
  367. " Проверка кода
  368. let g:pymode_lint = 0
  369. " let g:pymode_lint_checker = "pep8"
  370. " let g:pymode_lint_ignore="E501,W601,C0110,E2"
  371.  
  372. " Провека кода после сохранения
  373. let g:pymode_lint_write = 0
  374.  
  375. " Поддержка virtualenv
  376. let g:pymode_virtualenv =  0
  377.  
  378. " установка breakpoints
  379. let g:pymode_breakpoint = 1
  380. let g:pymode_breakpoint_key = '<leader>b'
  381.  
  382. " Подстветка синтаксиса
  383. let g:pymode_syntax=1
  384. let g:pymode_syntax_slow_sync=1
  385. let g:pymode_syntax_all=1
  386. let g:pymode_syntax_print_as_function=g:pymode_syntax_all
  387. let g:pymode_syntax_highlight_async_await=g:pymode_syntax_all
  388. let g:pymode_syntax_highlight_equal_operator=g:pymode_syntax_all
  389. let g:pymode_syntax_highlight_stars_operator=g:pymode_syntax_all
  390. let g:pymode_syntax_highlight_self=g:pymode_syntax_all
  391. let g:pymode_syntax_indent_errors=g:pymode_syntax_all
  392. let g:pymode_syntax_string_formatting=g:pymode_syntax_all
  393. let g:pymode_syntax_space_errors=g:pymode_syntax_all
  394. let g:pymode_syntax_string_format=g:pymode_syntax_all
  395. let g:pymode_syntax_string_templates=g:pymode_syntax_all
  396. let g:pymode_syntax_doctests=g:pymode_syntax_all
  397. let g:pymode_syntax_builtin_objs=g:pymode_syntax_all
  398. let g:pymode_syntax_builtin_types=g:pymode_syntax_all
  399. let g:pymode_syntax_highlight_exceptions=g:pymode_syntax_all
  400. let g:pymode_syntax_docstrings=g:pymode_syntax_all
  401.  
  402. " Отключить autofold по коду
  403. let g:pymode_folding = 0
  404.  
  405. " Выполнение кода
  406. let g:pymode_run = 0
  407. "let g:pymode_run_bind='<F5>'
  408.  
  409. "====================================
  410.  
  411.  
  412. "====================================
  413. "    Автодополнение для Python      =
  414. "====================================
  415.  
  416. Plug 'davidhalter/jedi-vim'
  417.  
  418. autocmd FileType python setlocal completeopt-=preview
  419. let g:jedi#use_splits_not_buffers = "right"
  420. let g:jedi#auto_close_doc = 1
  421. let g:jedi#show_call_signatures = 2
  422.  
  423.  
  424. "====================================
  425. "         Форматирование кода       =
  426. "         и соответствие PEP8       =
  427. "====================================
  428.  
  429. Plug 'Vimjas/vim-python-pep8-indent'
  430. let g:pymode_indent = 0
  431.  
  432.  
  433. Plug 'tmhedberg/SimpylFold'
  434. let g:SimpylFold_docstring_preview = 1
  435.  
  436. "====================================
  437.  
  438.  
  439. "====================================
  440. "               C/C++               =
  441. "====================================
  442.  
  443. "====================================
  444. "    Автодополнение для C/C++       =
  445. "====================================
  446.  
  447. Plug 'Rip-Rip/clang_complete'
  448.  
  449. " au FileType c,cpp,objc,objcpp call <SID>ClangCompleteInit()
  450.  
  451. " Пути для поиска библиотек
  452. " let g:clang_library_path='/usr/lib/llvm-3.8/lib'
  453. let g:clang_library_path='/usr/lib/llvm-3.8/lib/libclang.so.1'
  454. " let g:clang_library_path='/usr/lib64/libclang.so.3.8'
  455.  
  456. " Отображать отладочную информацию
  457. let g:clang_debug = 0
  458.  
  459. " Не отображать окно описания
  460. set completeopt-=preview
  461.  
  462. "====================================
  463.  
  464.  
  465. "====================================
  466. "   Подсветка синтаксиса для C++    =
  467. "====================================
  468.  
  469. Plug 'octol/vim-cpp-enhanced-highlight'
  470.  
  471. let g:cpp_class_scope_highlight = 1
  472. let g:cpp_member_variable_highlight = 1
  473. let g:cpp_class_decl_highlight = 1
  474. let g:cpp_experimental_simple_template_highlight = 1
  475. let g:cpp_experimental_template_highlight = 1
  476. let g:cpp_concepts_highlight = 1
  477. let g:cpp_no_function_highlight = 1
  478.  
  479. "====================================
  480.  
  481.  
  482.  
  483. "====================================
  484. "              Arduino              =
  485. "====================================
  486.  
  487. Plug 'stevearc/vim-arduino'
  488.  
  489. " Документация
  490. " https://github.com/stevearc/vim-arduino/blob/master/doc/arduino.txt
  491.  
  492. " my_file.ino [arduino:avr:uno] [arduino:usbtinyisp] (/dev/ttyACM0:9600)
  493. " function! MyStatusLine()
  494. "   let port = arduino#GetPort()
  495. "   let line = '%f [' . g:arduino_board . '] [' . g:arduino_programmer . ']'
  496. "   if !empty(port)
  497. "     let line = line . ' (' . port . ':' . g:arduino_serial_baud . ')'
  498. "   endif
  499. "   return line
  500. " endfunction
  501. " setl statusline=%!MyStatusLine()
  502.  
  503.  
  504. " Путь к исполняемому файлу arduino ide
  505. let g:arduino_cmd = '/home/vladimirse/Files/bin/arduino-1.8.5/arduino'
  506. " Путь к каталогу arduino ide
  507. let g:arduino_dir = '/home/vladimirse/Files/bin/arduino-1.8.5'
  508. " Запуск arduino в Xvfb (требуется установка Xvfb)
  509. " let g:arduino_run_headless = 0
  510. " Отображать процесс загрузки скетча
  511. let g:arduino_args = '--verbose-build --verbose-upload'
  512. " Тип палаты по умолчанию (:ArduinoChooseBoard)
  513. "let g:arduino_board = 'arduino:avr:uno'
  514. let g:arduino_board = 'arduino:avr:nano:cpu=atmega328'
  515. " Программатор (:ArduinoChooseProgrammer)
  516. let g:arduino_programmer = 'arduino:usbtinyisp'
  517. " Команда для подключения к последовательному порту
  518. " let g:arduino_serial_cmd = 'screen {port} {baud}'
  519. " let g:arduino_serial_cmd = 'picocom /dev/ttyUSB0 -b 9600 -l'
  520. " Скорость порта
  521. let g:arduino_serial_baud = 9600
  522. " Автоматически устанавливать скорость порта, выполнив 'Serial.begin()'
  523. " let g:arduino_auto_baud = 1
  524. " Порт по умолчанию (:ArduinoChoosePort)
  525. let g:arduino_serial_port = '/dev/ttyUSB0'
  526. " Шаблолны для портов
  527. " let g:arduino_serial_port_globs = ['/dev/ttyACM*',
  528. "                                 \'/dev/ttyUSB*',
  529. "                                 \'/dev/tty.usbmodem*',
  530. "                                 \'/dev/tty.usbserial*']
  531.  
  532. " Загрузка счетча
  533.  nnoremap <C-u> <ESC>:let @a=ArduinoUpload<CR>
  534.  
  535.  
  536. "====================================
  537.  
  538.  
  539. "====================================
  540. " Инициализация менеджера плагинов  =
  541. "====================================
  542.  
  543. call plug#end()
  544.  
  545. "====================================
  546.  
  547.  
  548. "====================================
  549. "     Сборка и выполнение кода      =
  550. "====================================
  551.  
  552. augroup CBuild
  553.   autocmd!
  554. " C
  555.   autocmd filetype c   nnoremap <F5> <ESC>:!gcc -o %:p:r %<CR>
  556.   autocmd filetype c   nnoremap <F6> <ESC>:!gcc -o %:p:r %<CR>:!%:p:r<CR>
  557. " C++
  558.   autocmd filetype cpp nnoremap <F5> <ESC>:!g++ -o %:p:r %<CR>
  559.   autocmd filetype cpp nnoremap <F6> <ESC>:!g++ -o %:p:r %<CR>:!%:p:r<CR>
  560. " Python
  561.   autocmd filetype python nnoremap <F5> <ESC>:w<CR>:silent !gnome-terminal -x /bin/bash -c "python3 %:p; read -n1"<CR>
  562. " Bash
  563.   " autocmd filetype sh nnoremap <F5> <ESC>:w<CR>:silent !gnome-terminal -x /bin/bash -c "python3 %:p; read -n1"<CR>
  564. augroup END
  565.  
  566. "====================================
  567.  
  568.  
  569. "====================================
  570. "  Основные параметры конфигурации  =
  571. "====================================
  572.  
  573. " Автоматически перечитывать .vimrc после сохранения
  574. autocmd! bufwritepost .vimrc source %
  575.  
  576. " Использовать системный буфер обмена
  577.  set clipboard=unnamed
  578.  
  579. " Разрешить использование дополнительных файлов .vimrc из рабочего каталога
  580. set exrc
  581.  
  582. " Запретить из .vimrc файлов запускать оболочку, создавать файлы и т. д.
  583. set secure
  584.  
  585. " Кодировка файлов по умолчанию
  586. set encoding=utf-8
  587.  
  588. " Список кодировок для автоопределения
  589. set fileencodings=utf-8,cp1251,koi8-r,cp866
  590.  
  591. " Поддержка кириллици
  592. " set keymap=russian-jcukenwin
  593. " set iminsert=0
  594. " set imsearch=0
  595.  
  596. " Поддержка терминала 256 цветов
  597. let base16colorspace=256
  598. set t_Co=256
  599.  
  600. " Подсветка синтаксиса
  601. syntax on
  602.  
  603. " Настройка графического интерфейса
  604. "====================================
  605. if has('gui_running')
  606.     " set guioptions-=b
  607.     set guioptions-=T   " убрать панель инструментов
  608.     set guioptions-=m   " убрать меню
  609.     set guioptions-=L   " убрать полосу прокрутки слева
  610.     set guioptions+=r   " отображать полосу прокрутки справа
  611.     set columns=120
  612.     set lines=50
  613.     set linespace=0
  614.     set background=dark
  615.     colorscheme base16-default-dark
  616.     if has('gui win32')
  617.         set guifont=Consolas:h10:cANSI
  618.     else
  619.         set guifont=DroidSansMono\ Nerd\ Font\ 10
  620.     endif
  621. else
  622.     colorscheme xoria256                " цветовая схема
  623.     let g:airline_theme='distinguished' " тема оформления строки состояния
  624. endif
  625. "====================================
  626.  
  627. " Нумирация строк
  628. set number
  629.  
  630. " Выделять текущую строку
  631. set cursorline
  632.  
  633. " Автоматическое перечитываение измененного файла
  634. set autoread
  635.  
  636. " Переходить в каталог открытого файла
  637. set autochdir
  638.  
  639. " Отключить бэкапы и своп-файлы
  640. "====================================
  641. set nobackup         " не делать бекапы
  642. set noundofile       " не делать бекапы нового формата
  643. set nowritebackup    " не делать бекапы редактируемого файла
  644. set noswapfile       " не создавать фалов подкачки
  645. "====================================
  646.  
  647. " Использовать системный буфер обмена
  648. set clipboard=unnamedplus
  649.  
  650. " Количество команд хранящихся в истории
  651. set history=50
  652.  
  653. " Для медленных терминалов
  654. set ttyfast
  655.  
  656. " Параметры отступов и табуляции
  657.  
  658. " Количество пробелов, которыми символ табуляции отображается в тексте (как существующие, так и новые)
  659. set tabstop=4
  660.  
  661. " Ширина отступов добавляемая командами >> и <<
  662. set shiftwidth=4
  663.  
  664. " Позволяет удалять отступ в начале строки целеком, а не по пробелам
  665. set smarttab
  666.  
  667. " В режиме вставки заменяет табуляцию на соответствующее количество пробелов
  668. set expandtab
  669.  
  670. " Умные отступы
  671. set autoindent
  672.  
  673. " Параметры поиска по файлу
  674. "====================================
  675. "
  676. " Подсвечивать результаты поиска
  677. set hlsearch
  678.  
  679. " Инкрементальный поиск (поиск в процессе набора)
  680. set incsearch
  681.  
  682. " Игнорировать регистр букв при поиске
  683. set ignorecase
  684. set smartcase
  685.  
  686. " Создание нового окна снизу
  687. set splitbelow
  688.  
  689. "====================================
  690.  
  691.  
  692. "====================================
  693. "      Общие сочетания клавиш       =
  694. "====================================
  695.  
  696. " Бастрое сохранение Ctrl+s
  697. "====================================
  698. noremap <C-S> :update<CR>
  699. vnoremap <C-S> <C-C>:update<CR>
  700. inoremap <C-S> <C-O>:update<CR>
  701. "====================================
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement