Advertisement
Guest User

vimrc

a guest
May 28th, 2014
534
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VIM 19.41 KB | None | 0 0
  1. " Включаем несовместимость настроек с Vi (ибо Vi нам и не понадобится).
  2. set nocompatible
  3.  
  4. "Выключаем ~ резервные файлы
  5. set nobackup
  6.  
  7. " Показывать положение курсора всё время.
  8. set ruler
  9.  
  10. " Показывать незавершённые команды в статусбаре
  11. set showcmd
  12.  
  13. " Включаем нумерацию строк
  14. set nu
  15.  
  16. " Поиск по набору текста
  17. set incsearch
  18.  
  19. " подсвечивать поиск
  20. set hls
  21. " Игнорировать регистр при поиске
  22. set ic
  23.  
  24. " Поддержка мыши
  25. set mouse=a
  26. set mousemodel=popup
  27.  
  28. " Кодировка текста по умолчанию
  29. set termencoding=utf-8
  30.  
  31. " Не выгружать буфер, когда переключаемся на другой
  32. " Это позволяет редактировать несколько файлов в один и тот же момент без необходимости сохранения каждый раз
  33. " когда переключаешься между ними
  34. set hidden
  35.  
  36. " Влючить подстветку синтаксиса
  37. syntax on
  38.  
  39. " Размер табулации по умолчанию
  40. set tabstop=4
  41. set shiftwidth=4
  42. set smarttab
  43. "set expandtab
  44.  
  45. "Включаем отображение непечатаемых символов
  46. set list
  47. "Отображаем только табуляцию
  48. :set lcs=tab:·\
  49.  
  50. "Всегда показывать строку состояния
  51. set laststatus=2
  52.  
  53. "Настройка статусной строки
  54. set statusline=%f%m%r%h%w\ %y\ ff:%{&ff}\ enc:%{&enc}\ fenc:%{&fenc}%=Строка:\ %2l/%L\ \ \ Колонка:%2c\ [%2p%%]
  55. ".vimrc [vim] enc:utf-8 ff:unix fenc:utf-8       (ch: 92 hex:5C) col:26 line:158/168 [94%]
  56. "%f - имя файла и путь к нему, относительно текущего каталога
  57. "%m - флаг модификации/изменения, выводит [+] если буфер изменялся
  58. "%r - флаг только для чтения, выводит [RO] если буфер только для чтения
  59. "%h - флаг буфера помощи, выводит [help] если буфер со справкой vim
  60. "%w - флаг окна превью, выводит [Preview]
  61. "'\ ' - экранированный символ пробела. Пробел можно указывать только экранированным, иначе ошибка синтаксиса
  62. "%y - тип файла в буфере, например [vim]
  63. "enc:%{&enc} - отображение кодировки encoding (enc). Обратите внимание: enc: - текст, %{&enc} - вывод значения внутренней переменной (enc)
  64. "ff:%{&ff} - отображение формата перевода строки fileformat (ff)
  65. "fenc:%{&fenc} - отображение кодировки сохранения в файл fileencoding (fenc)
  66. "%= - далее выравнивать вправо
  67. "ch:%3b - код символа под курсором в десятичной чистеме счисления, минимум 3 символа
  68. "hex:%2B - код символа под курсором в шестнадцатеричной системе счисления, минимум 2 символа
  69. "col:%2c - курсор в колонке, минимум 2 символа
  70. "line:%2l/%L - курсор в строке (минимум 2 символа)/всего строк в файле
  71. "%2p - число % в строках, где находится курсор (0% - начало файла; 100% - конец файла), минимум 2 символа
  72. "%% - т.к. символ '%' используется для переменных, то вывод символа '%' в строке статуса нужно делать особым образом - %%
  73.  
  74. " Включаем умные отспупы ( например, автоотступ после {)
  75. set smartindent
  76.  
  77. " Перенос строк
  78. set wrap
  79.  
  80. " Перенос по словам
  81. set linebreak
  82.  
  83. " Показывать первую парную скобку после ввода второй
  84. set showmatch
  85.  
  86. " Перечитывать изменённые файлы автоматически
  87. set autoread
  88.  
  89. " Использовать больше цветов в терминале
  90. set t_Co=256
  91.  
  92. colors mysheme
  93.  
  94. " Переход в папку файла
  95. set browsedir=current
  96.  
  97. " Вместо писка бипером мигать курсором при ошибках ввода
  98. set visualbell
  99.  
  100. " Включить сохранение резервных копий
  101. set backup
  102.  
  103. " Хранить историю изменений числом N
  104. set undolevels=1024
  105.  
  106. " Включение функций, зависящих от типа файла
  107. filetype on
  108. filetype plugin on
  109. filetype indent on
  110.  
  111. " Фикс для использования русской раскладки в командном режиме
  112. set langmap=ёйцукенгшщзхъфывапролджэячсмитьбюЁЙЦУКЕHГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ;`qwertyuiop[]asdfghjkl\\;'zxcvbnm\\,.~QWERTYUIOP{}ASDFGHJKL:\\"ZXCVBNM<>
  113.  
  114. " Переходить на следующую строку, когда текущая закончилась
  115. set whichwrap=<,>,[,],h,l
  116.  
  117. " Автоматически записывть изменения в файл при переходе к другому
  118. set autowrite
  119.  
  120. " Всегда отображать строку с табами
  121. set stal=2
  122.  
  123. " Каталог для сохранения swp-файлов
  124. set dir=~/.vim/swapfiles
  125.  
  126. " Отключение ~ бэкапов
  127. set nobackup
  128.  
  129. " Фикс для клавиши backspace
  130. set backspace=2
  131.  
  132. " Установка принтера по умолчанию
  133. set pdev=MDCP7057
  134.  
  135. " Колонка, чтобы показывать плюсики для скрытия блоков кода
  136. set foldcolumn=1
  137.  
  138. "подсветка текущей строки
  139. set cursorline
  140.  
  141.  
  142. "Опции для графического режима (gvim)
  143. if has ("gui_running")
  144.     " Антиалиасинг для шрифтов
  145.     set antialias
  146.     " Отключение графических табов
  147.     set guioptions-=e
  148.     " Отключение панели инструментов
  149.     set guioptions-=T
  150.     " Использовать консольные диалоги вместо графических
  151.     set guioptions+=c
  152.    "Так не выводятся ненужные escape последовательности в :shell
  153.    set noguipty
  154. endif
  155.  
  156. " При редактировании файла всегда переходить на последнюю известную
  157. "позицию курсора. Если позиция ошибочная - не переходим.
  158. autocmd BufReadPost *
  159.  \ if line("'\"") > 0 && line("'\"") <= line("$") |
  160.   \   exe "normal! g`\"" |
  161.   \ endif
  162.  
  163. " Подсветка пробелов на конце строки
  164. au BufNewFile,BufRead * let b:mtrailingws=matchadd('ErrorMsg', '\s\+$', -1)
  165. " Подсветка табов перед которыми\после которых есть проблеы
  166. "au BufNewFile,BufRead * let b:mtabbeforesp=matchadd('ErrorMsg', '\v(\t+)\ze( +)', -1)
  167. "au BufNewFile,BufRead * let b:mtabaftersp=matchadd('ErrorMsg', '\v( +)\zs(\t+)', -1)
  168.  
  169. " Настройка отображения табов
  170. function MyTabLine()
  171.     let s = ''
  172.     for i in range(tabpagenr('$'))
  173.         if i + 1 == tabpagenr()
  174.             let s .= '%#TabLineSel#'
  175.         else
  176.             let s .= '%#TabLine#'
  177.         endif
  178.  
  179.         let s .= '%' . (i + 1) . 'T'
  180.  
  181.         let s .= ' %{MyTabLabel(' . (i + 1) . ')} '
  182.     endfor
  183.  
  184.     let s .= '%#TabLineFill#%T'
  185.  
  186.     if tabpagenr('$') > 1
  187.         let s .= '%=%#TabLine#%999Xclose'
  188.     endif
  189.  
  190. return s
  191. endfunction
  192.  
  193. function MyTabLabel(n)
  194.     let buflist = tabpagebuflist(a:n)
  195.     let winnr = tabpagewinnr(a:n)
  196.     let label = fnamemodify(bufname(buflist[winnr - 1]), ':t')
  197.  
  198. if label == ''
  199.     if &buftype == 'quickfix'
  200.         let label = '[Quickfix List]'
  201.     else
  202.         let label = 'NoName'
  203.     endif
  204. endif
  205.  
  206. if getbufvar(buflist[winnr - 1], "&modified")
  207.     let label = "+".label
  208. endif
  209.  
  210. let label = a:n.": ".label
  211.  
  212. return label
  213. endfunction
  214.  
  215. set tabline=%!MyTabLine()
  216.  
  217. set guifont=Pragmata\ Pro\ 11
  218.  
  219. "|||||||||||||||||||||||||||||||||||||||||||||||||
  220. "Горячие клавиши
  221. "|||||||||||||||||||||||||||||||||||||||||||||||||
  222.  
  223. " Быстрое сохранение
  224. nmap <F2> :w<cr>
  225. vmap <F2> <esc>:w<cr>i
  226. imap <F2> <esc>:w<cr>i
  227.  
  228. " Сессии
  229. nmap <F3> :SessionSave<cr>
  230. vmap <F3> <esc>:SessionSave<cr>
  231. imap <F3> <esc>:SessionSave<cr>
  232.  
  233. nmap <C-F3> :SessionOpenLast<cr>
  234. vmap <C-F3> <esc>:SessionOpenLast<cr>
  235. imap <C-F3> <esc>:SessionOpenLast<cr>
  236.  
  237. " Выход без сохранения изменений
  238. nmap <F4> :q!<cr>
  239. vmap <F4> <esc>:q!<cr>
  240. imap <F4> <esc>:q!<cr>
  241.  
  242. " Фикс для длинных строк
  243. nmap j gj
  244. nmap <DOWN> gj
  245. nmap k gk
  246. nmap <UP> gk
  247.  
  248. " Новый таб
  249. nmap <C-UP> :tabnew<cr>:Startify<cr>
  250. vmap <C-UP> <esc>:tabnew<cr>:Startify<cr>
  251. imap <C-UP> <esc>:tabnew<cr>:Startify<cr>
  252.  
  253. " Следующи таб
  254. nmap <C-RIGHT> :tabnext<cr>
  255. vmap <C-RIGHT> <esc>:tabnext<cr>
  256. imap <C-RIGHT> <esc>:tabnext<cr>
  257.  
  258. " Предыдущий таб
  259. nmap <C-LEFT> :tabprev<cr>
  260. vmap <C-LEFT> <esc>:tabprev<cr>
  261. imap <C-LEFT> <esc>:tabprev<cr>
  262.  
  263. " Закрыть таб
  264. nmap <C-DOWN> :tabclose<cr>
  265. vmap <C-DOWN> <esc>:tabclose<cr>
  266. imap <C-DOWN> <esc>:tabclose<cr>
  267.  
  268.  
  269.  
  270.  
  271. "|||||||||||||||||||||||||||||||||||||||||||||||||
  272. "Настройки плагинов
  273. "|||||||||||||||||||||||||||||||||||||||||||||||||
  274.  
  275. "------------------------------------------------------------------------------
  276. "GUNDO - плагин для управления историей изменений в псевдографическом формате.
  277. "Есть в AUR
  278.  
  279. " Запуск и скрытие gundo
  280. nmap <F5> :GundoToggle<cr>
  281. vmap <F5> <esc>:GundoToggle<cr>
  282. imap <F5> <esc>:GundoToggle<cr>
  283.  
  284.  
  285. "------------------------------------------------------------------------------
  286. "TAGLIST - плагин для отображения всех классов и функций в проекте
  287. "Есть в AUR
  288.  
  289. let g:Tlist_Show_One_File=1                         " показывать информацию только по одному файлу
  290. let g:Tlist_GainFocus_On_ToggleOpen=1               " получать фокус при открытии
  291. let g:Tlist_Auto_Highlight_Tag=1                    " подсвечивать тег, на котором сейчас находимся
  292. let Tlist_Use_Right_Window=1                        " окно тегов располагается справа
  293. let g:Tlist_Close_On_Select=1                       " закрывать окно после выбора тега
  294.  
  295. " Запуск и скрытие taglist
  296. nmap <C-F7> :TlistToggle<cr>:TlistUpdate<cr>
  297. vmap <C-F7> <esc>:TlistToggle<cr>:TlistUpdate<cr>
  298. imap <C-F7> <esc>:TlistToggle<cr>:TlistUpdate<cr>
  299.  
  300.  
  301. "------------------------------------------------------------------------------
  302. "NERDTREE - древо файлов сбоку
  303. "Есть в AUR
  304.  
  305. let NERDTreeMouseMode=2                             " включение мыши NERDTree
  306. let NERDTreeQuitOnOpen=1                            " автоматически скрывать NERDTree после открытия файла
  307.  
  308. " Запуск и скрытие NERDTree
  309. nmap <F7> :NERDTreeToggle<cr>
  310. vmap <F7> <esc>:NERDTreeToggle:TlistToggle<cr>
  311. imap <F7> <esc>:NERDTreeToggle:TlistToggle<cr>
  312.  
  313.  
  314.  
  315. "------------------------------------------------------------------------------
  316. "NERDCOMMENTER - плагин для комментирования\расскоментирования строк
  317. "Есть в AUR
  318.  
  319. " Комментирование\расскоментирования строки
  320. nmap <F6> :call NERDComment(0, "toggle")<cr>
  321. vmap <F6> <esc>:call NERDComment(0, "toggle")<cr>
  322. imap <F6> <esc>:call NERDComment(0, "toggle")<cr>
  323.  
  324.  
  325. "------------------------------------------------------------------------------
  326. "BUFEXPLORER - более удобная работа с буфферами
  327. "Есть в AUR
  328. let g:bufExplorerShowNoName=0                       " показывать безымянные буффера
  329.  
  330. " Обзор буфферов
  331. nmap <C-S-UP> :BufExplorer<cr>
  332. vmap <C-S-UP> <esc>:BufExplorer<cr>
  333. imap <C-S-UP> <esc>:BufExplorer<cr>
  334.  
  335. " Приведущий буффер
  336. nmap <C-S-LEFT> :bp<cr>
  337. vmap <C-S-LEFT> <esc>:bp<cr>
  338. imap <C-S-LEFT> <esc>:bp<cr>
  339.  
  340. " Следующий буффер
  341. nmap <C-S-RIGHT> :bn<cr>
  342. vmap <C-S-RIGHT> <esc>:bn<cr>
  343. imap <C-S-RIGHT> <esc>:bn<cr>
  344.  
  345. " Закрыть буффер
  346. nmap <C-S-DOWN> :bd<cr>
  347. vmap <C-S-DOWN> <esc>:bd<cr>
  348. imap <C-S-DOWN> <esc>:bd<cr>
  349.  
  350. "------------------------------------------------------------------------------
  351. "PROJECT - управление проектами
  352.  
  353. let g:proj_window_width=45                          " ширина панели проектов
  354.  
  355. " Запуск и скрытие древа проектов
  356. nmap <F8> <Plug>ToggleProject<cr>
  357. vmap <F8> <esc><Plug>ToggleProject<cr>
  358. imap <F8> <esc><Plug>ToggleProject<cr>
  359.  
  360. "------------------------------------------------------------------------------
  361. "TagHighlight - генерирует дополнительные теги для подсветки синтаксиса на
  362. "основе файлов проекта.
  363.  
  364. " Перегенерировать теги
  365. nmap <S-F7> :UpdateTypesFile<cr>
  366. vmap <S-F7> <esc>:UpdateTypesFile<cr>
  367. imap <S-F7> <esc>:UpdateTypesFile<cr>
  368.  
  369. "------------------------------------------------------------------------------
  370. "startify няшный старотовый экран.
  371. let g:startify_list_order = ['files', 'bookmarks']
  372. let g:startify_bookmarks = [ '~/.vimrc', '~/.config/awesome/rc.lua', '~/.Xdefaults', '~/.zshrc' ]
  373.  
  374. "------------------------------------------------------------------------------
  375. "syntastic - Подсвечивание ошибок
  376. let g:syntastic_warning_symbol = 'WA'
  377. let g:syntastic_error_symbol = 'ER'
  378.  
  379. "let g:loaded_syntastic_cpp_gcc_checker = 1
  380. "let g:syntastic_cpp_compiler = 'g++'
  381.  
  382.  
  383. "------------------------------------------------------------------------------
  384. "rainbow parentheses - Подсвечивание парных скобок.
  385. let g:rbpt_colorpairs = [
  386.     \ ['brown',       'RoyalBlue3'],
  387.     \ ['Darkblue',    'SeaGreen3'],
  388.     \ ['darkgray',    'DarkOrchid3'],
  389.     \ ['darkgreen',   'firebrick3'],
  390.     \ ['darkcyan',    'RoyalBlue3'],
  391.     \ ['darkred',     'SeaGreen3'],
  392.     \ ['darkmagenta', 'DarkOrchid3'],
  393.     \ ['brown',       'firebrick3'],
  394.     \ ['gray',        'RoyalBlue3'],
  395.     \ ['black',       'SeaGreen3'],
  396.     \ ['darkmagenta', 'DarkOrchid3'],
  397.     \ ['Darkblue',    'firebrick3'],
  398.     \ ['darkgreen',   'RoyalBlue3'],
  399.     \ ['darkcyan',    'SeaGreen3'],
  400.     \ ['darkred',     'DarkOrchid3'],
  401.     \ ['red',         'firebrick3'],
  402.     \ ]
  403.  
  404. let g:rbpt_max = 16
  405. let g:rbpt_loadcmd_toggle = 0
  406.  
  407. au VimEnter * RainbowParenthesesToggle
  408. au Syntax * RainbowParenthesesLoadRound
  409. au Syntax * RainbowParenthesesLoadSquare
  410. au Syntax * RainbowParenthesesLoadBraces
  411.  
  412. let g:C_CplusCompiler = 'clang++'
  413.  
  414. " Настройка gundo
  415. let g:gundo_preview_bottom = 1 " показывать diff внизу окна
  416. let g:gundo_width = 30 " ширина показа дерева
  417. let NERDShutUp=1 " отключения конфликта с дополнением NERD Commenter
  418. "------------------------------------------------------------------------------
  419. "Vimwiki
  420.  
  421. "let g:vimwiki_list = [{'path': '~/.vim/wiki'}]
  422. "let g:vimwiki_list = '/home/najlus/.vim/wiki/index.wiki'
  423.  
  424. "let wiki = {}
  425. "let wiki.path = '~/.vim/wiki/'
  426. "let wiki.nested_syntaxes = {'python': 'python', 'c++': 'cpp'}
  427. "let g:vimwiki_list =
  428.  
  429.  
  430. let g:WikiGlobal = {'path': '~/.vim/wiki'}
  431. let g:WikiGlobal.nested_syntaxes = {'c': 'c', 'c++': 'cpp', 'perl': 'perl', 'python': 'python', 'sh': 'sh'}
  432. let g:vimwiki_list = [g:WikiGlobal]
  433.  
  434. "------------------------------------------------------------------------------
  435. "Neo Bundle
  436.  set nocompatible               " Be iMproved
  437.  
  438.  if has('vim_starting')
  439.    set runtimepath+=~/.vim/bundle/neobundle.vim/
  440.  endif
  441.  
  442.  call neobundle#rc(expand('~/.vim/bundle/'))
  443.  
  444.  " Let NeoBundle manage NeoBundle
  445.  NeoBundleFetch 'Shougo/neobundle.vim'
  446.  
  447. NeoBundle 'scrooloose/nerdtree'          "Древо каталогов
  448. NeoBundle 'scrooloose/nerdcommenter'     "Комментирование\раскоментирование
  449. NeoBundle 'mhinz/vim-startify'           "Классный стартовый экран
  450. NeoBundle 'vim-scripts/c.vim'            "Работа с C и С++
  451. NeoBundle 'corntrace/bufexplorer'        "Управление буферами
  452. NeoBundle 'vim-scripts/TagHighlight'     "Подсветка собственных классов и функций
  453. NeoBundle 'vim-scripts/Syntastic'        "Выделение ошибок
  454. NeoBundle 'synboo/project.vim'           "Управление проектами
  455. NeoBundle 'sjl/gundo.vim'                "Менеджер отмены действий
  456. NeoBundle 'Rip-Rip/clang_complete'       "Автодополнение C++
  457. NeoBundle 'msanders/snipmate.vim'        "Сниплеты
  458. NeoBundle 'vim-scripts/taglist.vim'      "Список классов, функций и прочего
  459. NeoBundle 'rainbow_parentheses.vim'      "Подсветка парных скобок разными цветами
  460. NeoBundle 'gregsexton/MatchTag'          "Подсветка парного тега
  461. NeoBundle 'vim-scripts/Align'            "Выранивание
  462. NeoBundle 'vim-scripts/hexHighlight.vim' "Раскрашивание hex кодов
  463. "NeoBundle 'Valloric/YouCompleteMe'      "Автодополнение
  464. NeoBundle 'vim-scripts/a.vim'            "Переключение между заголовочным файлом и файлом с кодом
  465. NeoBundle 'tpope/vim-surround'           "Быстрое удаление\изменение\добавление кавычек и тегов
  466. NeoBundle 'tpope/vim-repeat'             "Позволяет применить предыдущую операцию к текущему местоположению курсора при нажатии '.'
  467. NeoBundle 'vim-scripts/sessionman.vim'   "Сессии в vim
  468. NeoBundle 'vim-scripts/Marks-Browser'    "Отображение сделанных меток
  469. "NeoBundle 'Shougo/neocomplete.vim'       "Автодополнение
  470. NeoBundle 'vim-scripts/vimwiki'          "Вики для vim
  471.  
  472. "NeoBundle 'aperezdc/vim-template'        "Шаблоны новых файлов
  473.  
  474.  
  475.  
  476. "let g:neocomplete#enable_at_startup = 1
  477. "let g:neocomplete#auto_completion_start_lengt = 2
  478. "let g:neocomplete#min_keyword_length = 2
  479.  
  480. "let g:templates_plugin_loaded = 0 "to skip loading of this plugin.
  481. "let g:templates_no_autocmd = 1    "to disable automatic insertion of template in new files.
  482.  
  483.  
  484.  
  485.  
  486.   filetype plugin indent on     " Required!
  487.  "
  488.  " Brief help
  489.  " :NeoBundleList          - list configured bundles
  490.  " :NeoBundleInstall(!)    - install(update) bundles
  491.  " :NeoBundleClean(!)      - confirm(or auto-approve) removal of unused bundles
  492.  
  493.  " Installation check.
  494.  NeoBundleCheck
  495.  
  496.  
  497. let g:inccomplete_findcmd = ''
  498.  
  499. let g:inccomplete_addclosebracket = ''
  500.  
  501. let g:inccomplete_showdirs = 1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement