Permalink
Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
496 lines (375 sloc) 12.6 KB
" *** КОНФИГУРАЦИЯ VIM ***
" * Общие {{{
if has("gui_running")
if has("gui_macvim")
set guifont=Menlo\ Regular:h12
set linespace=1 " same lineheight as in Terminal
else
set guifont=Courier\ New:h10:cDEFAULT
endif
set guioptions-=T "remove toolbar
set lines=40 columns=150
endif
" Отключение совместимости настроек с Vi
set nocompatible
" Отключить перерисовку экрана во время выполнения макросов и других рутинных операций
set lazyredraw
" Опции сессий
set sessionoptions=curdir,buffers,tabpages
" Работа с несколькими буферами одновременно
set hidden
" Highlight search results
set hlsearch
" Ignore case in search patterns
set ignorecase
" Override the 'ignorecase' option if the search pattern contains upper case characters
set smartcase
" Поиск по набору текста
set incsearch report=0 title
" Использовать <Backspace>, вместо <x>
set backspace=indent,eol,start whichwrap+=<,>,[,]
" History size
set undolevels=1000
" Backup files are annoying
set nobackup
" Не создавать свап файл
set noswapfile
" Disable error messages
set novb
" Скроллинг текста
set scrolljump=7
set scrolloff=7
" Поддержка мыши
set mouse=a
set mousemodel=popup
" }}}
" * Vundle {{{
filetype off
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
" required!
Plugin 'gmarik/Vundle.vim'
" My Plugins here:
" NOTE: comments after Plugin command are not allowed..
" Мой автокоммит
" if has('python')
" Plugin 'chuwy/vim-precocious'
" endif
" Моя цветовая схема
Plugin 'chuwy/vim-wooky-theme'
" original repos on github
" Интеграция с git
Plugin 'tpope/vim-fugitive'
" Git diff lines
Plugin 'airblade/vim-gitgutter'
" История изменений
Plugin 'sjl/gundo.vim'
" Файловое дерево
Plugin 'scrooloose/nerdtree'
" Проблема NERTree и табов
Plugin 'jistr/vim-nerdtree-tabs'
" " Markdown
Plugin 'godlygeek/tabular'
Plugin 'plasticboy/vim-markdown'
" RST (оригинал: 'Rykka/riv.vim')
Plugin 'chuwy/riv.vim'
" Комментер
Plugin 'scrooloose/nerdcommenter'
" Автокомплит
Plugin 'vim-scripts/AutoComplPop'
" Coffeescript
Plugin 'kchmck/vim-coffee-script.git'
" Vimux - связь с tmux
Plugin 'jpalardy/vim-slime'
" Крутая строка состояния
Plugin 'bling/vim-airline'
" Список окружения (нужен ctags)
Plugin 'majutsushi/tagbar'
" Проблема с клавишами в screen-256color
Plugin 'nacitar/terminalkeys.vim'
" Цветовая схема на всякий случай
Plugin 'vim-scripts/xoria256.vim'
" Linter
Plugin 'scrooloose/syntastic'
" vim-scripts repos
Plugin 'L9'
" Хлебные крошки
Plugin 'kien/ctrlp.vim'
" IDE
Plugin 'klen/python-mode'
" Марки на стеройдах
Plugin 'kshenoy/vim-signature'
" Shows Highlight group under cursor
Plugin 'gerw/vim-HiLinkTrace'
" Движок для сниппетов
Plugin 'MarcWeber/vim-addon-mw-utils'
Plugin 'tomtom/tlib_vim'
Plugin 'garbas/vim-snipmate'
Plugin 'honza/vim-snippets'
" Подсветка Dockerfile
Plugin 'ekalinin/Dockerfile.vim'
" Scala
Plugin 'derekwyatt/vim-scala'
" JS
Plugin 'marijnh/tern_for_vim'
Plugin 'jelera/vim-javascript-syntax'
" Haskell
if executable('cabal') " Ok, I'm use Haskell here
" Completion
Plugin 'eagletmt/neco-ghc'
" Запуск програм в shell (требуется для ghc-mod)(не забудь сделать make)
Plugin 'Shougo/vimproc.vim'
" Lint и проверка типов
Plugin 'eagletmt/ghcmod-vim'
" Поиск модулей
Plugin 'Twinside/vim-hoogle'
" Autoreplace with match symbols
Plugin 'enomsg/vim-haskellConcealPlus'
let hscoptions="q"
endif
call vundle#end() " required
filetype plugin indent on " required
" }}}
" * Настройка плагинов {{{
let g:gundo_help = 0
let NERDTreeIgnore = ['\.pyc$', '\.pyo$'] " Не выводить .pyc файлы
let NERDTreeShowBookmarks=1
let g:tagbar_autofocus = 1
" Enable the list of buffers
let g:airline#extensions#tabline#enabled = 1
" Show just the filename
let g:airline#extensions#tabline#fnamemod = ':t'
" Окно линтеров мешает
let g:pymode_lint_cwindow = 0
let g:pymode_rope = 0
let g:Precocious_path_parts = ['*/notebook/*.rst']
" Правильный фолдинг
let rst_syntax_folding = 0
let g:riv_fold_level = 0
let g:riv_fold_auto_update = 0
let g:riv_default_path = '~/.vim/riv'
let g:riv_auto_fold_force = 0
" Совместимость riv и SnipMate в .rst-файлах
let g:riv_i_tab_pum_next = 0
let g:riv_i_tab_user_cmd = "\<c-g>u\<c-r>=snipMate#TriggerSnippet()\<cr>"
" Проблемы с отрисовкой юникода. Вкючается \g
let g:gitgutter_enabled = 0
" Tmux
let g:slime_target = "tmux"
let g:slime_python_ipython = 1
" Syntastic
let g:syntastic_always_populate_loc_list = 1
let g:syntastic_auto_loc_list = 0
let g:syntastic_check_on_open = 1
let g:syntastic_check_on_wq = 0
map <Leader>s :SyntasticCheck<CR>
" }}}
" * Кодировки {{{
" Кодировка текста по умолчанию
set termencoding=utf-8
" Возможные кодировки файлов, если файл не в unicode кодировке, то будет использоваться cp1251
set fileencodings=utf8,cp1251
" Меню для смены кодировки по Ctrl+C
set wildmenu
set wcm=<Tab>
menu Encoding.windows-1251 :e! ++enc=cp1251<CR>
menu Encoding.koi8-r :e! ++enc=koi8-r<CR>
menu Encoding.utf-8 :e! ++enc=utf-8 <CR>
map <C-C> :emenu Encoding.<TAB>
" }}}
" * Настройки Python {{{
set t_Co=256
" Табуляция равна 4-ем пробелам
set tabstop=4
set softtabstop=4
set expandtab
set smarttab
set textwidth=79
set shiftround
" Двигать блоки в визуальном режиме на 4 пробела с помощью клавиш < и >
set shiftwidth=4
" Включить автоотступ
set autoindent
" Полная подсветка синтаксиса языка
let python_highlight_all = 1
"autocmd FileType python source ~/.vim/scripts/python.vim
" Автоматический отступ
autocmd BufRead *.py set smartindent cinwords=if,elif,else,for,while,try,except,finally,def,class
" Удаление лишних пробелов
autocmd BufWritePre *.py normal m`:%s/\s\+$//e ``
" Автоподсветка файла истории
au BufReadPost .pythonhistory set syntax=python
" With absence of ctags this hack help navigate to module via gf
if !has("win32")
python << EOF
import os, sys, vim
for p in sys.path:
if os.path.isdir(p):
vim.command(r"set path+=%s" % (p.replace(" ", r"\ ")))
EOF
endif
" Use native behaviour to navigate sources
autocmd FileType python map <buffer> <C-]> gf
" }}}
" * Настройки ReST {{{
autocmd FileType rst set wrap " Переносить слова и строки
autocmd FileType rst set linebreak " Так удобнее смотреть diff'ы
autocmd FileType rst set wrapmargin=0
autocmd FileType rst set textwidth=0
autocmd FileType rst set nofoldenable " riv добавляет ненужный фолдинг при открытии (настройки не помогают)
" }}}
" * Настройки omnicompletion и синтаксиса {{{
autocmd FileType python set omnifunc=pythoncomplete#Complete
autocmd FileType html set omnifunc=htmlcomplete#CompleteTags
autocmd FileType css set omnifunc=csscomplete#CompleteCSS
autocmd FileType xml set omnifunc=xmlcomplete#CompleteTags
autocmd FileType c set omnifunc=ccomplete#Complete
" autocmd FileType javascript set omnifunc=javascriptcomplete#CompleteJS " use tern instead
autocmd BufRead,BufNewFile *.hs set omnifunc=necoghc#omnifunc
" Need to create tags for Haskell stdlib
if executable('cabal')
autocmd BufRead,BufNewFile *.hs set tags=$HOME/workspace/packages-base/tags
" Count dots as part of word. It allows navigate to right ctag
autocmd BufRead,BufNewFile *.hs set iskeyword=a-z,A-Z,_,.,39
endif
" }}}
" Внешний вид {{{
" Подсветка синтаксиса
syntax on
" Цветовая схема
colorscheme Wooky
" Метод сворачивания текста
set foldmethod=marker
" Отступ перед нумерацией строк
set foldcolumn=0
" Нумерация строк
set nu
" Отображение курсора все время
set ruler
" Высота строки комманд
set ch=1
" Показывать незавершенные команды
set showcmd showmatch showmode
" Подсветка строки, в которой находится в данный момент курсор
set cursorline
" Формат строки состояния
set laststatus=2
" Перенос строк
set nowrap
" See which lines are longer than 80 characters.
set colorcolumn=81
" }}}
" Горячие клавиши {{{
" Run the current file with rspec
map <Leader>p :Gpush<CR>
map <Leader>u :Gpull<CR>
" Отобразить изменения репозитория
map <Leader>g :GitGutterToggle<CR>
" Проверить тип подвыражения (ghcmod-vim)
autocmd FileType haskell map <buffer> <Leader>ht :GhcModType<CR>
" Переключить тип haskell/haskell.script (для отправки в GHCi через vim-slime)
autocmd FileType haskell map <buffer> <Leader>hs :set ft=haskell.script<CR>
autocmd FileType haskell.script map <buffer> <Leader>hs :set ft=haskell<CR>
" Search in Hoogle
autocmd BufNewFile,BufRead *.hs map <buffer> K :HoogleInfo<CR>
autocmd FileType javascript map <buffer> K :TernDoc<CR>
autocmd FileType javascript map <buffer> KK :TernDocBrowse<CR>
autocmd FileType javascript call JavaScriptFold()
autocmd FileType java map <buffer> K :JavaDocPreview <CR>
autocmd FileType java map <buffer> <C-]> :JavaSearchContext <CR>
autocmd FileType java map <leader>e :call system('/Users/chuwy/.local/eclipse/eclimd -b')<CR>
" Показать все метки
map <Leader>m :marks<CR>
" Move to windows
nmap <C-h> <C-w>h
nmap <C-j> <C-w>j
nmap <C-k> <C-w>k
nmap <C-l> <C-w>l
" Показать все метки
map <Leader>m :marks<CR>
" Ускоренное передвижение по тексту
nmap <C-H> 5h
nmap <C-J> 5j
nmap <C-K> 5k
nmap <C-L> 5l
" Открыть NERDTree
if has("win32")
map <F3> :NERDTreeToggle X:\workspace<cr>
vmap <F3> <esc>:NERDTreeToggle X:\workspace<cr>v
imap <F3> <esc>:NERDTreeToggle X:\workspace<cr>i
" For URLs on Win32
let g:netrw_browsex_viewer = "firefox.exe"
else
map <F3> :NERDTreeToggle ~/workspace<cr>
vmap <F3> <esc>:NERDTreeToggle ~/workspace<cr>v
imap <F3> <esc>:NERDTreeToggle ~/workspace<cr>i
" For URLs on OSX
let g:netrw_browsex_viewer = "open"
endif
" Don't know why it didn't worked in reST link on OS X without this function
function! HandleURL()
let s:uri = matchstr(getline("."), '[a-z]*:\/\/[^ >,;]*')
echo s:uri
if s:uri != ""
silent exec "!".g:netrw_browsex_viewer." ".s:uri
else
echo "No URI found in line."
endif
endfunction
map gx :call HandleURL()<cr>:redraw!<cr>
" Закрыть буфер
nmap <C-`> :bd<cr>
vmap <C-`> <esc>:bd<cr>v
imap <C-`> <esc>:bd<cr>i
" Ходим по буферам
nnoremap <expr> <right> (len(filter(range(0, bufnr('$')), 'buflisted(v:val)')) > 1 ? ":bn\<cr>" : "\<right>")
nnoremap <expr> <left> (len(filter(range(0, bufnr('$')), 'buflisted(v:val)')) > 1 ? ":bp\<cr>" : "\<left>")
" PyDoc
map gh <Leader>pW
" TagList
map <F4> :TagbarToggle<CR>
" Gundo. Undo changes manager
nnoremap <F5> :GundoToggle<CR>
map <Leader>t :TbToggle<cr>
" {{{ Cyrillic mappings
map н y
map г U
map ш i
map Ш I
map щ o
map Щ O
map з p
map З P
map ф a
map ы S
map в d
map В D
map п g
map П G
map р h
map о j
map л k
map д l
map я z
map Я Z
map ч x
map Ч X
map с c
map м v
map М V
map т n
" }}}
" }}}
" Автоматизация {{{
let coffee_compiler = '/Users/chuwy/.npm/coffee-script/1.3.1/package/bin/coffee'
" ХЗ
set completeopt=menuone,longest " preview для окна с документацией
map ;e :w<CR>:exe ":!ipython " . getreg("%") . "" <CR>
" You can override the read-only permissions by typing :w!!
cmap w!! %!sudo tee > /dev/null %
" Keep text selected after indentation
vnoremap < <gv
vnoremap > >gv
" Get highlight type under cursor
map <F10> :echo "hi<" . synIDattr(synID(line("."),col("."),1),"name") . '> trans<' . synIDattr(synID(line("."),col("."),0),"name") . "> lo<" . synIDattr(synIDtrans(synID(line("."),col("."),1)),"name") . ">"<CR>
" }}}