# """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" # " Fichier de configuration de Vim # " Mis à jour le 05/03/09 # " # " # """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" # # """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" # " Options affichages VIM # """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" # # set hlsearch "Met en surbrillance le résultat de la recherche # set history=50 "Historique de 50 commandes # set number "Affiche le numéro des lignes # set ruler "Afiche la position du curseur # set showcmd "Affiche la commande en cours # set laststatus=2 "Affiche la barre de statut # set mouse=a "Active la souris # set wildmenu "Active la fenetre des possibilités # colorscheme morning # # """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" # " Personnalisation de l'affichage VIM # """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" # # " Informations affichées dans la barre de statut # "set statusline=%<%f%h%m%r%=%{&ff}\ %l,%c%V\ %P\%([%{Tlist_Get_Tagname_By_Line()}]%) # "set statusline=%a\ %t%1*%m%*%10l/%2*%L%*%6c%V # "set statusline=%a\ %t%1*%m%*%10l/%2*%L%*%6c%V/%2*%{strlen(getline('.'))}%*%10{getfsize(expand('%'))}o # # set statusline=%<%f\ %h\ %m\ %r\ %=%b\ Ox%B\ %c[%v],%l\ %P # # """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" # "Parametres supplémentaires VIM # """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" # # set nocompatible "Mode non-compatible avec vi # filetype plugin on "Detection automatique du type du fichier # set backspace=2 # set tabstop=4 "Nombre d'espace pour une tabulation # set shiftwidth=4 "Nombre de tabulations pour l'indentation # set softtabstop=4 "Nombre d'espaces pour la tabulation (édition) # set textwidth=78 "Limite le nombre de caractères par ligne # set autoread "Fichier relu automatiquement par VIM # set showmatch "Signalisation de fermeture des (),[],{} # set matchtime=2 "Fixe la durée de signalisation sm à 2sec # set incsearch "Recherche incrémentale # set ignorecase "Ne prend pas en compte la casse pour une recherche # set smartcase # syntax on # set nojoinspaces # "implémentation de ctags, nécessaire pour le plugin 'taglist' # let Tlist_Ctags_Cmd = '/usr/bin/ctags' # # "Permet de passer du dernier caratere d'une ligne au premier de la suivante # set whichwrap=b,s,<,>,[,] # # """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" # "Paramètres d'ouverture de fichier # """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" # # "Reprendre à l'endroit ou on a quitter le fichier # set viminfo='10,\"100,:20,%,n~/.vim/.viminfo # au BufReadPost * if line("'\"") > 0|if line("'\"") <= line("$")|exe("norm '\"")|else|exe "norm $"|endif|endif # # """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" # " Options basiques spéciales Python # """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" # ""Détection du type de fichier pour l'indentation # if has("autocmd") # filetype indent on # endif # "" Pour visualiser les indentations # set list # set lcs:tab:>-,trail:. # " # ""Active la completion Python # au FileType python set omnifunc=pythoncomplete#Complete # au FileType python set expandtab # au FileType python set fdm=indent " Repli selon l'indentation # au FileType python setlocal textwidth=79 # au FileType python set foldlevel=2 " Masque les indentations >2 niveaux # """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" # " Options de sauvegardes des fichiers # """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" # # " Backup dans ~/.vim/backup # if filewritable(expand("~/.vim/backup")) == 2 # " comme le répertoire est accessible en écriture, # " on va l'utiliser. # set backupdir=$HOME/.vim/backup # else # if has("unix") || has("win32unix") # " C'est c'est un système compatible UNIX, on # " va créer le répertoire et l'utiliser. # call system("mkdir $HOME/.vim/backup -p") # set backupdir=$HOME/.vim/backup # endif # endif # " Sauvegarde les scripts en executable # au BufWritePost * call ModeChange() # # "Sauvegarde et restauration automatique des vues # au BufWinLeave *.py mkview # au BufWinEnter *.py silent loadview # # " Chemin de sauvegarde par défaut des vues # set viewdir=~/.vim/saveview # # " Utilisation de la trame 'python.py' à l'ouverture d'un nouveau fichier *.py # au BufNewFile *.py silent! 0r ~/.vim/templates/python.py # # """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" # " Fonctions # """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" # # "Donner des droits d'exécution si le fichier commence par #! et contient /bin/ # "dans son chemin # function ModeChange() # if getline(1) =~ "^#!" # if getline(1) =~ "/bin/" # silent !chmod a+x # endif # endif # endfunction # # " Actualise la date de modification du fichier si le texte 'Mise à jour le 'i # " figure dans les 20 premières lignes. # " Ce texte peut etre précédé de 20 caractères. # " Restaure la position du curseur en employant des marques. # function! LastModified() # if &modified # normal ms # let n = min([20, line("$")]) # exe '1,' . n . 's#^\(.\{,10}Mis à jour le \).*#\1' . # \ strftime('%d/%m/%y') . '#e' # normal `s # endif # endfun # autocmd BufWritePre * call LastModified() # # "Stocke des marques-pages dans le fichier .vim/vims # function! MoshBookmark() # redir >> ~/.vim/bookmark # echo "Rappel: taper pour ouvrir le marque page" # echo strftime("%d-%b-%Y %a %H:%M") # echo "Commentaire: " # echo "vim ". expand("%:p").':'.line('.') # echo ' word='.expand("") # echo ' cline='.getline('.') # redir END # endfunction # command! MoshBookmark :call MoshBookmark() # # """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" # " Mapping # """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" # "Insère la date en mode visuel # inoremap # Mis à jour le =strftime("%d/%m/%Y") # # "Masque les résultats de la recherche # map :nohlsearch # # # # # "Active la touche pour lancer les scripts # au BufNewFile,BufRead *.py map :w!:!python % # au BufNewFile,BufRead *.py imap :w!:!python % # # "Remplace le par un et retour en mode normal # "en mode graphique uniquement # if has("gui_running") # map i # set mousehide " On cache la souris en mode gui # set ch=2 " ligne de commande dans deux lignes # endif # # "Active la barre de Taglist # nnoremap :TlistToggle # let Tlist_Use_Right_Window = 0 " affiche les tags sur le côté gauche # let Tlist_Process_File_Always = 1 # let Tlist_Exit_OnlyWindow = 1 "vim se ferme s'il reste uniquement la # "fenêtre des tags