Vim : configuration vimrc avancée pour développeurs et administrateurs système sous Linux

Vim est depuis longtemps mon éditeur de texte préféré.
Il constitue pour moi un véritable couteau suisse de l’édition de texte. Je m’en sers pour rédiger mes notes, modifier les fichiers de configuration de mes serveurs distants ou encore programmer (GShutdown ou Jargon Informatique ont été entièrement écrits avec cet éditeur !).
Ce qui m’a toujours séduit dans Vim c’est le fait qu’il offre une multitude de fonctions permettant de tout faire ou presque, et une extensibilité remarquable grâce aux plugins (j’y consacrerai un autre article pour vous faire découvrir ceux à ne pas manquer).
L’un des aspects un peu rebutants pour les débutants est que Vim n’est pas, par défaut, configuré pour tirer parti de toutes ses fonctionnalités les plus intéressantes, qui mériteraient pourtant d’être activées dès le départ. C’est pourquoi j’ai progressivement construit et amélioré mon propre fichier .vimrc
, afin de rendre Vim plus agréable et efficace à utiliser.
Pour vous faire gagner du temps, j’ai décidé de mettre en ligne ce fichier. Chacun pourra l’étudier, l’utiliser, le modifier à sa convenance, voire proposer des améliorations.
Installation
Sous GNU/Linux, placez le contenu du fichier .vimrc ci-dessous dans le fichier ~/.vimrc
.
Voici le fichier .vimrc
personnalisé :
"=============================================================================
"
" Fichier de configuration Vim personnalisé : optimisé pour la programmation,
" enrichi de raccourcis clavier utiles, afin de mieux exploiter les
" fonctionnalités avancées de cet éditeur remarquable.
"
" Licence : GPL
"
" Auteur: Asher256
" Site: https://www.asher256.com/
"
"============================================================================
if exists('g:loaded_vimcfg')
finish
endif
let g:loaded_vimcfg = 1
if &compatible
set nocompatible
endif
if &compatible || v:version < 600
finish
endif
setglobal encoding=utf-8
setglobal fileencodings=utf-8
scriptencoding utf-8
let c_comment_strings=1
set autoread
set backspace=indent,eol,start
set belloff=all
set cmdheight=1
set conceallevel=2
set cpoptions+=n
set diffopt+=vertical
set display=truncate
set expandtab
set fileformats=unix,dos,mac
set formatoptions+=c
set formatoptions+=w
set formatoptions-=l
set formatoptions-=o
set formatoptions-=r
set helpheight=25
set history=400
set hlsearch
set infercase
set isfname-==
set laststatus=2
set lazyredraw
set mouse=nivc
set mousemodel=popup
set noautoindent
set noautowriteall
set nobackup
set nocindent
set noerrorbells
set nohidden
set noignorecase
set noincsearch
set noshowmatch
set noshowmode
set nosmartindent
set nosmarttab
set novisualbell
set nowrap
set nowrapscan
set nowriteany
set nrformats-=octal
set number
set relativenumber
set ruler
set scrolloff=0
set sessionoptions=blank,curdir,folds,help,tabpages,unix,slash
set shiftwidth=4
set shortmess+=mrcFIwxst
set showcmd
set showtabline=2
set sidescrolloff=5
set smartcase
set softtabstop=4
set spellsuggest=best
set splitbelow
set splitright
set startofline
set suffixes+=.a,.o,.pyc,.pyo
set suffixes=.bak,~,.swp,.swo
set t_vb=
set tabpagemax=30
set tabstop=4
set textwidth=0
set timeout
set ttyfast
set undofile
set undolevels=2000
set undoreload=10000
set viewoptions=folds,options,cursor,curdir,unix,slash
set winheight=5
set winwidth=10
if !has('nvim')
set printoptions=paper:letter
endif
if has('langmap') && exists('+langremap')
set nolangremap
endif
if v:version > 703 || v:version == 703 && has('patch541')
set formatoptions+=j
endif
if !has('gui_running') && &t_Co >= 256
set termguicolors
let &t_8f = "\<Esc>[38:2:%lu:%lu:%lum"
let &t_8b = "\<Esc>[48:2:%lu:%lu:%lum"
end
if &t_Co > 2 || has('gui_running')
if has('autocmd')
filetype plugin indent on
endif
if has('syntax') && !exists('g:syntax_on')
syntax enable
endif
endif
set linebreak
if exists('+breakindent')
set showbreak=
endif
runtime macros/matchit.vim
" vim:syntax=vim
Sympa !! merci !
C’est marrant, ça doit être le 15ème fichier vimrc que je lis, et j’y trouve toujours une option qui manquait.
(en l’occurence, le isfname, qui va m’être bien utile).
Sinon, le fichier que tu donnes n’est pas valide
(tous les et autres ont disparu)
Copier/coller trop hâtif dans le html ?
PS:
autocmd BufNewFile,BufRead PKGBUILD set syntax=sh
Hé,hé un Archer 😉 ça nous fait deux points communs…
EDIT:
C’est « tous les « symbole inférieur » F2 « symbole supérieur » et autres ont disparu.», qu’il fallait lire, bien sûr
C’est bon, j’ai rajouté les « lt » et « gt » car les signes supérieur et inférieur n’étais pas pris en compte. Merci pour cette remarque Yannick !
Aussi, je suis assez d’accord, un Vimrc, on y découvre toujours quelque chose de croustillant 🙂
Pour ga6ri3l, de rien 😉
Wow, sympa. Ca m’a donné l’impulsion dont j’avais besoin pour me remettre à vim. Merci !
Merci ! Il y a plein de petites fonctions utiles la dedans ^^
Salut, sympa ton .vimrc, le mien fait pitié à côté!
Juste une question, comment fait-on pour dérouler les menus ? Je ne connaissais pas du tout et je n’arrive pas à les dérouler, Google ne m’aide pas trop…
Merci en tous cas pour mon nouveau .vimrc !
Très sympa, ton vimrc. Mais n’utiliserais-tu pas Gvim aux dernières nouvelles ?
Et, au fait, j’aimerais savoir comment implémenter un copier-coller de bonne qualité (en effet, le clic-milieu indente à chaque ligne), et comment enlever les ~ en début de ligne.
Tu devrais utiliser SimpleFold, c’est 100 fois mieux que le fold inclus de base…
Et, au fait… Quel est le meilleur explorateur de fichiers (par listes déroulantes), et le meilleur trouveur de fichiers (en gros, on écrit un régex (ou un nom de fichier) et on a une liste de fichiers dans les sous-dossiers relatifs au mot-clé) ?
Les raccourcis clavier ! que du bonheur !!!
Merci pour ton travail !
Salut, pour tous les gens qui découvrent la magie vim, ils peuvent se baser sur une configuration préétablie qui se nomme cream [1]. Mais bon quelque fois, c’est trop exhaustif, il convient donc juste de s’en inspirer ou alors passer sa vie dans :help 🙂
@Asher256: Pour convertir un fichier au format HTML, il y a déjà une fonction définie :TOhtml. Ce qui est pratique c’est quelle peut être appliquée à un range ou en mode visual.
voir :help TOhtml
[1] http://cream.sourceforge.net/
@sbz: merci pour ta suggestion !
@Bastes, chauffe-eau: excellent !
@Rhyhann: trouveur de fichiers ? Par exemple find ou grep ?
@Rhyhann: pour que le clic du milieu ne fasse pas trop de soucis d’indentation lors du coller, désactive autoindent avec « set noai » (désactive aussi les autres indent si cela ne marche pas, comme cindent). À mon avis, le mieux est d’utiliser le « vrai coller » de Vim (pas celui du clic). Dans mon vimrc, il y a un raccourci, ctrl-p, qui permet cela. L’indentation reste intacte grâce à ce coller standard (similaire au ctrl-v d’autres éditeurs !).
@Pezzos: dérouler le menu ? càd ? Tu parles peut-être des folds ? Si c’est le cas, utilise le raccourci « zo » pour ouvrir et « zc » pour fermer. Puis « zm » pour fermer le fold et tous les sous-fold.
Merci pour ton conseil, je m’en vais tester !
(oui, je parlais des espèces de titre qui permettent de cacher toute un partie du texte, ça peux être pratique mais quand on ne sait pas s’en servir…)
Cool, je me mets ça sous le bras.
Je ne l’ai pas sous la main (pas ma machine) masi j’ai fait pareil que toi pour les PKGBUILD (archlinux4ever), mais en ouvrant le .install si il existe.
Maintenant, truc bien, xce serais d’implémenter ,la syntaxe de VIM dans les forum et autres posts, j’ai trops de mal à ne pas faire :wq pour enregistrer mon post… 🙂
Cela existe probablement…
Par exemple, j’ai cherché avec le mot clé « bbcode » et cela me donné déjà deux scripts : http://www.vim.org/scripts/script_search_results.php?keywords=bbcode&script_type=&order_by=rating&direction=descending&search=search 😉 .
si qqn connait un moyen simple pour transformer tout les commentaire c++ en « // » par des commentaire c en « /* */ » je suis preneur.
(J’ai un prof de c extremiste, et avec « gcc -ansi -pedantic » les « // » donnent des erreurs, et j’ai pas envie de changer mes habitudes)
Tres bon article au passage j’ai repris la config, juste rajouter le jeu de couleur desert « colors desert » (mais c’est une question de gout)
Bonjour. Voilà un expression rationnelle faite rien que pour toi Stanche ^_^ :
:%s/^\/\/\(.*\)/\/\* \1 *\//g
Merci pour l’appréciation sur l’article.
geniale, faudra que je me penche sur les expr rationnel un de ces 4 (tjrs mieux à faire c’est bizarre).
Je suppose que si je met :
autocmd BufWrite * silent! %s/^\/\/\(.*\)/\/\* \1 *\//g
dans mon vimrc ça le fera à chaque enregistrement.
ça doit pas remplacer si je met le commentaire en fin de ligne de code mais vu que ça doit être compliqué à gérer je vais juste eviter de faire ça.
Merci 1000 fois ça va me simplifier les choses
Si je n’édite pas les fichiers en root, il m’indique une erreur à la sauvegarde (impossible de générer le fichier de sauvegarde)
Pourtant HOME/.vim/ n’est pas un endroit protégé en écriture….
Lance la commande :
chown user:user $HOME/.vim*
(bien sûr, remplace user:user par ton user et ton groupe)
Merci de ta réponse rapide….
Mais ca ne marche pas…
D’ailleurs je comprend pas pourquoi je devrais faire ça, ce dossier m’appartient déjà…
Bizarre…
Que te donne la commande :
ls -ld $HOME/.vimrc $HOME/.vim $HOME/.vim/*
?
xD
ok… autant pour moi, le dossier backup était owned par root
mon vimrc se trouve dans /etc/vim/ , je doit être root pour le modifier, il aura donc créé le dossier backup en root
au passage,
comment déplacer le fichier de config de vim dans mon home ? ca serait quand meme plus pratique
😀 Cool alors Ben.
(Mais pourquoi tu avais dit que chown n’avait pas marché ? Il devait, pourtant !
chown aurait du marcher en effet …
Il n’a pas pris les dossier inclus dans /.vim/, il a juste considéré celui-ci…
pourtant j’avais mis l’*
… mystère
Merci en tout cas pour tes réponse rapides, précises et sympathiques =D
Re Ben,
Pour avoir ton répertoire à toi :
mkdir ~/trash
mv ~/.vim ~/trash
mkdir ~/.vim
cp /etc/vim/* ~/.vim
Après, si le contenu de ~/trash n’est plus utile, supprime le aussi 😉 .
++ !