diff --git a/lightline.vim b/lightline.vim new file mode 100644 index 0000000..c27399e --- /dev/null +++ b/lightline.vim @@ -0,0 +1,103 @@ +let g:lightline = { + \"active": { + \ "left": [[ "mode", "paste" ], + \ ["fugitive", "filename", "readonly", "ctrlpmark"]], + \ "right": [ ["syntastic", "lineinfo"], ["percent"], + \ ["fileformat", "fileencoding", "filetype"]] + \ }, + \"component": { + \"readonly": '%{&filetype=="help"?"":&readonly?"∅":""}', + \"modified": '%{&filetype=="help"?"":&modified?"+":&modifiable?"":"-"}' + \ }, + \'component_visible_condition': { + \"readonly": '(&filetype!="help"&& &readonly)', + \"modified": '(&filetype!="help"&&(&modified||!&modifiable))' + \ }, + \"component_expand": { + \ "syntastic": "SyntasticStatuslineFlag", + \ }, + \"component_type": { + \ "syntastic": "error", + \ }, + \"component_function": { + \ "filename": "Filename", + \ "fugitive": "Fugitive", + \ "fileformat": "Fileformat", + \ "filetype": "Filetype", + \ "fileencoding": "Fileencoding", + \ "mode": "Mode", + \ "ctrlpmark": "CtrlPMark", + \ } +\ } + +function! Fugitive() + if &ft !~? 'gundo\|tagbar' && exists("*fugitive#head") + let _ = fugitive#head() + return strlen(_) ? "μ "._ : "" + endif + return '' +endfunction + +function! Modified() + return &ft =~ "help" ? "" : &modified ? "+" : &modifiable ? "" : "-" +endfunction + +function! Readonly() + return &ft !~? "help" && &readonly ? "RO" : "" +endfunction + +function! Filename() + let fname = expand('%:t') + return fname == 'ControlP' ? g:lightline.ctrlp_item : + \ fname == '__Tagbar__' ? g:lightline.fname : + \ ('' != fname ? fname : '[No Name]') . + \ ('' != Modified() ? ' ' . Modified() : '') +endfunction + +function! Fileformat() + return winwidth(0) > 70 ? &fileformat : "" +endfunction + +function! Filetype() + return winwidth(0) > 70 ? (strlen(&filetype) ? &filetype : "no ft") : "" +endfunction + +function! Fileencoding() + return winwidth(0) > 70 ? (strlen(&fenc) ? &fenc : &enc) : "" +endfunction + +function! Mode() + let fname = expand("%:t") + return fname == "__Tagbar__" ? "Tagbar" : + \ fname == "ControlP" ? "CtrlP" : + \ fname == "__Gundo__" ? "Gundo" : + \ fname == "__Gundo_Preview__" ? "Gundo Preview" : + \ winwidth(0) > 60 ? lightline#mode() : "" +endfunction + +function! CtrlPMark() + if expand("%:t") =~ "ControlP" + call lightline#link("iR"[g:lightline.ctrlp_regex]) + return lightline#concatenate([g:lightline.ctrlp_prev, g:lightline.ctrlp_item + \ , g:lightline.ctrlp_next], 0) + else + return "" + endif +endfunction + +function! CtrlPStatusMain(focus, byfname, regex, prev, item, next, marked) + let g:lightline.ctrlp_regex = a:regex + let g:lightline.ctrlp_prev = a:prev + let g:lightline.ctrlp_item = a:item + let g:lightline.ctrlp_next = a:next + return lightline#statusline(0) +endfunction + +function! CtrlPStatusProg(str) + return lightline#statusline(0) +endfunction + +function! TagbarStatusFunc(current, sort, fname, ...) abort + let g:lightline.fname = a:fname + return lightline#statusline(0) +endfunction diff --git a/vimrc b/vimrc index 1298bb8..eaf1ecc 100644 --- a/vimrc +++ b/vimrc @@ -2,12 +2,20 @@ "" Environment "" +" vim environment set directory=$XDG_CACHE_HOME/vim,~/,/tmp set backupdir=$XDG_CACHE_HOME/vim,~/,/tmp set viminfo+=n$XDG_CACHE_HOME/vim/viminfo set rtp=$XDG_CONFIG_HOME/vim,$XDG_CONFIG_HOME/vim/after,$VIM,$VIMRUNTIME let $MYVIMRC="$XDG_CONFIG_HOME/vim/vimrc" +" ctags data +set tags=$XDG_CACHE_HOME/vim/tags + +" keep history +set undodir=$XDG_CACHE_HOME/vim/undo +set undofile + "" "" Plugins @@ -23,8 +31,6 @@ Plugin 'tpope/vim-fugitive' Plugin 'sjl/gundo.vim' Plugin 'itchyny/lightline.vim' Plugin 'tpope/vim-markdown' -Plugin 'scrooloose/nerdtree' -Plugin 'jistr/vim-nerdtree-tabs' Plugin 'ervandew/supertab' Plugin 'majutsushi/tagbar' Plugin 'scrooloose/syntastic' @@ -32,220 +38,107 @@ Plugin 'scrooloose/syntastic' call vundle#end() -"" -"" Plugins -"" - " Lightline -let g:lightline = { - \"active": { - \ "left": [[ "mode", "paste" ], ["fugitive", "filename", "readonly", "ctrlpmark"]], - \ "right": [ ["syntastic", "lineinfo"], ["percent"], ["fileformat", "fileencoding", "filetype"]] - \ }, - \"component": { - \"readonly": '%{&filetype=="help"?"":&readonly?"∅":""}', - \"modified": '%{&filetype=="help"?"":&modified?"+":&modifiable?"":"-"}' - \ }, - \'component_visible_condition': { - \"readonly": '(&filetype!="help"&& &readonly)', - \"modified": '(&filetype!="help"&&(&modified||!&modifiable))' - \ }, - \"component_expand": { - \ "syntastic": "SyntasticStatuslineFlag", - \ }, - \"component_type": { - \ "syntastic": "error", - \ }, - \"component_function": { - \ "filename": "Filename", - \ "fugitive": "Fugitive", - \ "fileformat": "Fileformat", - \ "filetype": "Filetype", - \ "fileencoding": "Fileencoding", - \ "mode": "Mode", - \ "ctrlpmark": "CtrlPMark", - \ } -\ } - -let g:syntastic_check_on_open = 1 " Syntactic -let g:syntastic_enable_signs = 1 " -let g:syntastic_python_checkers = ["flake8", "python"] " -let g:syntastic_python_python_exe = 'python3' " - -let g:tagbar_status_func = "TagbarStatusFunc" " Tagbar -let g:tagbar_compact = 1 " -let g:tagbar_iconchars = ["▸", "▾"] " - -let g:miniBufExplMapWindowNavVim = 1 " MiniBufferExplorer -let g:miniBufExplMapWindowNavArrows = 1 " -let g:miniBufExplMapCTabSwitchBufs = 1 " -let g:miniBufExplModSelTarget = 1 " - -let g:nerdtree_tabs_open_on_gui_startup = 0 " NerdTree -let g:nerdtree_tabs_open_on_console_startup = 0 " - -let g:ctrlp_clear_cache_on_exit=0 " CtrlP -let g:ctrlp_status_func = {"main": "CtrlPStatusMain", "prog": "CtrlPStatusProg"} " -let g:ctrlp_custom_ignore = {"dir": "\v[\/]\.(git|hg|svn|ve)$"} " - -"" -"" Impostazioni generali -"" - -set spell spelllang=it " Controllo ortografico... -set nospell " ...solo quando serve - -set nocompatible " Disabilita la compatibilità con vi -set backspace=2 " Fix per il DEL nel terminale -set hidden " Nasconde i buffers -set history=1000 " Aumenta la cronologia -set incsearch " Ricerca incrementale -set hlsearch " Evidenzia i risultati della ricerca - -set ignorecase " Ricerca case insensitive... -set smartcase " ...per i termini minuscoli -set laststatus=2 " - -set mouse=a " Abilita il supporto al mouse -set showcmd " Mostra il comando mentre lo digit -set ruler " Mostra la posizione della linea/colonna -set vb t_vb= " Disabilita i beep - -set nobackup " Disabilita i backup ~ -set noswapfile " Disabilita i file di Swap -set writebackup " Abilita backup temporanei - -set undodir=$XDG_CACHE_HOME/vim/undo " Mantiene la cronologia -set undofile " - -set wildmenu " Autocompletamento dei comandi -set encoding=utf-8 " Codifica -set nomodeline " Sicurezza -set tabpagemax=10 " Limita il numero di tab a 10 -set showmatch " Evidenzia le parentesi selezionate -set ffs=unix,mac " Formato Unix e Mac per i file -set clipboard=unnamed " Integrazione con la clipboard -set ttyfast " Migliora il redrawing in xterm -filetype indent plugin on " Riconoscimento del tipo del file -set wildignore+=*/tmp/*,*.so,*.swp,*.zip " Altri file da ignorare - -set shiftwidth=4 " Tab -set tabstop=4 " -set noexpandtab " - -set number " Numerazione -set autoindent " Indentazione -set smartindent " -set noshowmode " - -syntax on " Abilita il syntax-highlighter - -set go-=r " Nascondi barre di scorrimento -set go-=L " - - -syntax enable " -hi NonText guifg=bg " - -set titlestring=%t%(\ %M%)%(\ (%{expand(\"%:p:h\")})%)%(\ %a%) " Barra del titolo senza “-VIM” - - -"" -"" Funzioni -"" - -function! Fugitive() - if &ft !~? 'nerdtree\|gundo\|tagbar' && exists("*fugitive#head") - let _ = fugitive#head() - return strlen(_) ? "⭠ "._ : "" - endif - return '' -endfunction - -function! Modified() - return &ft =~ "help" ? "" : &modified ? "+" : &modifiable ? "" : "-" -endfunction - -function! Readonly() - return &ft !~? "help" && &readonly ? "RO" : "" -endfunction - -function! Filename() - let fname = expand('%:t') - return fname == 'ControlP' ? g:lightline.ctrlp_item : - \ fname == '__Tagbar__' ? g:lightline.fname : - \ fname =~ '__Gundo\|NERD_tree' ? '' : - \ ('' != fname ? fname : '[No Name]') . - \ ('' != Modified() ? ' ' . Modified() : '') -endfunction - -function! Fileformat() - return winwidth(0) > 70 ? &fileformat : "" -endfunction - -function! Filetype() - return winwidth(0) > 70 ? (strlen(&filetype) ? &filetype : "no ft") : "" -endfunction - -function! Fileencoding() - return winwidth(0) > 70 ? (strlen(&fenc) ? &fenc : &enc) : "" -endfunction - -function! Mode() - let fname = expand("%:t") - return fname == "__Tagbar__" ? "Tagbar" : - \ fname == "ControlP" ? "CtrlP" : - \ fname == "__Gundo__" ? "Gundo" : - \ fname == "__Gundo_Preview__" ? "Gundo Preview" : - \ fname =~ "NERD_tree" ? "NERDTree" : - \ winwidth(0) > 60 ? lightline#mode() : "" -endfunction - -function! CtrlPMark() - if expand("%:t") =~ "ControlP" - call lightline#link("iR"[g:lightline.ctrlp_regex]) - return lightline#concatenate([g:lightline.ctrlp_prev, g:lightline.ctrlp_item - \ , g:lightline.ctrlp_next], 0) - else - return "" - endif -endfunction - -function! CtrlPStatusMain(focus, byfname, regex, prev, item, next, marked) - let g:lightline.ctrlp_regex = a:regex - let g:lightline.ctrlp_prev = a:prev - let g:lightline.ctrlp_item = a:item - let g:lightline.ctrlp_next = a:next - return lightline#statusline(0) -endfunction - -function! CtrlPStatusProg(str) - return lightline#statusline(0) -endfunction - -function! TagbarStatusFunc(current, sort, fname, ...) abort - let g:lightline.fname = a:fname - return lightline#statusline(0) -endfunction - - "" "" Mapping "" -map " Navigazione tra le finestre -map " -map " -map " +" Windows navigation +map +map +map +map -map :GundoToggle " Apri Gundo -map :call ToggleSpell() " Controllo ortografico -map :NERDTreeTabsToggle " Apri NERDTree -map :TagbarToggle " Apri Tagbar -map :q! " Esci senza salvare +map :GundoToggle +map :call ToggleSpell() +map :NERDTreeTabsToggle +map :TagbarToggle +map :q! "" -"" Varie +"" Options "" -set tags=$XDG_CACHE_HOME/vim/tags " Tags +set spell spelllang=it " Controllo ortografico... +set nospell " ...solo quando serve + +set nocompatible " Disabilita la compatibilità con vi +set backspace=2 " Fix per il DEL nel terminale +set hidden " Nasconde i buffers +set history=1000 " Aumenta la cronologia +set incsearch " Ricerca incrementale +set hlsearch " Evidenzia i risultati della ricerca + +set ignorecase " Ricerca case insensitive... +set smartcase " ...per i termini minuscoli +set laststatus=2 " + +set mouse=a " Abilita il supporto al mouse +set showcmd " Mostra il comando mentre lo digit +set ruler " Mostra la posizione della linea/colonna +set vb t_vb= " Disabilita i beep + +set nobackup " Disabilita i backup ~ +set noswapfile " Disabilita i file di Swap +set writebackup " Abilita backup temporanei + +set wildmenu " Autocompletamento dei comandi +set encoding=utf-8 " Codifica +set nomodeline " Sicurezza +set tabpagemax=10 " Limita il numero di tab a 10 +set showmatch " Evidenzia le parentesi selezionate +set ffs=unix,mac " Formato Unix e Mac per i file +set clipboard=unnamed " Integrazione con la clipboard +set ttyfast " Migliora il redrawing in xterm +filetype indent plugin on " Riconoscimento del tipo del file +set wildignore+=*/tmp/*,*.so,*.swp " Altri file da ignorare + +set shiftwidth=4 " Tab +set tabstop=4 " +set noexpandtab " + +set number " Numerazione +set autoindent " Indentazione +set smartindent " +set noshowmode " + +syntax on " Abilita il syntax-highlighter + +syntax enable +hi NonText guifg=bg + +" Barra del titolo senza “-VIM” +set titlestring=%t%(\ %M%)%(\ (%{expand(\"%:p:h\")})%)%(\ %a%) + + +"" +"" Plugin options +"" + +" Lightline +source $XDG_CONFIG_HOME/vim/lightline.vim + +" Syntastic +let g:syntastic_check_on_open = 1 +let g:syntastic_enable_signs = 1 +let g:syntastic_python_checkers = ["flake8", "python"] +let g:syntastic_python_python_exe = 'python3' + +" Tagbar +let g:tagbar_status_func = "TagbarStatusFunc" +let g:tagbar_compact = 1 +let g:tagbar_iconchars = [">", "∨"] + +" MiniBufferExplorer +let g:miniBufExplMapWindowNavVim = 1 +let g:miniBufExplMapWindowNavArrows = 1 +let g:miniBufExplMapCTabSwitchBufs = 1 +let g:miniBufExplModSelTarget = 1 + +" CtrlP +let g:ctrlp_clear_cache_on_exit=0 +let g:ctrlp_custom_ignore = {"dir": "\v[\/]\.(git|hg|svn|ve)$"} +let g:ctrlp_status_func = {"main": "CtrlPStatusMain", + \"prog": "CtrlPStatusProg"} + +