|
@@ -1,13 +1,333 @@
|
|
|
-source ~/.vim/set.vim
|
|
|
-source ~/.vim/plugins.vim
|
|
|
-source ~/.vim/theme.vim
|
|
|
-source ~/.vim/specifiques.vim
|
|
|
-source ~/.vim/mappings.vim
|
|
|
-
|
|
|
-" TODO https://github.com/fholgado/minibufexpl.vim
|
|
|
-" Fix N CTRL-^
|
|
|
-" ou https://github.com/jlanzarotta/bufexplorer
|
|
|
-" ou https://github.com/ngn/vim-buf
|
|
|
-" ou
|
|
|
- " https://bling.github.io/blog/2013/06/02/unite-dot-vim-the-plugin-you-didnt-know-you-need/
|
|
|
- " https://github.com/Shougo/unite.vim
|
|
|
+" set.vim {{{
|
|
|
+"# Pas de compatibilité avec Vi (meilleur comportement)
|
|
|
+set nocompatible
|
|
|
+
|
|
|
+"# Encodage général
|
|
|
+set encoding=utf-8
|
|
|
+
|
|
|
+"# Change le <Leader> en , à la place de \
|
|
|
+let mapleader=","
|
|
|
+
|
|
|
+"# Indentation
|
|
|
+set autoindent
|
|
|
+" Intelligente ({}, commentaires...)
|
|
|
+set smartindent
|
|
|
+" Remplace les tabulations par des espaces
|
|
|
+set expandtab
|
|
|
+" <BS> supprime un niveau d'indentation
|
|
|
+set smarttab
|
|
|
+" Affiche 2 espaces pour les tabulations
|
|
|
+set tabstop=2
|
|
|
+" Indentation de 2 espaces
|
|
|
+set shiftwidth=2
|
|
|
+" Arrondi à un niveau d'indentation
|
|
|
+set shiftround
|
|
|
+
|
|
|
+"# Numérotation
|
|
|
+set number
|
|
|
+
|
|
|
+"# Affichage de caractères spéciaux
|
|
|
+set list
|
|
|
+set listchars=nbsp:¬,tab:»·,trail:·
|
|
|
+
|
|
|
+"# caractères de séparation de fenêtres
|
|
|
+set fillchars+=vert:\ ,fold:\
|
|
|
+
|
|
|
+"# Affichage de la dernière ligne, même non entière
|
|
|
+"# Affichage des caractères spéciaux sous form <hex> plutôt que ^X
|
|
|
+set display=lastline,uhex
|
|
|
+
|
|
|
+"# Affiche toujours la statusline
|
|
|
+set laststatus=2
|
|
|
+
|
|
|
+"# Pas de sonneries
|
|
|
+set noerrorbells
|
|
|
+set novisualbell
|
|
|
+
|
|
|
+"# Limites haute et basse du curseur
|
|
|
+set scrolloff=8
|
|
|
+
|
|
|
+"# Limites gauche et droite du curseur
|
|
|
+"set nowrap
|
|
|
+set sidescrolloff=3
|
|
|
+set sidescroll=1
|
|
|
+
|
|
|
+"# Recherche
|
|
|
+" Va au résultat directement
|
|
|
+set incsearch
|
|
|
+set ignorecase
|
|
|
+set smartcase
|
|
|
+" /g par défaut (remettre /g pour annuler)
|
|
|
+set gdefault
|
|
|
+" Surligne les résultats
|
|
|
+set hlsearch
|
|
|
+" et pour l'enlever : ,/
|
|
|
+nnoremap <silent> <Leader><Space> :nohlsearch<CR>
|
|
|
+
|
|
|
+"# Menus améliorés (e.g <Tab>)
|
|
|
+set wildmenu
|
|
|
+
|
|
|
+"# Désactive les fichiers swap
|
|
|
+set noswapfile
|
|
|
+set nobackup
|
|
|
+set nowritebackup
|
|
|
+
|
|
|
+"# Correction (à activer avec set spell)
|
|
|
+set spelllang=fr,en
|
|
|
+set spellsuggest=5
|
|
|
+
|
|
|
+"# Ne met pas le curseur au début de ligne lors du changement de buffer
|
|
|
+" (impacte aussi gg, G, H, M, L, %, d…)
|
|
|
+set nostartofline
|
|
|
+
|
|
|
+"# Effacement (backspace) fonctionnel
|
|
|
+set backspace=indent,eol,start
|
|
|
+
|
|
|
+"# Priorité aux fichiers avec un . dans l'autocomplétion
|
|
|
+" e.g : prog.c > prog
|
|
|
+set suffixes+=,,
|
|
|
+
|
|
|
+"# Méthode de cryptage (avec :X)
|
|
|
+if version >= 704 && has("patch399")
|
|
|
+ set cryptmethod=blowfish2
|
|
|
+endif
|
|
|
+
|
|
|
+"# Tilde avec motion
|
|
|
+set tildeop
|
|
|
+
|
|
|
+"# Demande une confirmation plutôt que de lever une erreur (:q, :e)
|
|
|
+set confirm
|
|
|
+
|
|
|
+"# Surligne la ligne courante
|
|
|
+set cursorline
|
|
|
+
|
|
|
+"# Autorise de changer de buffer sans sauvegarder
|
|
|
+set hidden
|
|
|
+
|
|
|
+"# Pas de support de la souris
|
|
|
+set mouse=
|
|
|
+
|
|
|
+"# share clipboad with X
|
|
|
+set clipboard+=unnamedplus
|
|
|
+
|
|
|
+"# default *.tex files ftplugin to latex file type
|
|
|
+let g:tex_flavor = "latex"
|
|
|
+" }}}
|
|
|
+" plugins.vim {{{
|
|
|
+"# Chargement de Vundle
|
|
|
+filetype off
|
|
|
+set rtp+=~/.vim/bundle/Vundle.vim
|
|
|
+call vundle#begin()
|
|
|
+Plugin 'gmarik/Vundle.vim'
|
|
|
+
|
|
|
+"# Liste des plugins
|
|
|
+Plugin 'scrooloose/nerdtree'
|
|
|
+Plugin 'jeffkreeftmeijer/vim-numbertoggle'
|
|
|
+Plugin 'tpope/vim-fugitive'
|
|
|
+Plugin 'tpope/vim-dispatch'
|
|
|
+Plugin 'airblade/vim-gitgutter'
|
|
|
+Plugin 'tmhedberg/matchit'
|
|
|
+Plugin 'morhetz/gruvbox'
|
|
|
+Plugin 'bkad/CamelCaseMotion'
|
|
|
+Plugin 'Townk/vim-autoclose'
|
|
|
+Plugin 'tpope/vim-endwise'
|
|
|
+Plugin 'majutsushi/tagbar'
|
|
|
+Plugin 'jeetsukumaran/vim-buffergator'
|
|
|
+Plugin 'mbbill/undotree'
|
|
|
+Plugin 'wesQ3/vim-windowswap'
|
|
|
+Plugin 'vim-airline/vim-airline'
|
|
|
+Plugin 'tpope/vim-commentary'
|
|
|
+Plugin 'ervandew/supertab'
|
|
|
+" TODO lire :h ins-completion
|
|
|
+" TODO : retab <tab> to <C-X><??> ?
|
|
|
+Plugin 'justmao945/vim-clang'
|
|
|
+"Plugin 'Valloric/YouCompleteMe'
|
|
|
+"Plugin 'jvoorhis/coq.vim'
|
|
|
+"Plugin 'vim-scripts/CoqIDE'
|
|
|
+
|
|
|
+" Dépendance pour coquille
|
|
|
+Plugin 'let-def/vimbufsync'
|
|
|
+Plugin 'the-lambda-church/coquille'
|
|
|
+
|
|
|
+" TODO ocaml: fichier .annot, maps (ANNOT : trouve le type du mot sous le curseur :D)
|
|
|
+" http://stackoverflow.com/questions/15514908/which-is-the-current-setup-to-use-ocaml-in-vim/17234163#17234163
|
|
|
+" annot : require compile with -annot
|
|
|
+au BufRead,BufNewFile *.ml,*.mli compiler ocaml
|
|
|
+
|
|
|
+" a tester
|
|
|
+" ocaml : https://github.com/the-lambda-church/merlin
|
|
|
+" coq : https://github.com/the-lambda-church/coquille
|
|
|
+"Plugin 'xolox/vim-misc' " dépendance pour vim-easytags
|
|
|
+"Plugin 'xolox/vim-easytags' " idem ====> Que le fichier en cours ? Aucun intérêt si oui
|
|
|
+"Plugin 'airblade/vim-rooter' " combiné avec les tags (pour éviter d'avoir des fichiers tags dans les sous-dossiers)
|
|
|
+"Plugin 'octol/vim-cpp-enhanced-highlight' " idem
|
|
|
+"Plugin 'Xuyuanp/nerdtree-git-plugin' " => caractères moches
|
|
|
+
|
|
|
+" http://vim.wikia.com/wiki/Compiling_LaTeX_from_Vim#Automatic_LaTeX_plugin (à mettre dans ftplugin/tex ?)
|
|
|
+" Plugin 'coot/atp_vim'
|
|
|
+
|
|
|
+" TODO : cscope ?
|
|
|
+" https://en.wikipedia.org/wiki/Cscope
|
|
|
+" http://vim.wikia.com/wiki/Browsing_programs_with_tags#Comments
|
|
|
+
|
|
|
+call vundle#end()
|
|
|
+
|
|
|
+"# Remap les mouvements normaux (w, b, e) en mouvements CamelCaseMotion
|
|
|
+map <silent> w <Plug>CamelCaseMotion_w
|
|
|
+map <silent> b <Plug>CamelCaseMotion_b
|
|
|
+map <silent> e <Plug>CamelCaseMotion_e
|
|
|
+map <silent> ge <Plug>CamelCaseMotion_ge
|
|
|
+sunmap w
|
|
|
+sunmap b
|
|
|
+sunmap e
|
|
|
+sunmap ge
|
|
|
+
|
|
|
+"# Mapping pour activer/désactiver vim-autoclose
|
|
|
+nmap <silent> <Leader>a :AutoCloseToggle<CR>
|
|
|
+
|
|
|
+"# Mapping pour ouvrir/fermer NERDTree
|
|
|
+nmap <silent> <Leader>t :NERDTreeToggle<CR>
|
|
|
+
|
|
|
+"# Mapping pour ouvrir/fermer TagBar
|
|
|
+nmap <silent> <Leader>r :TagbarToggle<CR>
|
|
|
+
|
|
|
+"# Mapping pour ouvrir/fermer Undotree
|
|
|
+nmap <silent> <Leader>u :UndotreeToggle<CR>
|
|
|
+
|
|
|
+"# Mapping pour GitGutter
|
|
|
+nmap <silent> gu :GitGutterUndoHunk<CR>
|
|
|
+nmap <silent> gn :GitGutterNextHunk<CR>
|
|
|
+nmap <silent> gp :GitGutterPrevHunk<CR>
|
|
|
+
|
|
|
+"# Ouvre NERDTree automatiquement
|
|
|
+"autocmd vimenter * NERDTree
|
|
|
+" focus sur la fenêtre principale
|
|
|
+"autocmd vimenter * wincmd w
|
|
|
+
|
|
|
+" et ferme vim s'il ne reste que NERDTree
|
|
|
+autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif
|
|
|
+" NERDTree à droite
|
|
|
+
|
|
|
+let g:NERDTreeWinPos = "right"
|
|
|
+
|
|
|
+"# Paramètres de buffergator
|
|
|
+" Pas de chemin absolu
|
|
|
+let g:buffergator_show_full_directory_path = 0
|
|
|
+" Désactive tous les raccourcis d'accès
|
|
|
+let g:buffergator_suppress_keymaps = 1
|
|
|
+" Sauf ceux-ci :
|
|
|
+nmap <Leader>b :BuffergatorOpen<CR>
|
|
|
+nmap gb <C-^>
|
|
|
+" Fenêtre en haut, hauteur 8
|
|
|
+let g:buffergator_viewport_split_policy = "T"
|
|
|
+let g:buffergator_hsplit_size = 8
|
|
|
+
|
|
|
+"# Paramètres de Airline
|
|
|
+" Pas de vérifications sur les caractères blancs
|
|
|
+let g:airline#extensions#whitespace#checks = []
|
|
|
+
|
|
|
+"# N'active pas le completement automatiquement pour vim-clang
|
|
|
+"let g:clang_auto = 0
|
|
|
+
|
|
|
+" TODO : plutôt regrouper par outils (coq, …)
|
|
|
+"# Paramètres de vim-commentary
|
|
|
+autocmd FileType coq setlocal commentstring=(*\ %s\ *)
|
|
|
+map <buffer> <silent> <M-c> :CoqLaunch<CR>
|
|
|
+map <buffer> <silent> <M-j> :CoqNext<CR>
|
|
|
+map <buffer> <silent> <M-k> :CoqUndo<CR>
|
|
|
+map <buffer> <silent> <M-l> :CoqToCursor<CR>
|
|
|
+
|
|
|
+
|
|
|
+"# Paramètres de coquille
|
|
|
+" Bouge le curseur
|
|
|
+let g:coquille_auto_move = 'true'
|
|
|
+
|
|
|
+"# Active l'indentation et les plugins spécifiques
|
|
|
+filetype indent on
|
|
|
+filetype plugin on
|
|
|
+" }}}
|
|
|
+" theme.vim {{{
|
|
|
+"# Active la coloration syntaxique
|
|
|
+syntax enable
|
|
|
+
|
|
|
+"# Mode sombre
|
|
|
+set background=dark
|
|
|
+
|
|
|
+"# Thème
|
|
|
+try
|
|
|
+ colorscheme gruvbox
|
|
|
+catch
|
|
|
+endtry
|
|
|
+
|
|
|
+"# Couleurs des mots mal écrits (exmaple)
|
|
|
+highlight clear SpellBad
|
|
|
+highlight SpellBad cterm=underline ctermfg=red
|
|
|
+highlight clear SpellCap
|
|
|
+highlight SpellCap cterm=underline ctermfg=blue
|
|
|
+highlight clear SpellLocal
|
|
|
+highlight SpellLocal cterm=underline ctermfg=blue
|
|
|
+highlight clear SpellRare
|
|
|
+highlight SpellRare cterm=underline ctermfg=blue
|
|
|
+" }}}
|
|
|
+" specifiques.vim {{{
|
|
|
+"# Undo persistant
|
|
|
+if has("persistent_undo")
|
|
|
+ " Crée le dossier s'il le faut
|
|
|
+ silent !mkdir ~/.vim/backups > /dev/null 2>&1
|
|
|
+ set undodir=~/.vim/backups
|
|
|
+ set undofile
|
|
|
+endif
|
|
|
+
|
|
|
+"# Clipboard mélangé avec celui de X
|
|
|
+if has("xterm_clipboard")
|
|
|
+ set clipboard=unnamedplus
|
|
|
+endif
|
|
|
+
|
|
|
+"# Revient à la même position à la réouverture d'un fichier
|
|
|
+augroup DernierePosition
|
|
|
+ autocmd BufReadPost *
|
|
|
+ \ if line("'\"") > 0 && line("'\"") <= line("$") |
|
|
|
+ \ exe "normal! g`\"" |
|
|
|
+ \ endif
|
|
|
+augroup END
|
|
|
+" }}}
|
|
|
+" mappings.vim {{{
|
|
|
+"# Accès au début de ligne : au premier caractère non blanc
|
|
|
+" (le premier caractère est toujours accessible avec | )
|
|
|
+nmap 0 ^
|
|
|
+" 0 sans touche shift
|
|
|
+nmap à 0
|
|
|
+
|
|
|
+"# Remap <C-space> (= <Nul>) pour l'autocomplétion (<Tab>)
|
|
|
+imap <Nul> <Tab>
|
|
|
+
|
|
|
+"# Commande w!! pour enregistrer avec sudo
|
|
|
+"cmap w!! %!sudo tee > /dev/null %
|
|
|
+cabbrev w!! %!sudo tee > /dev/null %
|
|
|
+
|
|
|
+"# Désactive l'accès au mode Ex
|
|
|
+map Q <Nop>
|
|
|
+
|
|
|
+"# Mappings pour lancer :Make (vim-dispatch) (a)synchrone
|
|
|
+map <Leader>m :Make<CR>
|
|
|
+map <Leader>M :Make!<CR>
|
|
|
+
|
|
|
+"# Mapping pour activer/désactiver l'affichage "visuel"
|
|
|
+" des caracètres spéciaux (e.g : tabulation)
|
|
|
+nmap <Leader>l :set list!<CR>
|
|
|
+
|
|
|
+"# Mapping pour enlever tous les espaces de fin de ligne
|
|
|
+nmap <Leader>s :%s/\s\+$//e<CR>:nohlsearch<CR>
|
|
|
+
|
|
|
+"# Mapping pour créer le fichier tags (nécessite ctags)
|
|
|
+nmap <silent> <Leader><Leader>g :silent r!ctags -R &<CR>:echo "génération des tags lancée"<CR>
|
|
|
+
|
|
|
+"# Mapping pour aller à la faute précédente/suivante (spell)
|
|
|
+nmap (s [s
|
|
|
+nmap )s ]s
|
|
|
+
|
|
|
+"# Mapping pour aller à la marque au caractère près
|
|
|
+nmap ' `
|
|
|
+" }}}
|
|
|
+
|
|
|
+" vim: set fen fdm=marker:
|