my vimrc
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
call plug#begin('~/.vim/plugged') | |
" Make sure you use single quotes | |
Plug 'tpope/vim-fugitive' | |
Plug 'tpope/vim-surround' | |
Plug 'airblade/vim-gitgutter' | |
Plug 'vim-airline/vim-airline' | |
Plug 'vim-airline/vim-airline-themes' | |
Plug 'nathanaelkane/vim-indent-guides' | |
Plug 'flazz/vim-colorschemes' | |
Plug 'scrooloose/nerdtree' | |
Plug 'mattn/emmet-vim' | |
Plug 'alvan/vim-closetag' | |
Plug 'bfrg/vim-cpp-modern' | |
Plug 'jiangmiao/auto-pairs' | |
Plug 'Yggdroot/indentLine' | |
Plug 'Shougo/denite.nvim' | |
Plug 'lervag/vimtex' | |
Plug 'beyondmarc/glsl.vim' | |
Plug 'fatih/vim-go', { 'do': ':GoUpdateBinaries' } | |
" (Optional) Multi-entry selection UI. | |
Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' } | |
Plug 'junegunn/fzf.vim' | |
Plug 'vhdirk/vim-cmake' | |
Plug 'neoclide/coc.nvim', {'branch': 'release'} | |
call plug#end() | |
autocmd BufNewFile,BufRead *.jsx set filetype=javascript.jsx | |
autocmd BufNewFile,BufRead *.tsx set filetype=typescript.tsx | |
let g:prettier#autoformat = 0 | |
" Auto pretty these files on save | |
"autocmd BufWritePre *.js,*.jsx,*.mjs,*.ts,*.tsx,*.css,*.less,*.scss,*.json,*.graphql,*.md,*.vue,*.yaml,*.html PrettierAsync | |
set background=dark | |
"colorscheme badwolf | |
colorscheme gruvbox | |
let g:airline#extensions#ale#enabled = 1 | |
let g:airline_powerline_fonts = 1 | |
let g:airline_theme='base16_gruvbox_dark_hard' | |
let g:cmake_export_compile_commands = 1 | |
let g:cmake_ycm_symlinks = 1 | |
set number relativenumber | |
set nu rnu | |
"set textwidth=100 | |
set showmatch | |
set hlsearch | |
set smartcase | |
set ignorecase | |
set incsearch | |
set autoindent | |
set shiftwidth=4 | |
set smartindent | |
set smarttab | |
set softtabstop=4 | |
set tabstop=4 | |
set mouse= | |
set cursorline | |
set lazyredraw | |
set ruler | |
set undolevels=1000 | |
set backspace=indent,eol,start | |
filetype plugin on | |
filetype indent on | |
syntax on | |
set showcmd | |
set wildmenu | |
set cmdheight=2 | |
set completeopt-=preview | |
set foldenable | |
set foldnestmax=10 | |
nnoremap <space> za | |
set termguicolors | |
" if hidden is not set, TextEdit might fail. | |
set hidden | |
" Some servers have issues with backup files | |
set nobackup | |
set nowritebackup | |
" Better display for messages | |
set cmdheight=2 | |
" You will have bad experience for diagnostic messages when it's default 4000. | |
set updatetime=300 | |
" don't give |ins-completion-menu| messages. | |
set shortmess+=c | |
" always show signcolumns | |
set signcolumn=yes | |
" Use <c-space> to trigger completion. | |
inoremap <silent><expr> <c-space> coc#refresh() | |
" Use <cr> to confirm completion, `<C-g>u` means break undo chain at current position. | |
" Coc only does snippet and additional edit on confirm. | |
inoremap <expr> <cr> pumvisible() ? "\<C-y>" : "\<C-g>u\<CR>" | |
" Or use `complete_info` if your vim support it, like: | |
" inoremap <expr> <cr> complete_info()["selected"] != "-1" ? "\<C-y>" : "\<C-g>u\<CR>" | |
" Remap keys for gotos | |
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) | |
" Use K to show documentation in preview window | |
nnoremap <silent> K :call <SID>show_documentation()<CR> | |
function! s:show_documentation() | |
if (index(['vim','help'], &filetype) >= 0) | |
execute 'h '.expand('<cword>') | |
else | |
call CocAction('doHover') | |
endif | |
endfunction | |
" Highlight symbol under cursor on CursorHold | |
autocmd CursorHold * silent call CocActionAsync('highlight') | |
" Remap for rename current word | |
nmap <leader>rn <Plug>(coc-rename) | |
" Remap for format selected region | |
xmap <leader>f <Plug>(coc-format-selected) | |
nmap <leader>f <Plug>(coc-format-selected) | |
set statusline^=%{coc#status()}%{get(b:,'coc_current_function','')} | |
command! -nargs=0 Format :call CocAction('format') | |
map <C-n> :NERDTreeToggle<CR> | |
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif | |
"hi! Pmenu ctermfg=NONE ctermbg=236 cterm=NONE guifg=NONE guibg=#64666d gui=NONE | |
"hi! PmenuSel ctermfg=NONE ctermbg=24 cterm=NONE guifg=NONE guibg=#204a87 gui=NONE | |
let g:javascript_plugin_jsdoc = 1 | |
let g:javascript_plugin_ngdoc = 1 | |
let g:javascript_plugin_flow = 1 | |
let g:cmake_build_type = 'Debug' | |
" Run gofmt on save | |
autocmd BufWritePre *.go :Format | |
autocmd InsertLeave,CompleteDone * if pumvisible() == 0 | pclose | endif | |
" [[B]Commits] Customize the options used by 'git log': | |
let g:fzf_commits_log_options = '--graph --color=always --format="%C(auto)%h%d %s %C(black)%C(bold)%cr"' | |
" [Tags] Command to generate tags file | |
let g:fzf_tags_command = 'ctags -R' | |
nnoremap <silent> <F6> :let _s=@/ <Bar> :%s/\s\+$//e <Bar> :let @/=_s <Bar> :nohl <Bar> :unlet _s <CR> | |
nnoremap <F5> :call LanguageClient_contextMenu()<CR> | |
nnoremap <c-p> :FZF<CR> | |
set wildignore+=*/build/*,*/venv/*,*/node_modules/* | |
let g:gutentags_ctags_exclude = ['build/*', 'compile_commands.json', '*.cmake', 'node_modules'] | |
let g:closetag_filenames = '*.html,*.xhtml,*.phtml,*.jsx,*.tsx' | |
let g:closetag_xhtml_filenames = '*.xhtml,*.jsx,*.tsx' | |
let g:closetag_regions = { | |
\ 'typescript.tsx': 'jsxRegion,tsxRegion', | |
\ 'javascript.jsx': 'jsxRegion', | |
\ } | |
function! s:tags_sink(line) | |
let parts = split(a:line, '\t\zs') | |
let excmd = matchstr(parts[2:], '^.*\ze;"\t') | |
execute 'silent e' parts[1][:-2] | |
let [magic, &magic] = [&magic, 0] | |
execute excmd | |
let &magic = magic | |
endfunction | |
function! s:tags() | |
if empty(tagfiles()) | |
echohl WarningMsg | |
echom 'Preparing tags' | |
echohl None | |
call system('ctags -R --exclude=build --exclude=compile_commands.json --exclude=*.cmake') | |
endif | |
call fzf#run({ | |
\ 'source': 'cat '.join(map(tagfiles(), 'fnamemodify(v:val, ":S")')). | |
\ '| grep -v -a ^!', | |
\ 'options': '+m -d "\t" --with-nth 1,4.. -n 1 --tiebreak=index', | |
\ 'down': '40%', | |
\ 'sink': function('s:tags_sink')}) | |
endfunction | |
command! Tags call s:tags() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment