VIM IDE без юмора
Все же я вырос до того уровня, что перешел на vim, и решил его сконфигурировать для веб-разработок,
Мой конфиг файл настроен именно под себя.
Использую менеджер плагинов Vundle
Что я использую за плагины:
- NERDTree (preservim/nerdtree) — Боковая панель отображения дерева каталогов
- vim-devicons (ryanoasis/vim-devicons) — Иконки типов файлов для дерева каталогов
- цветовая схема (dracula/vim)
- Функции IDE (neoclide/coc.nvim) — дает функции IDE редактору vim
Нюансы установки поддержки различных языком программирования. Это нужно ввести в командном режиме vim
:CocInstall coc-js coc-html coc-sh coc-tserver coc-sh coc-phpls
Мой .vimrc
set encoding=utf-8 set nocompatible filetype off set rtp+=~/.vim/bundle/Vundle.vim call vundle#begin() Plugin 'VundleVim/Vundle.vim' Plugin 'preservim/nerdtree' Plugin 'ryanoasis/vim-devicons' Plugin 'dracula/vim', { 'name': 'dracula' } Plugin 'neoclide/coc.nvim', {'branch': 'release'} call vundle#end() filetype plugin indent on nnoremap <leader>n :NERDTreeFocus<CR> nnoremap <C-n> :NERDTree<CR> nnoremap <C-t> :NERDTreeToggle<CR> nnoremap <C-f> :NERDTreeFind<CR> autocmd VimEnter * NERDTree autocmd VimEnter * NERDTree | wincmd p set completeopt=noinsert,menuone,noselect syntax enable colorscheme dracula if has('gui_running') set lines=60 columns=50 linespace=0 if has('gui_win32') set guifont=DejaVu_Sans_Mono:h10:cANSI else set guifont=DejaVu\ Sans\ Mono\ 10 endif endif set nowrap set expandtab set tabstop=2 set shiftwidth=2 set hidden set nobackup set nowritebackup set cmdheight=2 set updatetime=300 set shortmess+=c if has("patch-8.1.1564") set signcolumn=number else set signcolumn=yes endif inoremap <silent><expr> <TAB> \ pumvisible() ? "\<C-n>" : \ <SID>check_back_space() ? "\<TAB>" : \ coc#refresh() inoremap <expr><S-TAB> pumvisible() ? "\<C-p>" : "\<C-h>" function! s:check_back_space() abort let col = col('.') - 1 return !col || getline('.')[col - 1] =~# '\s' endfunction if has('nvim') inoremap <silent><expr> <c-space> coc#refresh() else inoremap <silent><expr> <c-@> coc#refresh() endif inoremap <silent><expr> <cr> pumvisible() ? coc#_select_confirm() \: "\<C-g>u\<CR>\<c-r>=coc#on_enter()\<CR>" nmap <silent> [g <Plug>(coc-diagnostic-prev) nmap <silent> ]g <Plug>(coc-diagnostic-next) nmap <silent> gd <Plug>(coc-definition) nmap <silent> gy <Plug>(coc-type-definition) nmap <silent> gi <Plug>(coc-implementation) nmap <silent> gr <Plug>(coc-references) nnoremap <silent> K :call <SID>show_documentation()<CR> function! s:show_documentation() if (index(['vim','help'], &filetype) >= 0) execute 'h '.expand('<cword>') elseif (coc#rpc#ready()) call CocActionAsync('doHover') else execute '!' . &keywordprg . " " . expand('<cword>') endif endfunction autocmd CursorHold * silent call CocActionAsync('highlight') nmap <leader>rn <Plug>(coc-rename) xmap <leader>f <Plug>(coc-format-selected) nmap <leader>f <Plug>(coc-format-selected) augroup mygroup autocmd! autocmd FileType typescript,json setl formatexpr=CocAction('formatSelected') autocmd User CocJumpPlaceholder call CocActionAsync('showSignatureHelp') augroup end xmap <leader>a <Plug>(coc-codeaction-selected) nmap <leader>a <Plug>(coc-codeaction-selected) nmap <leader>ac <Plug>(coc-codeaction) nmap <leader>qf <Plug>(coc-fix-current) xmap if <Plug>(coc-funcobj-i) omap if <Plug>(coc-funcobj-i) xmap af <Plug>(coc-funcobj-a) omap af <Plug>(coc-funcobj-a) xmap ic <Plug>(coc-classobj-i) omap ic <Plug>(coc-classobj-i) xmap ac <Plug>(coc-classobj-a) omap ac <Plug>(coc-classobj-a) if has('nvim-0.4.0') || has('patch-8.2.0750') nnoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? coc#float#scroll(1) : "\<C-f>" nnoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? coc#float#scroll(0) : "\<C-b>" inoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? "\<c-r>=coc#float#scroll(1)\<cr>" : "\<Right>" inoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? "\<c-r>=coc#float#scroll(0)\<cr>" : "\<Left>" vnoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? coc#float#scroll(1) : "\<C-f>" vnoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? coc#float#scroll(0) : "\<C-b>" endif nmap <silent> <C-s> <Plug>(coc-range-select) xmap <silent> <C-s> <Plug>(coc-range-select) command! -nargs=0 Format :call CocAction('format') . command! -nargs=? Fold :call CocAction('fold', <f-args>) command! -nargs=0 OR :call CocAction('runCommand', 'editor.action.organizeImport') set statusline^=%{coc#status()}%{get(b:,'coc_current_function','')} set number nnoremap <silent><nowait> <space>a :<C-u>CocList diagnostics<cr> nnoremap <silent><nowait> <space>e :<C-u>CocList extensions<cr> nnoremap <silent><nowait> <space>c :<C-u>CocList commands<cr> nnoremap <silent><nowait> <space>o :<C-u>CocList outline<cr> nnoremap <silent><nowait> <space>s :<C-u>CocList -I symbols<cr> nnoremap <silent><nowait> <space>j :<C-u>CocNext<CR> nnoremap <silent><nowait> <space>k :<C-u>CocPrev<CR> nnoremap <silent><nowait> <space>p :<C-u>CocListResume<CR>