" " ---------------------------------------------------------------------- " | Fichiers de configuration de vim | " | Emplacement : ~/.vim/vimrc | " | Auteur : Gardouille | " | Version : 1.12 | " | | " | ----------------------- Modification à apporter -------------------| " | Modifications à apporter: | " | - voir le pliage/dépliage (za, zm, zr, ...) | " | - voir l'option d'encodage (encoding, ...) | " | - remapper l'incrémentation sur un chiffre avec CTRL-A | " | - permettre une incrémentation sur les lettres, hexa, ... | " | en plus des chiffres | " -------------------------------------------------------------------- | " | | " | --------------------------------------- Liens utiles ------------- | " | Liens utiles: | " | http://www.debian-fr.org/vim-t8605.html | " | http://www.swaroopch.com/notes/Vim_fr:Table_des_Mati%C3%A8res | " | http://www.rayninfo.co.uk/vimtips.html | " | http://www.vim.org/tips/index.php | " | http://linuxfr.org/news/vim-f%C3%AAte-son-20e%C2%A0anniversaire | " | http://vimdoc.sourceforge.net/htmldoc/map.html#mapmode-n | " ---------------------------------------------------------------------- """""""""""""""""""""""""""""""""""""""""""""""" " Diverses options """""""""""""""""""""""""""""""""""""""""""""""" " For all default colorschemes, see `ls -l /usr/share/vim/vim*/colors/` " For extra colorschemes, see `ls -l ~/.vim/colors` set t_Co=256 " for tmux 256 colors colorscheme codedark " default colorscheme set background=dark syntax on " activation de la coloration syntaxique set number " numérotation des lignes hi LineNr ctermbg=none ctermfg=2 "set autoindent " indentation automatique avancée "set smartindent " indentation plus intelligente "set backspace=indent,eol,start " autorisation du retour arrière set bs=2 " redéfinition du backspace set history=50 " fixe l'historique à 50 commandes maxi set ruler " affiche la position courante au sein du fichier set showcmd " affiche la commande en cours set shiftwidth=2 " taille des tabulations (nb d'espace) set softtabstop=2 " taille des tabulations mixtes (tabulations et espaces) set tabstop=2 " taille des tabulations à l'affichage (nb d'espace) "set expandtab " transforme les tabulations en espaces set showmatch " vérification présence (, [ ou { à la frappe de ), ] ou } filetype plugin indent on " détection automatique du type de fichier autocmd FileType text setlocal textwidth=80 " les fichiers de type .txt sont limités à 80 caractères par ligne autocmd FileType tex setlocal textwidth=80 " les fichiers de type .tex sont limités à 80 caractères par ligne autocmd Filetype gitcommit setlocal textwidth=72 " set fileformats=unix,mac,dos " gestion des retours chariot en fonction du type de fichier set hlsearch " surligne les résultats de la recherche " set nohls " ne pas surligner les résultats de la recherche set incsearch " recherche en même temps que la saisie set ignorecase " ne pas prendre en compte la casse pour les recherches "set noic " Prendre en compte la casse pour les recherches set smartcase " recherche respectueuse de la case quand une majuscule est saisie set cursorline " met en avant la ligne courante "set cursorcolumn " met en avant la colonne courante set so=2 " Place le curseur sur la 2ème ligne lors de mouvements verticaux set cpoptions+=$ " ajoute un $ pour indiquer la fin d'un remplacement set title " Modifier le titre du terminal (ne semble pas fonctionner avec screen) set autochdir " Modifie le répertoire courant pour vim en fonction du fichier ouvert set wildignore=*.swp,*.bak " Liste des fichiers ignorés lors de l'auto-complétion set virtualedit=all " Permet de se déplacer la ou il n'y a pas de caractères set formatoptions+=awt "set colorcolumn=81 " Coloration bar caractère 80 set wrapmargin=0 set foldmethod=marker " Use folding with marker (default: {{{ or }}}) " Encodage par défaut des buffers et des fichiers set encoding=utf-8 set fileencoding=utf-8 " Path pour la recherche de fichier avec :find, :sfind et :tabfind " :find ouvrira à la place du fichier en cours le fichier trouvé " :sfind splittera l'écran " :tabfind ouvrira le fichier dans un nouvel onglet set path=.,/usr/include,/usr/local/include " Couleur des éléments "hi StatusLine ctermfg=black ctermbg=green "hi TabLineFill ctermfg=black ctermbg=grey "hi TabLine ctermfg=black ctermbg=red "hi TabLineSel ctermfg=green ctermbg=black """""""""""""""""""""""""""""""""""""""""""""""" " Touche MapLeader : """""""""""""""""""""""""""""""""""""""""""""""" " Activation de la touche mapleader qui permet de faire des combinaisons " supplémentaires let mapleader = "," let g:mapleader = "," " Sauvegarde rapide nmap w :w imap w :w nmap q :wq imap q :wq map a :wa " Sauvegarder et exécuter le fichier courant nmap x :w:!./"%" " Édition rapide de vimrc avec +e map e :e! ~/.vim/vimrc """ Buffers " Gestion des splits map :split map :vsplit " Navigation " Détails sur les buffers: http://vim-fr.org/index.php/Buffer "map p :bp "map s :bn map b :b "Navigation splits map j j map h h map k k map l l " Save with sudo permissions nmap s :w !sudo tee % imap s :w !sudo tee % """""""""""""""""""""""""""""""""""""""""""""""" " UN PEU D'EXERCICE " H pour <- " L pour -> " J pour flèche bas " K pour flèche haut """""""""""""""""""""""""""""""""""""""""""""""" "Désactiver les flèches " Mode commande nmap nmap nmap nmap " Mode insertion: imap imap imap imap """""""""""""""""""""""""""""""""""""""""""""""" " Mapping - Raccourcis clavier """""""""""""""""""""""""""""""""""""""""""""""" "Désactive le surlignage des résultats d'une recherche en utilisant CTRL-n nnoremap :set hlsearch!:set hlsearch? "Ajoute une ligne avant le curseur sans passer en mode insertion nnoremap o "Ajoute une ligne après le curseur sans passer en mode insertion map O " Activer/désactiver la surbrillance des recherches avec F2 noremap :set hlsearch!:set hlsearch? " Activer/désactiver la correction avec F3 "noremap :set spell!:set spell? " Esc mapping in insert mode imap jj imap àà imap """""""""""""""""""""""""""""""""""""""""""""""" " Vim-Scripts : """""""""""""""""""""""""""""""""""""""""""""""" "########################## " Vundle : "########################## " https://github.com/VundleVim/Vundle.vim " IF not available, use: " git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/vundle set nocompatible " be iMproved """ User interface {{{ """ Custom highlighting, where NONE uses terminal background {{{ function! CustomHighlighting() highlight Normal ctermbg=NONE highlight NonText ctermbg=NONE highlight LineNr ctermbg=NONE highlight SignColumn ctermbg=NONE highlight SignColumn guibg=#151515 highlight CursorLine ctermbg=235 endfunction call CustomHighlighting() """ }}} """ }}} filetype plugin indent on " required! "########################## " Pathogen : "########################## " http://github.com/tpope/vim-pathogen "Plug "tpope/vim-pathogen" "execute pathogen#infect() "########################## " Nerd_tree : "########################## " https://github.com/scrooloose/nerdtree " Nerd_tree - Permet d'afficher une arborescence du répertoire courant. "Plug "scrooloose/nerdtree" " Raccourcis de la commande avec F10 map :NERDTreeToggle " Et n nmap n :NERDTreeToggle " Placer le volet à droite let NERDTreeWinPos='right' "########################## " Nerd_commenter : "########################## " https://github.com/scrooloose/nerdcommenter " Mettre en commentaire une ligne " Également disponible dans le paquet vim-scripts "Plug "scrooloose/nerdcommenter" " Commentaire basique, mais permet également de décommenter (Attention, il y a " un espace avec le C!) " Commenter/décommenter une ligne map ,, c "map c imap " Commentaire plus sexy, mais impossible à décommenter map cs " Note, utilisé le mode visuel ligne SHIFT+V ou le mode visuel bloc CTRL+V "########################## " Supertab-continued : "########################## " http://github.com/ervandew/supertab " SuperTab offre une autocomplétion amélioré. " http://www.vim.org/scripts/script.php?script_id=182 "Plug "ervandew/supertab" " CTRL-N en mode insertion pour rechercher le suivant " CTRL-X - CTRL-L: rechercher une ligne complète à partir du début " CTRL-X - CTRL-K: rechercher dans le dictionnaire " Permet notamment de compléter avec des noms de variables déjà définies. " Pas de configuration spécifiques "imap d  "imap l  "########################## " Syntastic : "########################## " https://github.com/scrooloose/syntastic "Plug "scrooloose/syntastic" " Won't work ... let g:syntastic_mode_map = { 'mode': 'active', \ 'active_filetypes': ['markdown', 'yaml', 'php', 'ruby', 'sh', 'zsh'] } let g:syntastic_yaml_checkers = ['yamllint'] "########################## " Neocomplcache : "########################## " http://github.com/Shougo/neocomplcache "Plug "Shougo/neocomplcache" " Use neocomplcache. let g:neocomplcache_enable_at_startup = 1 " Set minimum syntax keyword length. let g:neocomplcache_min_syntax_length = 3 let g:neocomplcache_lock_buffer_name_pattern = '\*ku\*' "########################## " Airline : "########################## " https://github.com/bling/vim-airline "Plug 'bling/vim-airline' " Toujours afficher la barre de statut "set laststatus=2 " always show statusline "" Smarter tab line "let g:airline#extensions#tabline#enabled = 1 ""let g:airline#extensions#tabline#left_sep = 'ˇ' ""let g:airline#extensions#tabline#left_alt_sep = 'v' "let g:airline_powerline_fonts = 1 ""let g:airline_theme='molokai' ""let g:airline_theme='lucius' "let g:airline_theme='monochrome' "########################## " Tmuxline : "########################## " https://github.com/edkolev/tmuxline.vim "Plug 'edkolev/tmuxline.vim' "########################## " Lightline : "########################## """ Lightline {{{ set laststatus=2 " always show statusline let g:lightline = { \ 'colorscheme': 'jellybeans', \ 'active': { \ 'left': [ \ ['mode', 'paste'], \ ['readonly', 'fugitive'], \ ['ctrlpmark', 'bufferline'] \ ], \ 'right': [ \ ['lineinfo'], \ ['percent'], \ ['fileformat', 'fileencoding', 'filetype', 'syntastic'] \ ] \ }, \ 'component': { \ 'paste': '%{&paste?"!":""}' \ }, \ 'component_function': { \ 'mode' : 'MyMode', \ 'fugitive' : 'MyFugitive', \ 'readonly' : 'MyReadonly', \ 'ctrlpmark' : 'CtrlPMark', \ 'bufferline' : 'MyBufferline', \ 'fileformat' : 'MyFileformat', \ 'fileencoding' : 'MyFileencoding', \ 'filetype' : 'MyFiletype' \ }, \ 'component_expand': { \ 'syntastic': 'SyntasticStatuslineFlag', \ }, \ 'component_type': { \ 'syntastic': 'middle', \ }, \ 'subseparator': { \ 'left': 'ᑄ', 'right': 'ᑁ' \ } \ } let g:lightline.mode_map = { \ 'n' : ' Normal ', \ 'i' : ' Insert ', \ 'R' : ' Replace ', \ 'v' : ' Visual ', \ 'V' : 'Visual-L', \ 'c' : ' C ', \ "\" : 'Visual-B', \ 's' : ' Sub ', \ 'S' : 'Sub-L', \ "\" : 'Sub-B', \ '?' : ' ' } function! MyMode() let fname = expand('%:t') return fname == '__Tagbar__' ? 'Tagbar' : \ fname == 'ControlP' ? 'CtrlP' : \ winwidth('.') > 60 ? lightline#mode() : '' endfunction function! MyFugitive() try if expand('%:t') !~? 'Tagbar' && exists('*fugitive#head') let mark = '± ' let _ = fugitive#head() return strlen(_) ? mark._ : '' endif catch endtry return '' endfunction function! MyReadonly() return &ft !~? 'help' && &readonly ? '≠' : '' " or ⭤ 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! MyBufferline() call bufferline#refresh_status() let b = g:bufferline_status_info.before let c = g:bufferline_status_info.current let a = g:bufferline_status_info.after let alen = strlen(a) let blen = strlen(b) let clen = strlen(c) let w = winwidth(0) * 4 / 11 if w < alen+blen+clen let whalf = (w - strlen(c)) / 2 let aa = alen > whalf && blen > whalf ? a[:whalf] : alen + blen < w - clen || alen < whalf ? a : a[:(w - clen - blen)] let bb = alen > whalf && blen > whalf ? b[-(whalf):] : alen + blen < w - clen || blen < whalf ? b : b[-(w - clen - alen):] return (strlen(bb) < strlen(b) ? '...' : '') . bb . c . aa . (strlen(aa) < strlen(a) ? '...' : '') else return b . c . a endif endfunction function! MyFileformat() return winwidth('.') > 90 ? &fileformat : '' endfunction function! MyFileencoding() return winwidth('.') > 80 ? (strlen(&fenc) ? &fenc : &enc) : '' endfunction function! MyFiletype() return winwidth('.') > 70 ? (strlen(&filetype) ? &filetype : 'no ft') : '' endfunction let g:ctrlp_status_func = { \ 'main': 'CtrlPStatusFunc_1', \ 'prog': 'CtrlPStatusFunc_2', \ } function! CtrlPStatusFunc_1(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! CtrlPStatusFunc_2(str) return lightline#statusline(0) endfunction let g:tagbar_status_func = 'TagbarStatusFunc' function! TagbarStatusFunc(current, sort, fname, ...) abort let g:lightline.fname = a:fname return lightline#statusline(0) endfunction function! s:syntastic() SyntasticCheck call lightline#update() endfunction augroup AutoSyntastic autocmd! execute "autocmd FileType " . \join(g:syntastic_mode_map["active_filetypes"], ",") . \" autocmd BufWritePost :call s:syntastic()" augroup END """ }}} """""""""""""""""""""""""""""""""""""""""""""""" " Paramétrage de exuberant-ctags "http://ngressier.developpez.com/articles/vim/vim-plugin-taglist/#LC "Indispensable pour le bon fonctionnement du plugin Taglist """"""""""""""""""""""""""""""""""""""""""""""""" let Tlist_Ctags_Cmd = '/usr/bin/ctags' "########################## " Showmark : "########################## " https://github.com/jacquesbh/vim-showmarks "Plug 'jacquesbh/vim-showmarks' " Show fucking marks noremap ' :ShowMarksOnce ' "########################## " CTRL P : "########################## " https://github.com/kien/ctrlp.vim "Plug 'kien/ctrlp.vim' "########################## " undo-tree : "########################## " https://github.com/mbbill/undotree "Plug 'mbbill/undotree' " UndoTree map u :UndotreeToggle " Mapping pour l'activer/désactiver "########################## " auto-close : "########################## " Fermeture automatique des (, [, {, ... " https://github.com/Townk/vim-autoclose "Plug 'Townk/vim-autoclose' " Disable auto-close imap c :AutoCloseToggle "avance d'un caratere en mode insert (vim-autoclose -> plus besoin de fermer les (, [, {, ...) imap n l i "########################## " tagbar: "########################## " https://github.com/majutsushi/tagbar "Plug 'majutsushi/tagbar' " Open Tagbar: nmap t :TagbarToggle "########################## " fugitive: "########################## " https://github.com/tpope/vim-fugitive "Plug 'tpope/vim-fugitive' "########################## " vim-markdown-preview: "########################## " https://github.com/JamshedVesuna/vim-markdown-preview "Plug 'JamshedVesuna/vim-markdown-preview' " Render markdown files in local " Change preview hotkey to mm let vim_markdown_preview_hotkey='mm' " Use qutebrowser as default browser let vim_markdown_preview_browser='qutebrowser' " Additionnal hotkey to run grip nmap M :w!:!grip $(echo %) --export --no-inline ~/.vim/tmp/grip.preview.html:!qutebrowser ~/.vim/tmp/grip.preview.html " preview_toggle " 0 (default): Preview with hotkey mapping " 2 : Preview on buffer write let vim_markdown_preview_toggle=0 " Preview with Github rendering tool (grip) " 0 (default): Don't use Github " 1 : Render with GitHub flavoured markdown "let vim_markdown_preview_github=1 "########################## " openssl: "########################## " https://github.com/ "Plug 'openssl.vim' "########################## " Exuberant-ctags: "########################## " https://github.com/b4n/ctags or debian package for Sid is SVN based """""""""""""""""""""""""""""""""""""""""""""""" " Paramétrage du plugin Taglist "http://ngressier.developpez.com/articles/vim/vim-plugin-taglist/#LD "Indispensable pour la deuxième status line définie dans ce fichier "Si première utilisation, faire un vim dans le dossier ~/.vim/doc/ et faire ":helptags" pour activer le plugin """""""""""""""""""""""""""""""""""""""""""""""" "Mappage de l'ouverture et fermeture de la fenêtre des tags avec la touche F4 "nnoremap :TlistToggle ""map :TlistToogle "let Tlist_WinWidth = 50 "let Tlist_Process_File_Always = 1 " activation permanente du plugin pour la barre de statut "let Tlist_Exit_OnlyWindow = 1 " vim se ferme si il reste uniquement la fenêtre des tags "let Tlist_Use_Right_Window = 1 " affiche les tags sur le côté droit de l'écran " ╔═╗╦ ╦ ╦╔═╗ " ╠═╝║ ║ ║║ ╦ " ╩ ╩═╝╚═╝╚═╝ Gestionnaire de plugins vim " Installation automatique de plug : if empty(glob('~/.vim/autoload/plug.vim')) silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim autocmd VimEnter * PlugInstall --sync | source $MYVIMRC endif " « :source ~/.vimrc » puis « :PlugInstall ». q pour quitter. " Commandes : https://github.com/junegunn/vim-plug#commands call plug#begin('~/.vim/plugged') " Colorschemes Plug 'dracula/vim' Plug 'tomasiser/vim-code-dark' " Display a tree of directories Plug 'scrooloose/nerdtree' " Super easy commenting, toggle comments, … Plug 'scrooloose/nerdcommenter' " everything Plug 'ervandew/supertab' " Awesome syntax checker " REQUIREMENTS: See :h syntastic-intro Plug 'scrooloose/syntastic' " For ansible Plug 'pearofducks/ansible-vim' " Advanced auto-completion system Plug 'Shougo/neocomplcache' " Markdown syntax Plug 'plasticboy/vim-markdown' " Markdown preview Plug 'JamshedVesuna/vim-markdown-preview' " A pretty statusline, bufferline integration Plug 'itchyny/lightline.vim' Plug 'bling/vim-bufferline' "Plug 'bling/vim-airline' "Bundle 'edkolev/tmuxline.vim' " Give viual aid to navigate marks Plug 'jacquesbh/vim-showmarks' " Furry finder (files, mru, …) Plug 'kien/ctrlp.vim' " Undo history visualizer Plug 'mbbill/undotree' " Autoclose (, ", … Plug 'Townk/vim-autoclose' " Functions, class data … " REQUIREMENTS: (exuberant)-ctags Plug 'majutsushi/tagbar' " Git wrapper inside Vim Plug 'tpope/vim-fugitive' call plug#end() """""""""""""""""""""""""""""""""""""""""""""""" " Gestion des onglets """""""""""""""""""""""""""""""""""""""""""""""" " Nouvel onglet map :tabnew " Changer d'onglet map :tabnext " Onglet suivant map :tabprevious " Se déplacer à l'onglet suivant map :tabnext " Se déplacer à l'onglet précédent map :tabprevious " Fermer l'onglet map :tabclose """"""""""""""""""""""""""""""""""""""""""""""""""" " Dictionnaire français """"""""""""""""""""""""""""""""""""""""""""""""""" set dictionary+=/usr/share/dict/french "Liste des propositions avec CTRL-X_CTRL-K ou xk imap xk  """"""""""""""""""""""""""""""""""""""""""""""""""" " Correction orthographique "-------------En mode INSERTION :------------------ "Liste des propositions : CTRL-X_s "-------------En mode COMMANDE :------------------- "Liste des propositions : z= "Prochain mot mal orthographié : ]s "Précédent mot mal orthographié : [s "Ajouter un mot au dictionnaire: zg """"""""""""""""""""""""""""""""""""""""""""""""""" "if has("spell") "" La commande z= affiche 10 suggestions. En mode insertion: CRTL-X_s "set spellsuggest=10 "" On règle les touches d'activation manuelle de la correction orthographique "noremap sf :setlocal spell spelllang=fr "noremap se :setlocal spell spelllang=en "noremap sn :setlocal nospell "" On active automatiquement le mode spell pour les fichiers texte et LaTeX "autocmd BufEnter *.txt,*.tex set spell "" On applique le dictionnaire français pour tous les types de fichiers "autocmd BufEnter * set spelllang=fr "endif "if !filewritable ($HOME."/.vim/spell") " Si le répertoire n'existe pas "call mkdir($HOME."/.vim/spell", "p") " Création du répertoire de sauvegarde "endif " Choix de la langue de l'aide set helplang=fr " Liste des abréviations textes: iabbrev cad c'est-à-dire iabbrev svp s'il-vous-plaît iabbrev stp s'il-te-plaît iabbrev pcq parce que " hand emoji {{{ iabbrev :ok: 👌 iabbrev :ok_hand: 👌 iabbrev :+1: 👍 iabbrev :+: 👍 iabbrev :-1: 👎 iabbrev :-: 👎 iabbrev :thumbup: 👍 iabbrev :thumbdown: 👎 iabbrev :victoire: ✌️ iabbrev :victory: ✌️ iabbrev :v: ✌️ iabbrev :V: ✌️ " " }}} " face emojy {{{ iabbrev :D: 😀 iabbrev :grin: 😀 iabbrev :grinning: 😀 iabbrev -__- 😑 iabbrev :demon_happy: 😈 iabbrev :devil_happy: 😈 iabbrev :happy_demon: 😈 iabbrev :happy_devil: 😈 iabbrev :face_palm: 🤦 iabbrev :facepalm: 🤦 iabbrev :happy: 😊 iabbrev :happy_face: 😊 iabbrev :heart_eye: 😍 iabbrev :heart_eyes: 😍 iabbrev :eyes_heart: 😍 iabbrev :eye_heart: 😍 iabbrev :joy: 😂 iabbrev :kiss_heart: 😘 iabbrev :kissing_heart: 😘 iabbrev :heart_kiss: 😘 iabbrev :kiss: 😙 iabbrev :laugh: 😆 iabbrev :laughing: 😆 iabbrev :lol: 😆 iabbrev :mask: 😷 iabbrev :relieved: 😌 iabbrev :relieve: 😌 iabbrev :sad_relieved: 😥 iabbrev :sad_relieve: 😥 iabbrev :scream: 😱 iabbrev :smile: 🙂 iabbrev :skull: 🕱 iabbrev :pensive: 😔 iabbrev :smirk: 😏 iabbrev :amused: 😏 iabbrev :unamused: 😒 iabbrev :rage: 😡 iabbrev :sob: 😭 iabbrev :sunglass: 😎 iabbrev :sunglasses: 😎 iabbrev :sweat_smile: 😅 iabbrev :sweat_cold: 😓 iabbrev :cold_sweat: 😓 iabbrev :ss: 😅 iabbrev :tired: 😫 iabbrev :tongue: 😛 iabbrev :sad: 😟 iabbrev :worry: 😟 iabbrev :worried: 😟 iabbrev :stuck_out_tongue: 😛 iabbrev :vomi: 🤮 iabbrev :vomiting: 🤮 iabbrev :vomiting_face: 🤮 iabbrev :face_vomiting: 🤮 iabbrev :face_vomi: 🤮 iabbrev :wink: 😉 iabbrev :yum: 😋 iabbrev :yummy: 😋 " }}} " Symbol emoji {{{ iabbrev :check: ✔ iabbrev :error: ✖ iabbrev :heart: ♥️ " }}} " Text emoticon {{{ iabbrev :cheerleader: ✽-(ˆ▽ˆ)/✽ ✽\(ˆ▽ˆ)-✽ iabbrev :cheerleaders: ✽-(ˆ▽ˆ)/✽ ✽\(ˆ▽ˆ)-✽ iabbrev :cheer: ✽-(ˆ▽ˆ)/✽ ✽\(ˆ▽ˆ)-✽ iabbrev :piu: ヽ(°◇° )ノ iabbrev :rah: (╯°□°)╯ iabbrev :shocked: ⊙_⊙ iabbrev :shrug: ¯\_(ツ)_/¯ iabbrev :teddy: ʕ•ᴥ•ʔ iabbrev :teddy_bear: ʕ•ᴥ•ʔ iabbrev :bear: ʕ•ᴥ•ʔ " }}} """"""""""""""""""""""""""""""""""""""""""""""""""" " Modification de la barre de statut """"""""""""""""""""""""""""""""""""""""""""""""""" " Pas besoin de plugin "set laststatus=2 " Affiche la barre de statut quoi qu'il en soit (0 pour la masquer, 1 pour ne l'afficher que si l'écran est divise) "if has("statusline") "set statusline= "set statusline+=%< "set statusline+=[%02n%H%M%R%W] " Numéro du buffer (2 digit), and flags "set statusline+=\ %m " modified flag '[+]' if modifiable "set statusline+=%f " Nom du fichier "set statusline+=%r " read only flag '[RO]' "set statusline+=%h " help flag '[Help]' ""set statusline+=%1*\ [FORMAT=%{&ff}]%0* " Format du fichier "set statusline+=\ [FORMAT=%{&ff}] " Format du fichier "set statusline+=\ [TYPE=%Y] " Type de fichier "set statusline+=\ [ENC=%{&fileencoding}] " Encodage du fichier "set statusline+=\ [POS=%04l,%03v] " Position dans le fichier ligne/colonne "set statusline+=%= " seperate between right- and left-aligned "set statusline+=\ [%p%%] " Position dans le fichier en % "set statusline+=\ [%l/%L] " Nombre de ligne dans le fichier ""set statusline+=%1*%y%*%* " file type "set statusline+=%{&hlsearch?'+':'-'} " Résultat de recherche surligné (+: y; -: n) "set statusline+=%{&paste?'=':'\ '} "set statusline+=%{&wrap?'<':'>'} "elseif has("cmdline_info") "set ruler " Affiche la position du curseur en bas a gauche de l'écran "endif """"""""""""""""""""""""""""""""""""""""""""""""""" " Création des répertoires """"""""""""""""""""""""""""""""""""""""""""""""""" "################################ " Centralisation des backups : "################################ if !filewritable ($HOME."/.vim/backup") " Si le répertoire n'existe pas call mkdir($HOME."/.vim/backup", "p") " Création du répertoire de sauvegarde endif " On définit le répertoire de sauvegarde set backupdir=$HOME/.vim/backup " On active le comportement précédemment décrit set backup "################################ " Undo persistant : "################################ " !!! Attention à la taille des fichiers de sauvegarde !!! if has("persistent_undo") if !filewritable ($HOME."/.vim/undodir") " Si le répertoire n'existe pas call mkdir($HOME."/.vim/undodir", "p") " Création du répertoire de sauvegarde endif " On définit le répertoire de sauvegarde set undodir=$HOME/.vim/undodir " répertoire où seront stockés les modifications set undofile " activation du undo persistant set undolevels=100 " nombre maximum de changements sauvegardés set undoreload=100 " nombre maximum de lignes sauvegardées endif "################################ " Répertoire de chargement automatique des scripts "################################ if !filewritable ($HOME."/.vim/autoload") " Si le répertoire n'existe pas call mkdir($HOME."/.vim/autoload", "p") " Création du répertoire de chargement automatique endif "################################ " Répertoire pour les fichiers temporaires "################################ " Placer les fichiers .swp dans un autre répertoire if !filewritable ($HOME."/.vim/tmp") " Si le répertoire n'existe pas call mkdir($HOME."/.vim/tmp", "p") " Création du répertoire temporaire endif set directory=$HOME/.vim/tmp """"""""""""""""""""""""""""""""""""""""""""""""""" " Gestion des templates """"""""""""""""""""""""""""""""""""""""""""""""""" " Récupérer le nom du fichier " :!echo % (renvoie /Documents/fichier.tex ) " :!echo %:r (renvoie /Documents/fichier ) " :!echo %:e (renvoie tex ) " :!echo %:t (renvoie fichier.tex ) " :!echo %:p (renvoie /home/limax/Documents/fichier.tex ) " :!echo %:t (renvoie fichier.tex ) " :!echo %:h (renvoie Documents) if has("autocmd") augroup templates autocmd! autocmd BufNewFile *.html,*.htm call Template('html') autocmd BufNewFile *.py call Template('py') autocmd BufNewFile *.sh,*.bat call Template('sh') autocmd BufNewFile *.c,*.cpp,*.sc,*.h call Template('c') autocmd BufNewFile *.spr call Template('spr') autocmd BufNewFile *.rec call Perso_recette('rec') autocmd BufNewFile *.tex call Template('tex') autocmd BufNewFile *.pp call Template('pp') augroup END function! Template(type) execute "0r ~/.vim/templates/skeleton.".a:type execute "%s/!!DATE!!/".strftime("%Y-%m-%d")."/e" execute "normal! 10G$" endfunction function! Perso_recette(type) execute "0r ~/.vim/templates/recette.tex" execute "%s/!!FICHIER!!/".expand("%:t")."/e" execute "%s/!!DATE!!/".strftime("%d-%m-%Y")."/e" execute "normal! 10G$" endfunction endif """"""""""""""""""""""""""""""""""""""""""""""""""" " Actions Automatiques """"""""""""""""""""""""""""""""""""""""""""""""""" " Fix file permissions {{{ "######################### """"""""""""""""""""""""""""""""""""""""""""""""""" " Set exec permission if the first line of the current file starts with '#!' " and contains '/bin/' function! ModeChange() if getline(1) =~ "^#!" if getline(1) =~ "/bin/" silent !chmod a+x endif endif endfunction au BufWritePost * call ModeChange() " }}} "################################ " Whitespaces and extra character "################################ " Display '⏎' to mark an end of line " Display '␠' to mark extra white space at the end of a line " Display '⎵' to mark nbsp (fixed spaces,…) set list set listchars=eol:⏎,nbsp:⎵,tab:▸·,extends:>,precedes:<,trail:␠ " Afficher les espaces superflus en gris clair highlight ExtraWhitespace ctermbg=darkgray guibg=lightred match ExtraWhitespace /\s\+$/ " Auto-remove extra whitespaces before writing the file autocmd BufWritePre * :%s/\s\+$//e " Search for 2 whitespaces and highlight it (red and underline) set hls let g:HLSpace = 1 let g:HLColorScheme = g:colors_name function! ToggleSpaceUnderscoring() if g:HLSpace highlight Search cterm=underline gui=underline ctermbg=red ctermfg=none let @/ = " " else highlight clear silent colorscheme "".g:HLColorScheme let @/ = "" endif let g:HLSpace = !g:HLSpace endfunction nmap :call ToggleSpaceUnderscoring() "################################ " Configuration BÉPO "################################ " Si la disposition bépo est détectée, charger automatiquement le fichier if !empty(system("setxkbmap -print|grep bepo")) source ~/.vim/vimrc.bepo endif " Chargement manuel pour les machines ne disposant pas de setxkbmap (serveurs) map é :source ~/.vim/vimrc.bepo "################################ " Conserver emplacement curseur "################################ set viminfo='10,\"100,:20,%,n~/.viminfo au BufReadPost * if line("'\"") > 0|if line("'\"") <= line("$")|exe("norm '\"")|else|exe "norm $"|endif|endif " Différences depuis le debut de l'edition "if !exists(":DiffOrig") " La commande suivante permet de comparer le fichier avec son ancien etat " (au moment de l'ouverture dans Vim). "command DiffOrig vertical new | set buftype=nofile | r # | 0d_ | "diffthis "\| wincmd p | diffthis " Mapping de la commande precedente "noremap ch :DiffOrig "endif "################################ " Recharger vimrc après modif "################################ if has("autocmd") autocmd! bufwritepost vimrc source ~/.vim/vimrc endif """""""""""""""""""""""""""""""""""""""""""""""" " Chargement des types de fichiers """""""""""""""""""""""""""""""""""""""""""""""" autocmd BufEnter *.txt set filetype=text """"""""""""""""""""""""""""""""""""""""""""""""""" " Actions Manuelles """"""""""""""""""""""""""""""""""""""""""""""""""" " Clipboard {{{ "################################ " Toggle paste (to avoid extra indent when pasting) set pastetoggle=p " Copy "" In visual, selected text is send to PRIMARY clipboard set clipboard=autoselect "" Send selected text (with visual mode) to clipboard with xclip vmap y:call system("xclip -i -selection clipboard", getreg("\"")):call system("xclip -i", getreg("\"")) " Paste "" Paste clipboard from normal mode " is used for visual block so avoid to map it noremap P :call setreg("\"",system("xclip -o -selection clipboard"))p " }}} "################################ " Lancer un navigateur internet "################################ """ Firefox " « vfd » cherche la définition du mot courant dans le TLFI vmap fd :!firefox "http://www.cnrtl.fr/lexicographie/" >& /dev/null " « vfs » cherche les synonymes du mot courant dans le TLFI vmap fs :!firefox "http://www.cnrtl.fr/synonymie/" >& /dev/null " « vfg » comme ci-dessus mais pour google vmap fg :!firefox "http://www.google.fr/search?hl=fr&q=&btnG=Recherche+Google&meta=" >& /dev/null "« vfw » comme ci-dessus mais pour wikipedia vmap fw :!firefox "http://fr.wikipedia.org/wiki/" >& /dev/null " « vfc » comme ci-dessus mais pour le conjugueur vmap fc :!firefox "http://www.leconjugueur.com/php5/index.php?v=" >& /dev/null " « vfo » ouvre l’url sur laquelle on se trouve dans firefox vmap fo :!dwb "" >& /dev/null & """ W3M " « vd » cherche la définition du mot courant dans le TLFI vmap d :!w3m "http://www.cnrtl.fr/lexicographie/" " « vs » cherche les synonymes du mot courant dans le TLFI vmap s :!w3m "http://www.cnrtl.fr/synonymie/" " « vg » comme ci-dessus mais pour google vmap g :!w3m "http://www.google.fr/search?hl=fr&q=&btnG=Recherche+Google&meta=" "« vw » comme ci-dessus mais pour wikipedia vmap w :!w3m "http://fr.wikipedia.org/wiki/" vmap sw :!dig +short txt ".wp.dg.cx" " « vc » comme ci-dessus mais pour le conjugueur vmap c :!w3m "http://www.leconjugueur.com/php5/index.php?v=" " « vo » ouvre l’url sur laquelle on se trouve vmap o :!w3m "" " « vo » lance Wordreference en -> fr vmap te :!w3m "http://www.wordreference.com/enfr/" " « vo » lance Wordreference fr -> en vmap tf :!w3m "http://www.wordreference.com/fren/" " ansible-vim let g:ansible_attribute_highlight = "bold" let g:ansible_extra_keywords_highlight = 1 let g:ansible_normal_keywords_highlight = 'Identifier' let g:ansible_with_keywords_highlight = 'Statement'