" .vimrc fichier modifié par Hypathie " ============================================================================ " Configuration générales " ============================================================================ "if a line is already longer than textwidth when inset mode is starded, the line may not be wrapped even if text is added to the "line. filetype plugin indent on syntax on " ## Encodage " Encodage par défaut des buffers en utf-8 set encoding=utf-8 " Encodage par défaut des fichiers en utf-8 set fileencoding=utf-8 " Couleur " J'ai choisi le thème wombat256mod " mkdir -p ~/.vim/colors && cd ~/.vim/colors " wget -O wombat256mod.vim http://www.vim.org/scripts/download_script.php?src_id=13400 " Pour avoir plusieurs couleurs au choix voir : http://vim.wikia.com/wiki/Switch_color_schemes set t_Co=256 color wombat256mod " Recharger ~/.vimrc automatiquement lorsqu'il est édité autocmd! bufwritepost .vimrc source % " retour-chariot set bs=2 " make backspace behave like normal again " Gestion du mapping. Voir : " http://vim.wikia.com/wiki/Mapping_keys_in_Vim_-_Tutorial_%28Part_1%29 " http://vim.wikia.com/wiki/Mapping_keys_in_Vim_-_Tutorial_%28Part_2%29 " http://vim.wikia.com/wiki/Mapping_keys_in_Vim_-_Tutorial_%28Part_3%29 " Pour que la touche soit la virgule let mapleader = "," " Pour supprimer le surlignage issu d'une recherche Ctrl-n noremap :nohl vnoremap :nohl inoremap :nohl " Indenter un boc " Sélectionner un bloc en mode visual et utiliser > ou < pour déplacer le bloc " vers la droite ou vers la gauche vnoremap < >gv " better indentation " Afficher les numéros de ligne set number " Afficher les numéros* " Faire disparaître/réapparaître les numéros de ligne " touche F3 map :set invnumber " La longueur des lignes set tw=129 " tw=79 par défaut " tw=0 pour désacttiver "correspond à textwidth voir : http://vim.wikia.com/wiki/Automatic_word_wrapping "set nowrap " 'wrap : envelopper la ligne' " set nowrap : ne pas mettre en place la taille lors du chargement du fichier édité "set fo+=t " mise en place du tag 't'. Voir http://vim.wikia.com/wiki/Word_wrap_without_line_breaks " Colonnes set colorcolumn=130 " Avoir une colonne verticale à 80 caractères du bord gauche highlight ColorColumn ctermbg=233 " couleur grise de la colonne " Mise en forme des paragraphes vmap Q gq nmap Q gqap " Historique des commandes et de suppression des dernières modifications set history=700 set undolevels=20 "http://vim.wikia.com/wiki/Undo_and_Redo " Utiliser quatre espaces à la place d'une tabulation set tabstop=4 set softtabstop=4 set shiftwidth=4 set shiftround set expandtab " Recherche insensible à la case set hlsearch set incsearch set ignorecase set smartcase " Fait une copie de sauvegarde lors de l'écrasement d'un fichier set backup " Dossier contenant la sauvegarde. N'oubliez pas de le créer et de lui faire un " chmod 700 set backupdir=~/.cache/vim/backup " " ## Sessions et Views " set viewdir=~/.local/var/vim/views " Pour ne pas contrarier pathogen filetype off " voir http://vim.wikia.com/wiki/Filetype.vim " Collage et presse-papier " Avec l'option set paste vim ajoute des indentations lors du collage dans le fichier vim " Avec set nopaste il respecte les indentations déjà existantes du fichier " copié " Avec l'option set pastetoggle= on passe de l'option nopaste à l'option " paste en appuyant sur F2, il faut alors commenter les options set paste " et set nopaste " voir http://vim.wikia.com/wiki/Toggle_auto-indenting_for_code_paste "set paste "set nopaste set pastetoggle= " Pour que le presse-papier primaire (celui du système) soit le buffer sans nom (évite de taper par set clipboard=unnamedplus map "+y " gestion du statusline voir " http://vim.wikia.com/wiki/Displaying_status_line_always set laststatus=2 " Neocomplete native dans vim 7.3.885+ voir vim --version " voir https://github.com/Shougo/neocomplete.vim let g:neocomplete#enable_at_startup = 1 " ou pour completion commande vim omnifunc " voir : http://vim.wikia.com/wiki/Omni_completion set omnifunc=syntaxcomplete#Complete " Pour afficher un menu de completion " Voir : http://vim.wikia.com/wiki/Great_wildmode/ildmenu_and_console_mouse set wildmenu set wildmode=list:longest,full " ============================================================================ " gestion des plugins " ============================================================================ "$ VIMRUNTIME pointe vers un répertoire où la plupart des fichiers requis par "Vim sont placés "Voir : http://vim.wikia.com/wiki/Understanding_VIMRUNTIME runtime ~/.vim/bundle/pathogen/autoload/pathogen.vim " #### pathogen #### " Charger pathogen call pathogen#infect() "call pathogen#helptags() " Mise en place de pathogen pour la gestion des plugins " mkdir -p ~/.vim/autoload ~/.vim/bundle " curl -so ~/.vim/autoload/pathogen.vim " https://raw.github.com/tpope/vim-pathogen/HEAD/autoload/pathogen.vim " On peut installer maintenant les plugins dans le dossier " .vim/bundle/plugin-name/ " #### nerdtree #### " Pour que l'arbre de nerdtree soit à droite let g:NERDTreeWinPos = "right" "" remarque ctrl-w-x pour basculer nerdtree de droite à gauche de la fenêtre " Pour lancer nerdtree à l'ouverture de vim " autocmd VimEnter * NERDTree " Pour que le curseur soit placer dans l'arbre de nerdtree au démarrage de vim " autocmd VimEnter * wincmd p " Donc pour que le curseur soit dans l'arbre de nerdtree si on lance vim sans " ouvrir un fichier mais que le curseur soit dans la fenêtre du fichier ouvert " avec vim autocmd VimEnter * NERDTree " lancer NERDTree au démarrage de vim autocmd VimEnter * if argc() | wincmd p | endif nnoremap q :bp:bd # " quitter un onglet (buffer) "sans quitter vim totalement " #### vim-airline #### " git clone https://github.com/vim-airline/vim-airline.git " ~/.vim/bundle/vim-airline " mettre une ligne d'onglet au dessus (1 onglet=1 buffer) let g:airline#extensions#tabline#enabled = 1 " use mouse in nerdtree : " voir si on a : ":set mouse=a" "let g:NERDTreeMouseMode=3 " raccourcit pour naviguer entre les fichiers (fichier = buffer) nmap n :bn " map mode normal(nmap) puis , "-g ou ,-l (cmd vim pour naviguer entre buffers), " retour à la ligne nmap p :bp set mouse=a " #### vim-nerdtree-tabs #### " configuration de vim-nerdtree-tabs " voir https://github.com/jistr/vim-nerdtree-tabs " Pour faire apparaître/diparaître l'arbre de nerdtree map t NERDTreeTabsToggle "set hidden " Settings for ctrlp " cd ~/.vim/bundle " git clone https://github.com/kien/ctrlp.vim.git let g:ctrlp_max_height = 30 set wildignore+=*.pyc set wildignore+=*_build/* set wildignore+=*/coverage/* " ####################### HTML + CSS ############################ " ######### Vim-polygot " ######### cd ~/.vim/bundle " ######### git clone https://github.com/sheerun/vim-polyglot.git " ######### doc voir : https://github.com/sheerun/vim-polyglot " ######### Exemple pour désactiver le css " ######### vim-polygot " ######### let g:polyglot_disabled = ['css'] " ############################################################################# " Configuration pour html5 " " " avec polyglot dans ~/.vim/bundle/html5.vim.git " cd ~/.vim/bundle/html5.vim.git " git clone https://github.com/othree/html5.vim.git " " Settings for css " " " avec polygot dans ~/.vim/syntax/ " ####################### PHP ############################ " " Configuration native : A mettre en toute fin de .vimrc "function! PhpSyntaxOverride() " hi! def link phpDocTags phpDefine " hi! def link phpDocParam phpType "endfunction " "augroup phpSyntaxOverride " autocmd! " autocmd FileType php call PhpSyntaxOverride() "augroup END " ### ma configuration développement php : " http://blogs.fsfe.org/dervishe/2012/09/27/un-environnement-de-developpement-php-avec-vim/ " bloc de commentaires php : " http://www.vim.org/scripts/script.php?script_id=1355 " CTRL+o en mode édition ajoutera un bloc commentaire avec des infos à " compléter. "For example include into your .vimrc: "source ~/.vim/php-doc.vim "inoremap :call PhpDocSingle()i "nnoremap :call PhpDocSingle() "vnoremap :call PhpDocRange() "source ~/.vim/plugin/php-doc.vim "imap :set paste:call PhpDoc():set nopaste " complete.vim pour la complétion php : fichier word_complte.vim " voir http://www.vim.org/scripts/script.php?script_id=73 : " mkdir ~/.vim/plugin/ " cd ~/.vim/plugin/ " wget http://www.vim.org/scripts/download_script.php?src_id=6504 " mv download_script.php\?src_id\=6504 word_complete.vim " On modifie ~/.vim/plugin/word_complete.vim ainsi : " " =============== file word_complete.vimrc ================= " " User Configuration file for word_complete.vim . " " To use this, uncomment and change the defaults. " " " Do not complete words shorter than this length: " let g:WC_min_len = 3 " " Use this key to accept the offered completion: " let g:WC_accept_key = "" " " ============= end: word_complete.vimrc ================== " http://www.vim.org/scripts/script.php?script_id=3171 : dans ~/.vim/autoload/ " http://www.scintilla.org/php.api : dans ~/.vim/syntax/ " "set complete=.,w,b,u,t,i,k~/.vim/syntax/php.api "autocmd FileType php set omnifunc=phpcomplete#CompletePHP "source ~/.vim/plugin/word_complete.vim "call DoWordComplete() " la vérification de votre code avec php: "on va redéfinir la commande makeprg (make programme) de vim pour la faire "pointer vers la version cli de php avec l’option -l: "set makeprg=/usr/lib64/php5.4/bin/php\ -l\ % "nmap :make:copenL " debug php " utiliser une extension de PHP xdebug. Celle-ci s’installe donc sur le " serveur et se déclenche automatiquement (selon sa configuration) lorsque le " serveur reçoit une requête http avec le paramètre XDEBUG_SESSION_START=1. " installation de xdebug depuis les déplôts debian: " command apt-get -y install php5-xdebug "Rechargez la configuration: " test -e '/etc/init.d/php5-fpm' && command service 'php5-fpm' 'restart' " test -e '/etc/init.d/apache2' && command service 'apache2' 'force-reload' " éditier /etc/php5/mods-available/xdebug.ini " " ajouter à la fin "xdebug.remote_enable=on "xdebug.remote_handler=dbgp "xdebug.remote_host=localhost "xdebug.remote_port=9000 " les 2 autres fichiers : " /etc/php5/apache2/conf.d/20-xdebug.ini " /etc/php5/cli/conf.d/20-xdebug.ini " sont modifiés après enregistrement des ajouts de " /etc/php5/mods-available/xdebug.ini " puis : service apache2 restart " ============================================================================ " Python IDE Setup " ============================================================================ "" Settings for vim-powerline " cd ~/.vim/bundle " git clone git://github.com/Lokaltog/vim-powerline.git "set laststatus=2 " "" Settings for ctrlp "" cd ~/.vim/bundle "" git clone https://github.com/kien/ctrlp.vim.git "let g:ctrlp_max_height = 30 "set wildignore+=*.pyc "set wildignore+=*_build/* "set wildignore+=*/coverage/* " "" Settings for python-mode "" cd ~/.vim/bundle "" git clone https://github.com/klen/python-mode "" map g :call RopeGotoDefinition() "" let ropevim_enable_shortcuts = 1 "" let g:pymode_rope_goto_def_newwin = vnew "" let g:pymode_rope_extended_complete = 1 "" let g:pymode_breakpoint = 0 "" let g:pymode_syntax = 1 "" let g:pymode_syntax_builtin_objs = 0 "" let g:pymode_syntax_builtin_funcs = 0 "" let g:pymode_rope_lookup_project = 0 "map b Oimport ipdb; ipdb.set_trace() # BREAKPOINT " "" Better navigating through omnicomplete option list "" See http://stackoverflow.com/questions/2170023/how-to-map-keys-for-popup-menu-in-vim "set completeopt=longest,menuone "function! OmniPopup(action) " if pumvisible() " if a:action == 'j' " return "\" " elseif a:action == 'k' " return "\" " endif " endif " return a:action "endfunction " "inoremap =OmniPopup('j') "inoremap =OmniPopup('k') " "" Python folding "" mkdir -p ~/.vim/ftplugin "" wget -O ~/.vim/ftplugin/python_editing.vim http://www.vim.org/scripts/download_script.php?src_id=5492 "set nofoldenable " " "" turn off auto complete "" let g:pymode_rope_completion = 0 "" let g:pymode_rope_complete_on_dot = 0