109 lines
2.4 KiB
VimL
109 lines
2.4 KiB
VimL
" For platform specific settings
|
|
let hostname = substitute(system('hostname'), '\n', '', '')
|
|
|
|
" Plugin management
|
|
set nocompatible
|
|
filetype off
|
|
set rtp+=~/.vim/bundle/Vundle.vim
|
|
call vundle#begin()
|
|
Plugin 'VundleVim/Vundle.vim'
|
|
" Status Line
|
|
Plugin 'vim-airline/vim-airline'
|
|
" Explorer
|
|
Plugin 'scrooloose/nerdtree', { 'on': 'NERDTreeToggle' }
|
|
" File search
|
|
Plugin 'ctrlpvim/ctrlp.vim'
|
|
" Class explorer
|
|
Plugin 'majutsushi/tagbar', { 'on': 'TagbarToggle' }
|
|
" Code completion using <tab>
|
|
Plugin 'ervandew/supertab'
|
|
if hostname == "localhost"
|
|
" Python IDE-like
|
|
Plugin 'python-mode/python-mode', { 'for': 'python', 'branch': 'develop' }
|
|
else
|
|
" Autocomplete for python
|
|
Plugin 'davidhalter/jedi-vim'
|
|
" Asynchronous syntax check
|
|
Plugin 'dense-analysis/ale'
|
|
" Intelligent folding
|
|
Plugin 'tmhedberg/SimpylFold'
|
|
endif
|
|
" Git management
|
|
Plugin 'tpope/vim-fugitive'
|
|
" Color schemes
|
|
Plugin 'morhetz/gruvbox'
|
|
|
|
call vundle#end()
|
|
filetype plugin indent on
|
|
|
|
" Syntax
|
|
syntax enable
|
|
let python_highlight_all=1
|
|
set number
|
|
set cursorline
|
|
set showmatch
|
|
set laststatus=2 " Always display statusline
|
|
set background=dark
|
|
let g:gruvbox_contrast_dark='hard'
|
|
if filereadable( expand("$HOME/.vim/bundle/gruvbox/colors/gruvbox.vim") )
|
|
colorscheme gruvbox
|
|
endif
|
|
|
|
" Indentation
|
|
set tabstop=4
|
|
set softtabstop=4
|
|
set shiftwidth=0
|
|
" set textwidth=79
|
|
set autoindent
|
|
set smarttab
|
|
autocmd filetype python set expandtab
|
|
au BufNewFile,BufRead *.js, *.html, *.css, *.json
|
|
\ set tabstop=2 |
|
|
\ set softtabstop=2 |
|
|
\ set shiftwidth=2
|
|
|
|
" Display
|
|
set list
|
|
set list listchars=tab:\|·,trail:⋅,nbsp:⋅
|
|
" set nowrap
|
|
set hlsearch
|
|
set incsearch
|
|
set foldlevel=2
|
|
set colorcolumn=80
|
|
|
|
" Behaviour
|
|
set hidden " Keep previous buffer when opening a new file
|
|
set wildmenu " Sexy autocomplete
|
|
|
|
" Mappings
|
|
let mapleader=","
|
|
map <C-h> <C-w>h
|
|
map <C-j> <C-w>j
|
|
map <C-k> <C-w>k
|
|
map <C-l> <C-w>l
|
|
nnoremap <space> za
|
|
nmap <F5> :w<CR>:!clear;python3 %<CR>
|
|
nmap <F6> :!%:p<CR>
|
|
nmap <F7> :NERDTreeToggle<CR>
|
|
nmap <F8> :TagbarToggle<CR>
|
|
|
|
" Plugin config
|
|
let g:SimpylFold_docstring_preview=1
|
|
let g:airline#extensions#tabline#enabled=1
|
|
|
|
if hostname == "localhost"
|
|
let g:pymode_rope=1
|
|
let g:pymode_folding=1
|
|
else
|
|
let g:airline_powerline_fonts=1
|
|
|
|
" Plugin Ale
|
|
packloadall
|
|
silent! helptags ALL
|
|
let g:ale_fixers = {
|
|
\ '*': ['remove_trailing_lines', 'trim_whitespace'],
|
|
\ 'javascript': ['eslint'],
|
|
\ 'python': ['add_blank_lines_for_python_control_statements', 'autopep8', 'isort']
|
|
\}
|
|
endif
|