You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
511 lines
18 KiB
511 lines
18 KiB
" ---------------------------------------------------------------------- |
|
" This is basically a copy of the starting vimrc, just to make sure I |
|
" have all the cool things enabled |
|
" ---------------------------------------------------------------------- |
|
|
|
set encoding=utf-8 |
|
|
|
" Use Vim settings, rather then Vi settings (much better!). |
|
" This must be first, because it changes other options as a side effect. |
|
set nocompatible |
|
|
|
" allow backspacing over everything in insert mode |
|
set backspace=indent,eol,start |
|
|
|
" Don't use Ex mode, use Q for formatting |
|
map Q gq |
|
|
|
" Map Y to do the same (well, almost) as the D command |
|
map Y y$ |
|
|
|
" This is an alternative that also works in block mode, but the deleted |
|
" text is lost and it only works for putting the current register. |
|
|
|
" Switch syntax highlighting on, when the terminal has colors |
|
" Also switch on highlighting the last used search pattern. |
|
if &t_Co > 2 || has("gui_running") |
|
syntax on |
|
set hlsearch |
|
endif |
|
|
|
" ---------------------------------------------------------------------- |
|
" Those are my settings |
|
" ---------------------------------------------------------------------- |
|
|
|
set nocompatible " force no compatibility with standard "vi" |
|
set tabstop=4 " tabs are displayed as 4 spaces |
|
set shiftwidth=4 " by default, when auto-identing, add 4 spaces (or 1 tabstop) |
|
set foldmethod=marker " fold on markers |
|
set foldlevel=3 " number of folds to open automatically |
|
set scrolloff=1 " always show one line around the cursor |
|
set laststatus=2 " always show the status bar ('cause I like to see the line and column, always) |
|
set showtabline=2 " always show the tabline |
|
set showmatch " show matching bracket |
|
set noerrorbells " no error bells |
|
set autowrite " write the file when switching between files or something |
|
set nowrap " do not wrap long lines |
|
set nobackup " do not keep a backup file, use versions instead |
|
set history=50 " keep 50 lines of command line history |
|
set ruler " show the cursor position all the time |
|
set showcmd " display incomplete commands |
|
set incsearch " do incremental searching |
|
set formatoptions=tcq " wrap with textwidth, wrap comments, insert commend leader (twice), format comments |
|
set smartindent " smart identation |
|
set number " show line numbers |
|
set wim=longest,list " file auto-completion |
|
set background=dark " to follow most of the colorschemes I use |
|
set vb t_vb= " convert bells to visual bells and do nothing as visual bell |
|
set t_Co=256 " 256 color terminal |
|
set modeline " Enable modelines |
|
" set undofile " saves undo changes in a separate file, so we can undo anytime |
|
set lcs=tab:¦\ " uses a special char at the start of a tab character, uses spaces after that |
|
set nolist " ... but don't display them by default |
|
|
|
let mapleader=" " " use space to start user-defined (in plugins) functions |
|
|
|
syntax sync minlines=1500 " increases the number of lines to find the proper syntax |
|
|
|
" ---------------------------------------------------------------------- |
|
" Vundle stuff starts here |
|
" ---------------------------------------------------------------------- |
|
filetype off |
|
set rtp+=~/.vim/bundle/Vundle.vim |
|
call vundle#begin() |
|
|
|
" ---------------------------------------------------------------------- |
|
" Bundles |
|
" ---------------------------------------------------------------------- |
|
" Vundle itself! |
|
Plugin 'VundleVim/Vundle.vim' |
|
|
|
" Magic "every updated syntax" plugin |
|
Plugin 'sheerun/vim-polyglot' |
|
|
|
" Lint files on save |
|
" Plugin 'scrooloose/syntastic' |
|
Plugin 'w0rp/ale' |
|
|
|
" status line |
|
Plugin 'itchyny/lightline.vim' |
|
|
|
" git support |
|
Plugin 'tpope/vim-fugitive' |
|
|
|
" comment code with keys |
|
Plugin 'tpope/vim-commentary' |
|
|
|
" align things |
|
Plugin 'godlygeek/tabular' |
|
|
|
" close pairs |
|
Plugin 'jiangmiao/auto-pairs' |
|
|
|
" snippets |
|
Plugin 'SirVer/ultisnips' |
|
Plugin 'honza/vim-snippets' |
|
|
|
" fuzzy file open |
|
Plugin 'kien/ctrlp.vim' |
|
|
|
" select multiple strings at the same time |
|
Plugin 'terryma/vim-multiple-cursors' |
|
|
|
" colorschemes |
|
Plugin 'croaker/mustang-vim' |
|
Plugin 'Ambient-Color-Scheme' |
|
Plugin 'EditPlus' |
|
Plugin 'altercation/vim-colors-solarized' |
|
Plugin 'baycomb' |
|
Plugin 'tomasr/molokai' |
|
Plugin 'jonathanfilip/vim-lucius' |
|
Plugin 'chriskempson/base16-vim' |
|
Plugin 'zenorocha/dracula-theme', {'rtp': 'vim/'} |
|
Plugin 'Snazzyham/wwdc-2016' |
|
Plugin 'farfanoide/vim-facebook' |
|
Plugin 'rakr/vim-two-firewatch' |
|
Plugin 'arcticicestudio/nord-vim' |
|
Plugin 'vim-scripts/BusyBee' |
|
Plugin 'nowk/genericdc' |
|
Plugin 'andrwb/vim-lapis256' |
|
Plugin 'glortho/feral-vim' |
|
Plugin 'kristijanhusak/vim-hybrid-material' |
|
Plugin 'jscappini/material.vim' |
|
Plugin 'marcopaganini/termschool-vim-theme' |
|
Plugin 'scwood/vim-hybrid' |
|
Plugin 'juanedi/predawn.vim' |
|
Plugin 'Marfisc/vorange' |
|
Plugin 'tyrannicaltoucan/vim-quantum' |
|
Plugin 'kamwitsta/nordisk' |
|
Plugin 'davidklsn/vim-sialoquent' |
|
Plugin 'trevordmiller/nova-vim' |
|
Plugin 'fenetikm/falcon' |
|
Plugin 'larsbs/vimterial_dark' |
|
Plugin 'mhartington/oceanic-next' |
|
|
|
" Improved syntax files |
|
Plugin 'Glench/Vim-Jinja2-Syntax' |
|
Plugin 'fmoralesc/vim-pinpoint' |
|
Plugin 'kchmck/vim-coffee-script' |
|
Plugin 'mattn/emmet-vim' |
|
|
|
" Automatically detect and change the display of CSS colors |
|
Plugin 'gorodinskiy/vim-coloresque' |
|
|
|
" Project tree |
|
" Plugin 'scrooloose/nerdtree' |
|
" Plugin 'jistr/vim-nerdtree-tabs' |
|
Plugin 'tpope/vim-vinegar' |
|
|
|
" Editor configuration |
|
Plugin 'editorconfig/editorconfig-vim' |
|
|
|
" Selection |
|
Plugin 'terryma/vim-expand-region' |
|
|
|
" Unhighlight stuff when moving |
|
Plugin 'romainl/vim-cool' |
|
|
|
" Better "around stuff" |
|
Plugin 'tpope/vim-surround' |
|
|
|
call vundle#end() " done with plugins |
|
|
|
color mustang " looks awesome on gvim, looks alright in vim if you have 256 color support |
|
|
|
" Enable file type detection. |
|
" Use the default filetype settings, so that mail gets 'tw' set to 72, |
|
" 'cindent' is on in C files, etc. |
|
" Also load indent files, to automatically do language-dependent indenting. |
|
filetype plugin indent on |
|
|
|
" Put these in an autocmd group, so that we can delete them easily. |
|
augroup vimrcEx |
|
au! |
|
|
|
" For all text files set 'textwidth' to 78 characters. |
|
autocmd FileType text setlocal textwidth=78 |
|
|
|
" When editing a file, always jump to the last known cursor position. |
|
" Don't do it when the position is invalid or when inside an event handler |
|
" (happens when dropping a file on gvim). |
|
autocmd BufReadPost * |
|
\ if line("'\"") > 0 && line("'\"") <= line("$") | |
|
\ exe "normal g`\"" | |
|
\ endif |
|
|
|
augroup END |
|
|
|
" Files that should be ignored in most file operations |
|
set wildignore+=*/build/*,*.egginfo,*.pyc,*.mo,*/dist/* |
|
|
|
" ---------------------------------------------------------------------- |
|
" Auto-commands |
|
" ---------------------------------------------------------------------- |
|
|
|
" default python style |
|
" (use spaces instead of tabs (expandtab), uses 4 spaces for tabs (tabstop), |
|
" when auto-indenting, also use 4 spaces (shiftwidth), when deleting text, 4 |
|
" spaces are a tab (softtabstop) and break the line at column 78 (textwidth)) |
|
" also, remove all tailing spaces |
|
au FileType python setlocal expandtab tabstop=4 shiftwidth=4 softtabstop=4 textwidth=78 colorcolumn=79 |
|
|
|
" Default C/C++ style |
|
" show a column marker at column 100, break the line at line 100, use tabs |
|
" instead of sapces and display a "¦" for tabs (this way we can see the lines |
|
" that are not using real tabs) |
|
au FileType c setlocal colorcolumn=100 tw=100 noet list |
|
au FileType cpp setlocal colorcolumn=100 tw=100 noet list |
|
|
|
" Default ReStructured document style |
|
" reStructured files follow python closely, but use 3 tab stops instead of 4 |
|
au FileType rst setlocal expandtab tabstop=3 sw=3 sts=3 textwidth=78 |
|
|
|
" Default Jinja2/Django styles |
|
" These options reflect most of the same style as Python. |
|
au FileType htmldjango setlocal noet tabstop=4 shiftwidth=4 softtabstop=4 textwidth=0 |
|
au FileType jinja setlocal noet tabstop=4 shiftwidth=4 softtabstop=4 textwidth=0 |
|
|
|
" Default Smarty style |
|
" Smarty doesn't have a proper syntax (I think) so we enable autoidentation |
|
" for it to indent HTML properly. |
|
au FileType smarty setlocal ai |
|
|
|
" Default PHP style |
|
" PHP should break at column 79 (pretty much like Python). |
|
" We also enable a syntax option, which will colorize instance members in a |
|
" different way (so we know when a variable is an instance member or something |
|
" coming from outside). |
|
au FileType php setlocal textwidth=79 |
|
let php_smart_members=1 |
|
|
|
" Default Subversion style. |
|
" Simply break lines at column 70. |
|
au FileType svn setlocal tw=70 |
|
|
|
" Default Email style. |
|
" This is mostly used by Mutt. |
|
au FileType mail setlocal spell spelllang=en |
|
|
|
" Default JavaScript style |
|
" This mirrors Python, except we'll be using 2 spaces instead of 4. Also, |
|
" there is no hard-break, as JavaScript seems more prone to break in the wrong |
|
" place than Python. |
|
au FileType javascript setlocal expandtab tabstop=4 sw=4 sts=4 textwidth=0 |
|
|
|
" Default style for cofeescript files |
|
au FileType coffee setlocal noet ts=2 sw=2 sts=2 list |
|
|
|
" Default JSON styles |
|
" Every file with the extesion "json" should have the filetype "json"; |
|
" Use spaces instead of tabs and use 4 spaces for it. |
|
" Remove tailing spaces. |
|
" Also, in case we are using vim-json (through Polyglot), do not conceal any |
|
" characters (check elzr/vim-json on Github about this feature) |
|
let g:vim_json_syntax_conceal = 0 |
|
autocmd BufNewFile,BufRead *.json set filetype=json |
|
autocmd Filetype json set et ts=4 sts=4 |
|
|
|
" Vue files can be treated as HTML files just fine |
|
autocmd BufNewFile,BufRead *.vue set ft=html |
|
|
|
" Default Pinpoint style |
|
au BufNewFile,BufRead *.pin set filetype=pinpoint |
|
au FileType pinpoint setlocal colorcolumn=79 textwidth=78 |
|
|
|
" Default Yang style |
|
au FileType yang set et |
|
|
|
" Yaml; same as JavaScript |
|
au FileType yaml setlocal expandtab tabstop=4 sw=4 sts=4 textwidth=0 |
|
|
|
" For Java, we need to display tabs |
|
au FileType java setlocal noet list |
|
|
|
" ---------------------------------------------------------------------- |
|
" Remove tailing spaces |
|
" ---------------------------------------------------------------------- |
|
|
|
autocmd FileType c,cpp,python,yang,json,yaml,javascript,scala autocmd BufWritePre <buffer> :%s/\s\+$//e |
|
|
|
" ---------------------------------------------------------------------- |
|
" mapings |
|
" ---------------------------------------------------------------------- |
|
|
|
" Easy switching between tabs (just use Alt+<tab number>) |
|
if has('mac') |
|
map <D-1> :tabn 1<CR> |
|
map <D-2> :tabn 2<CR> |
|
map <D-3> :tabn 3<CR> |
|
map <D-4> :tabn 4<CR> |
|
map <D-5> :tabn 5<CR> |
|
map <D-6> :tabn 6<CR> |
|
map <D-7> :tabn 7<CR> |
|
map <D-8> :tabn 8<CR> |
|
map <D-9> :tabn 9<CR> |
|
map <D-0> :tabn 10<CR> |
|
|
|
imap <D-1> <ESC>:tabn 1<CR>a |
|
imap <D-2> <ESC>:tabn 2<CR>a |
|
imap <D-3> <ESC>:tabn 3<CR>a |
|
imap <D-4> <ESC>:tabn 4<CR>a |
|
imap <D-5> <ESC>:tabn 5<CR>a |
|
imap <D-6> <ESC>:tabn 6<CR>a |
|
imap <D-7> <ESC>:tabn 7<CR>a |
|
imap <D-8> <ESC>:tabn 8<CR>a |
|
imap <D-9> <ESC>:tabn 9<CR>a |
|
imap <D-0> <ESC>:tabn 10<CR>a |
|
else |
|
map <M-1> :tabn 1<CR> |
|
map <M-2> :tabn 2<CR> |
|
map <M-3> :tabn 3<CR> |
|
map <M-4> :tabn 4<CR> |
|
map <M-5> :tabn 5<CR> |
|
map <M-6> :tabn 6<CR> |
|
map <M-7> :tabn 7<CR> |
|
map <M-8> :tabn 8<CR> |
|
map <M-9> :tabn 9<CR> |
|
map <M-0> :tabn 10<CR> |
|
|
|
imap <M-1> <ESC>:tabn 1<CR>a |
|
imap <M-2> <ESC>:tabn 2<CR>a |
|
imap <M-3> <ESC>:tabn 3<CR>a |
|
imap <M-4> <ESC>:tabn 4<CR>a |
|
imap <M-5> <ESC>:tabn 5<CR>a |
|
imap <M-6> <ESC>:tabn 6<CR>a |
|
imap <M-7> <ESC>:tabn 7<CR>a |
|
imap <M-8> <ESC>:tabn 8<CR>a |
|
imap <M-9> <ESC>:tabn 9<CR>a |
|
imap <M-0> <ESC>:tabn 10<CR>a |
|
endif |
|
|
|
" Easy swtich between splits |
|
nnoremap <C-J> <C-W><C-J> |
|
nnoremap <C-K> <C-W><C-K> |
|
nnoremap <C-L> <C-W><C-L> |
|
nnoremap <C-H> <C-W><C-H> |
|
|
|
" Use ';' as ':' |
|
nnoremap ; : |
|
|
|
" ---------------------------------------------------------------------- |
|
" Autopair settings |
|
" ---------------------------------------------------------------------- |
|
let g:AutoPairsMapCR = 1 |
|
|
|
" ---------------------------------------------------------------------- |
|
" Airline configuration |
|
" ---------------------------------------------------------------------- |
|
let g:airline_powerline_fonts = 1 |
|
let g:airline_theme = 'understated' |
|
let g:airline#extensions#branch#enabled = 1 |
|
let g:airline#extensions#syntastic#enabled = 1 |
|
let g:airline#extensions#tabline#enabled = 1 |
|
let g:airline#extensions#tabline#show_buffers = 0 |
|
let g:airline#extensions#tabline#show_tab_type = 0 |
|
let g:airline#extensions#tabline#tab_nr_type = 1 |
|
let g:airline#extensions#whitespace#enabled = 0 "disabled |
|
|
|
" ---------------------------------------------------------------------- |
|
" Lightline configuration |
|
" ---------------------------------------------------------------------- |
|
let g:lightline = { |
|
\ 'colorscheme': 'wombat', |
|
\ } |
|
|
|
" ---------------------------------------------------------------------- |
|
" CtrlP and extensions configuration |
|
" ---------------------------------------------------------------------- |
|
" let g:ctrlp_extensions = ['funky'] |
|
" nnoremap <C-O> :CtrlPFunky<CR> |
|
|
|
" ---------------------------------------------------------------------- |
|
" Indent guides |
|
" ---------------------------------------------------------------------- |
|
let g:indent_guides_start_level=2 |
|
let g:indent_guides_guide_size=1 |
|
|
|
|
|
" ---------------------------------------------------------------------- |
|
" Jedi-VIM |
|
" ---------------------------------------------------------------------- |
|
" this disables the documentation/preview split |
|
autocmd FileType python setlocal completeopt-=preview |
|
let g:jedi#show_call_signatures = "0" |
|
|
|
" ---------------------------------------------------------------------- |
|
" UltiSnips |
|
" ---------------------------------------------------------------------- |
|
let g:UltiSnipsEditSplit = "horizontal" |
|
let g:UltiSnipsExpandTrigger = "<tab>" |
|
let g:UltiSnipsJumpForwardTrigger = "<tab>" |
|
let g:UltiSnipsJumpBackwardTrigger = "<s-tab>" |
|
let g:ultisnips_python_style = "sphinx" |
|
|
|
" ---------------------------------------------------------------------- |
|
" Nerdtree and Nerdtree tabs |
|
" ---------------------------------------------------------------------- |
|
let NERDTreeChDirMode=2 |
|
let NERDTreeIgnore=['\.rbc$', '\~$', '\.pyc$', '\.db$', '\.sqlite$', '__pycache__'] |
|
let NERDTreeSortOrder=['^__\.py$', '\/$', '*', '\.swp$', '\.bak$', '\~$'] |
|
let NERDTreeShowBookmarks=1 |
|
let g:nerdtree_tabs_focus_on_files=1 |
|
let g:NERDTreeMapOpenInTabSilent = '<RightMouse>' |
|
let g:NERDTreeWinSize = 40 |
|
"noremap <F3> :NERDTreeToggle<CR> |
|
"nnoremap <silent> <F2> :NERDTreeFind<CR> |
|
map <Leader>\ <plug>NERDTreeTabsToggle<CR> |
|
|
|
" ---------------------------------------------------------------------- |
|
" Syntastic |
|
" ---------------------------------------------------------------------- |
|
" * Global options |
|
let g:syntastic_aggregate_errors = 1 |
|
let g:syntastic_always_populate_loc_list = 1 |
|
let g:syntastic_auto_loc_list = 2 |
|
let g:syntastic_loc_list_height = 4 |
|
|
|
" * Checker options |
|
" ** C: |
|
let g:syntastic_c_check_header = 1 |
|
let g:syntastic_c_cflags = '-Wall -Werror -W -Wno-unused-parameter -Werror=unused-variable' |
|
let g:syntastic_cpp_compiler_options = '-std=c++11' |
|
|
|
" ---------------------------------------------------------------------- |
|
" ALE |
|
" ---------------------------------------------------------------------- |
|
let g:ale_sign_column_always=1 |
|
|
|
" ---------------------------------------------------------------------- |
|
" Clang formatter |
|
" ---------------------------------------------------------------------- |
|
let g:clang_format#style_options = { |
|
\ "Language": "Cpp", |
|
\ "AccessModifierOffset": -1, |
|
\ "ConstructorInitializerIndentWidth": 4, |
|
\ "AlignEscapedNewlinesLeft": "true", |
|
\ "AlignTrailingComments": "true", |
|
\ "AllowAllParametersOfDeclarationOnNextLine": "true", |
|
\ "AllowShortBlocksOnASingleLine": "false", |
|
\ "AllowShortIfStatementsOnASingleLine": "false", |
|
\ "AllowShortLoopsOnASingleLine": "false", |
|
\ "AllowShortFunctionsOnASingleLine": "None", |
|
\ "AlwaysBreakTemplateDeclarations": "true", |
|
\ "AlwaysBreakBeforeMultilineStrings": "true", |
|
\ "BreakBeforeBinaryOperators": "true", |
|
\ "BreakBeforeTernaryOperators": "true", |
|
\ "BreakConstructorInitializersBeforeComma": "false", |
|
\ "BinPackParameters": "true", |
|
\ "ColumnLimit": 100, |
|
\ "ConstructorInitializerAllOnOneLineOrOnePerLine": "true", |
|
\ "DerivePointerAlignment": "true", |
|
\ "ExperimentalAutoDetectBinPacking": "false", |
|
\ "IndentCaseLabels": "true", |
|
\ "IndentWrappedFunctionNames": "true", |
|
\ "IndentFunctionDeclarationAfterType": "true", |
|
\ "MaxEmptyLinesToKeep": 1, |
|
\ "KeepEmptyLinesAtTheStartOfBlocks": "true", |
|
\ "NamespaceIndentation": "None", |
|
\ "ObjCSpaceAfterProperty": "false", |
|
\ "ObjCSpaceBeforeProtocolList": "false", |
|
\ "PenaltyBreakBeforeFirstCallParameter": 1, |
|
\ "PenaltyBreakComment": 300, |
|
\ "PenaltyBreakString": 1000, |
|
\ "PenaltyBreakFirstLessLess": 120, |
|
\ "PenaltyExcessCharacter": 1000000, |
|
\ "PenaltyReturnTypeOnItsOwnLine": 200, |
|
\ "PointerAlignment": "Left", |
|
\ "SpacesBeforeTrailingComments": 2, |
|
\ "Cpp11BracedListStyle": "false", |
|
\ "Standard": "Auto", |
|
\ "IndentWidth": 4, |
|
\ "TabWidth": 8, |
|
\ "UseTab": "Never", |
|
\ "BreakBeforeBraces": "Stroustrup", |
|
\ "SpacesInParentheses": "false", |
|
\ "SpacesInAngles": "false", |
|
\ "SpaceInEmptyParentheses": "false", |
|
\ "SpacesInCStyleCastParentheses": "false", |
|
\ "SpacesInContainerLiterals": "true", |
|
\ "SpaceBeforeAssignmentOperators": "true", |
|
\ "ContinuationIndentWidth": 4, |
|
\ "CommentPragmas": "^ IWYU pragma:", |
|
\ "SpaceBeforeParens": "ControlStatements", |
|
\ "DisableFormat": "false" } |
|
|
|
" ---------------------------------------------------------------------- |
|
" Vim Expand Region |
|
" ---------------------------------------------------------------------- |
|
vmap v <Plug>(expand_region_expand) |
|
vmap <C-v> <Plug>(expand_region_shrink) |
|
|
|
" ---------------------------------------------------------------------- |
|
" Special options for Python syntax |
|
" ---------------------------------------------------------------------- |
|
let g:python_highlight_all = 1 |
|
|
|
" ---------------------------------------------------------------------- |
|
" Lastly, load configurations available only to this computer |
|
" ---------------------------------------------------------------------- |
|
if filereadable(expand("~/.vim/local.vim")) |
|
source ~/.vim/local.vim |
|
endif
|
|
|