From c87f040e39962dea83d2399be5ef9ec62d4267a9 Mon Sep 17 00:00:00 2001 From: n0m1s Date: Thu, 11 Apr 2019 15:56:33 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=8E=89=20Initial=20commit?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/filetypes.vimrc | 5 +++ config/functions.vimrc | 6 +++ config/general.vimrc | 67 +++++++++++++++++++++++++++++++++ config/init.vimrc | 51 +++++++++++++++++++++++++ config/keys.vimrc | 29 ++++++++++++++ config/plugins.vimrc | 85 ++++++++++++++++++++++++++++++++++++++++++ init.vim | 42 +++++++++++++++++++++ 7 files changed, 285 insertions(+) create mode 100644 config/filetypes.vimrc create mode 100644 config/functions.vimrc create mode 100644 config/general.vimrc create mode 100644 config/init.vimrc create mode 100644 config/keys.vimrc create mode 100644 config/plugins.vimrc create mode 100644 init.vim diff --git a/config/filetypes.vimrc b/config/filetypes.vimrc new file mode 100644 index 0000000..7dcee75 --- /dev/null +++ b/config/filetypes.vimrc @@ -0,0 +1,5 @@ +au BufNewFile,BufRead *.i set filetype=swig +au BufNewFile,BufRead *.swg set filetype=swig +au BufNewFile,BufRead *.g set filetype=antlr3 +au BufNewFile,BufRead *.g4 set filetype=antlr4 +au BufNewFile,BufRead *.gv set filetype=dot diff --git a/config/functions.vimrc b/config/functions.vimrc new file mode 100644 index 0000000..8798cb2 --- /dev/null +++ b/config/functions.vimrc @@ -0,0 +1,6 @@ +function! ListDirectoryWithPattern(folder, pattern) + split(system("find '".a:folder."' -type f -name '".a:pattern."'"),'\n') +endfunction + +com! FormatJSON %!python -m json.tool +com! JSONformat %!python -m json.tool diff --git a/config/general.vimrc b/config/general.vimrc new file mode 100644 index 0000000..e58b40c --- /dev/null +++ b/config/general.vimrc @@ -0,0 +1,67 @@ +set nocompatible + +filetype off +filetype plugin on +filetype indent on + +if &t_Co >= 256 || has("gui_running") + colorscheme mustang +endif + +if &t_Co > 2 || has("gui_runnig") + syntax on +endif + +autocmd BufEnter *.cls set syntax=tex + + +" must-have +" { + set hidden + set wildmenu + set showcmd + set hlsearch +" } + +" usability +" { + set ignorecase + set smartcase + set backspace=indent,eol,start + set autoindent + set nostartofline + set ruler + set laststatus=2 + set confirm + set visualbell + set t_vb= + set mouse=a + set cmdheight=2 + set number + set notimeout nottimeout + set list + set scrolloff=5 + set listchars=tab:>.,trail:!,extends:#,nbsp:‿ + + set wildignore+=*/.git/*,*/tmp/*,*.so,*.swp,*.zip +" } + +" indentation +" { + set shiftwidth=4 + set softtabstop=4 + set tabstop=4 + set expandtab +" } + +" fold +" { + set foldmethod=indent + set foldnestmax=10 + set nofoldenable + + nnoremap @=(foldlevel('.')?'za':"\") + vnoremap zf + + cabbrev h vert h +" } diff --git a/config/init.vimrc b/config/init.vimrc new file mode 100644 index 0000000..0275391 --- /dev/null +++ b/config/init.vimrc @@ -0,0 +1,51 @@ +" loading vim-plug +if empty(glob(g:home."/.vim/autoload/plug.vim")) + execute '!curl -fLo '.g:home.'/.vim/autoload/plug.vim https://raw.github.com/junegunn/vim-plug/master/plug.vim' +endif + +call plug#begin(g:home.'/.vim/plugged') + +" colors +Plug 'altercation/vim-colors-solarized' +Plug 'TheMrNomis/mustang-vim' + +" syntax +Plug 'dpelle/vim-Grammalecte' " French +Plug 'martinda/Jenkinsfile-vim-syntax' " Jenkins +Plug 'vim-scripts/SWIG-syntax' " SWIG +Plug 'cespare/vim-toml' " TOML +Plug 'dylon/vim-antlr' " ANTLR +Plug 'rust-lang/rust.vim' " rust + +" must-have +Plug 'vim-airline/vim-airline' " awesome bar +Plug 'ctrlpvim/ctrlp.vim' " fuzzy file-finder +Plug 'bkad/CamelCaseMotion' " move inside words + +" IDE-like plugins +Plug 'vim-scripts/a.vim' " quickly change between .h & .c +Plug 'bitc/vim-bad-whitespace' " show whitespace at end of lines +if has('nvim') + " autocomplete + Plug 'shougo/deoplete.nvim', {'do': ':UpdateRemotePlugins'} + Plug 'shougo/deoplete-clangx' +endif +Plug 'jiangmiao/auto-pairs' " pair parenthesis +Plug 'kien/rainbow_parentheses.vim' " color parentheses +Plug 'terryma/vim-multiple-cursors' " multiple cursors +Plug 'vim-scripts/DoxygenToolkit.vim' " creates doxygen blocks +Plug 'tacahiroy/ctrlp-funky' " fuzzy function-finder (CTRLp plugin) +Plug 'mhinz/vim-startify' " landing page & session manager +Plug 'scrooloose/nerdcommenter' " auto comment blocks +Plug 'jaxbot/semantic-highlight.vim' " semantic highlight +Plug 'mhinz/vim-signify' " VCS differences +"Plug 'vim-syntastic/syntastic' " syntax checker +"Plug 'neomake/neomake' " syntax checker (asynchoneous) +Plug 'w0rp/ale' " syntax checker + +" others +Plug 'tpope/vim-fugitive' " git wrapper + +Plug 'easymotion/vim-easymotion' + +call plug#end() diff --git a/config/keys.vimrc b/config/keys.vimrc new file mode 100644 index 0000000..aca5654 --- /dev/null +++ b/config/keys.vimrc @@ -0,0 +1,29 @@ +" bepo +nnoremap . : +nnoremap . +let mapleader="," +imap + +" usability +map Y y$ +map +map Q +nnoremap :nohl +nnoremap :w +vnoremap // y/" + +" buffers +map l +map h +map k +map j + +" plugins +nmap /** :Dox +"nmap :CtrlPMixed +nmap :FZF +nmap :CtrlPFunky + +noremap :SemanticHighlightToggle + +inoremap pumvisible() ? "\" : "\" diff --git a/config/plugins.vimrc b/config/plugins.vimrc new file mode 100644 index 0000000..55cd470 --- /dev/null +++ b/config/plugins.vimrc @@ -0,0 +1,85 @@ +let g:airline_powerline_fonts = 1 +let g:session_autosave = 'no' +let g:ycm_server_python_interpreter = '/usr/bin/python3' +let g:grammalecte_cli_py='/usr/share/grammalecte-fr/grammalecte-cli.py' +let g:deoplete#enable_at_startup = 1 + +let g:ctrlp_funky_syntax_highlight = 1 +let g:ctrlp_working_path_mode = 'rwa' +let g:ctrlp_cache_dir = $XDG_CACHE_DIR . '/ctrlp' + +let g:semanticTermColors = [28,1,2,3,4,5,6,7,25,9,10,34,12,13,14,15,125,124,19] + +let g:EasyMotion_keys = 'auie,ctsrnmbépoèvdljzwàyx.kqghfç' + +call camelcasemotion#CreateMotionMappings('') + +" code search +if executable('ag') + " Use Ag over Grep + set grepprg=ag\ --nogroup\ --nocolor + + " Use ag in CtrlP for listing files. Lightning fast and respects .gitignore + let g:ctrlp_user_command = 'ag %s -l --nocolor -g ""' + let g:ctrlp_use_caching=1 +endif + +if executable('rg') + set grepprg=rg\ --color=never + + "let g:ctrlp_user_command = 'rg %s --files --color=never --glob ""' + let g:ctrlp_use_caching=1 +endif + +" ALE +let g:ale_linters = { + \ 'cpp': ['clang'] + \} + +let g:ale_cpp_clang_includes = [ + \ getcwd(), + \ getcwd().'/third-party' + \ ] + + \ split(system("find '/usr/include/qt' -maxdepth 1 -type d"), '\n') + + \ split(system("[[ " . getcwd() . " == *'workspace'* ]] && find " . getcwd() . " -type d -name 'include'"), '\n') + +let g:ale_cpp_clang_options = '-std=c++17 -Wall -Wno-pragma-once-outside-header' +if len(g:ale_cpp_clang_includes) + let g:ale_cpp_clang_options = g:ale_cpp_clang_options . ' -I' . join(g:ale_cpp_clang_includes, " -I") +endif + +let g:ale_cs_mcsc_source = getcwd() +let g:ale_cs_mcsc_assemblies = + \ split(system("find '/opt/Unity/Editor/Data/' -type f -name 'Unity*.dll'"),'\n') "+ + "\ split(system("find " . getcwd() . " -type f -name '*.dll'")) + +" startify +let g:startify_fortune_use_unicode = 1 +let g:startify_session_persistence = 1 +let g:startify_lists = [ + \ { 'type': 'sessions', 'header': [' Sessions'] }, + \ { 'type': 'files', 'header': [' MRU'] }, + \ { 'type': 'dir', 'header': [' MRU '. getcwd()] }, + \ { 'type': 'bookmarks', 'header': [' Bookmarks'] }, + \ { 'type': 'commands', 'header': [' Commands'] }, + \ ] +let g:startify_session_before_save = [] + +" You can set up fzf window using a Vim command (Neovim or latest Vim 8 required) +let g:fzf_layout = { 'window': 'belowright 10split enew' } + +" Customize fzf colors to match your color scheme +let g:fzf_colors = +\ { 'fg': ['fg', 'Normal'], + \ 'bg': ['bg', 'Normal'], + \ 'hl': ['fg', 'Comment'], + \ 'fg+': ['fg', 'CursorLine', 'CursorColumn', 'Normal'], + \ 'bg+': ['bg', 'CursorLine', 'CursorColumn'], + \ 'hl+': ['fg', 'Statement'], + \ 'info': ['fg', 'PreProc'], + \ 'border': ['fg', 'Ignore'], + \ 'prompt': ['fg', 'Conditional'], + \ 'pointer': ['fg', 'Exception'], + \ 'marker': ['fg', 'Keyword'], + \ 'spinner': ['fg', 'Label'], + \ 'header': ['fg', 'Comment'] } diff --git a/init.vim b/init.vim new file mode 100644 index 0000000..730013e --- /dev/null +++ b/init.vim @@ -0,0 +1,42 @@ +if(!exists('g:home')) + let g:home=$HOME + let g:config_dir=g:home.'/.config/nvim' +endif + +execute 'source '.g:config_dir.'/config/init.vimrc' +execute 'source '.g:config_dir.'/config/general.vimrc' +execute 'source '.g:config_dir.'/config/functions.vimrc' +execute 'source '.g:config_dir.'/config/filetypes.vimrc' +execute 'source '.g:config_dir.'/config/plugins.vimrc' +execute 'source '.g:config_dir.'/config/keys.vimrc' + +" functions +" { + fun! StripTrailingWhitespaces() + let _s=@/ + let l = line(".") + let c = col(".") + %s/\s\+$//e + call cursor(l,c) + let @/=_s + endfun + nmap :call StripTrailingWhitespaces() + + augroup CursorLine + au! + au VimEnter,WinEnter,BufWinEnter * setlocal cursorline + au WinLeave * setlocal nocursorline + augroup END + + augroup AutoComment + autocmd! + autocmd FileType c,cpp,java,scala let b:comment_leader = '// ' + autocmd FileType sh,ruby,python,conf,fstab let b:comment_leader = '# ' + autocmd FileType tex let b:comment_leader = '% ' + autocmd FileType mail let b:comment_leader = '> ' + autocmd FileType vim let b:comment_leader = '" ' + augroup END + + nnoremap cc :silent s/^/=escape(b:comment_leader,'\/')/:nohlsearch + nnoremap cu :silent s/^\V=escape(b:comment_leader,'\/')//e:nohlsearch +" }