123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333 |
- " 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:
|