PROJET AUTOBLOG


Planet-Libre

source: Planet-Libre

⇐ retour index

Artisan Numérique : Configurer son VIM

dimanche 21 octobre 2012 à 23:24
Print PDF
VIM Pathogen VIMScript
Configurer son VIM
Le 21 octobre, 2012 - 23:24 | Ulhume

Soyons honnête, en mode "découverte", VIM n'est pas l'outil le plus sexy qu'il soit. On a même l'impression qu'il est conçu pour être moche et ne pas faire grand chose de plus qu'un notepad compliqué par pur plaisir. La raison fondamentale de cet état de fait est que VIM est un outil conçu pour s'adapter au plus large éventail de besoin possible (sans pour autant faire le café, et encore...). Au départ ce n'est donc qu'une toile vierge, un peu comme un FireFox brut de coffrage avant que vous y installiez vos extensions favorites. Comme FireFox, VIM est conçu pour être programmé et/ou étendu en piochant dans sa très dense collection de plugins. Mais à la différence de FireFox, VIM ne s'écroulera que difficilement sous le poids de ses propres plugins ;-)

Premiers paramétrage

En réalité le terme de paramétrage est quelque peu erroné. En effet, VIM ne se configure pas par le biais d'un quelconque fichier xml ou ini, mais se programme à travers un langage, le VIMScript. Ce langage de script comporte tous les éléments d'un langage classique : variables, assignation, boucles, conditions, fonctions, modules, etc. Maintenant rassurez-vous, il n'est pas nécessaire de maîtriser ce langage pour pouvoir utiliser VIM car dans un premier temps il s'agira essentiellement de modifier les valeurs des variables système pour faire coller l'éditeur à vos besoins.

Pour charger ces réglages, VIM exécute à chaque lancement le code contenu dans le fichier ~/.vimrc. Prenons un exemple simple et disons que nous désirons que VIM active la numérotation des lignes, ce qu'il ne fait pas par défaut. Nous allons pour cela créer notre premier fichier .vimrc et y placer le contenu suivant en tapant vim ~/.vimrc :

set nocompatible
set number
mon premier vimrc

Sans sortir de VIM, vous pouvez tester ce code en tapant :w|source % (w pour sauvegarder source pour exécuter le code du fichier courant %).

Dans ce code nous avons utilisé la fonction système set pour affecter des valeurs. set number affecte la valeur vrai à number. Si nous voulions faire l'inverse, nous aurions écrit set nonumber.

La variable compatible indique un compatibilité avec l'ancêtre de VIM, le célèbre VI. Aujourd'hui on préfèrera mettre cette valeur à faux via set nocompatible pour activer un ensemble de réglages plus actuels.

La commande :help documente absolument toutes les variables. Essayez :help number ou :help compatible pour plus d'information.

Une fois le fichier sauvegardé, il suffit de quitter VIM, puis que votre premier paramétrage soit définitif.

Nous n'allons pas étudier ici tous les réglages possibles pour VIM, ce serait bien trop long. Sachez donc trouver les solutions à vos besoins grâce à votre automate de recherche préféré. Vous découvrirez alors rapidement que nous sommes très nombreux à utiliser cet outil. Par exemple si vous désirez activer la coloration syntaxique, chercher "vim activate syntax highlighting" et vous aurez moulte réponses qui vous mèneront à ajouter à votre vimrc les lignes suivantes :

filetype plugin indent on
syntax on
coloration syntaxique

Sauvez et éditez à nouveau, miracle, votre vimrc est maintenant colorisé.

Le langage VIMScript permet de faire de nombreuse choses et pour qui a à cœur de personnaliser son environnement à fond, sa maîtrise n'est pas un luxe. Une ressource très précieuse sur ce point est l'excellent tutoriel d'IBM.

Structure

Le paramétrage de VIM ne se limite pas au simple fichier .vimrc. Il est aussi possible d'exploiter toute une arborescence de dossiers nichés sous ~/.vim (non créé par défaut). Les principaux sont :

autoload
On trouve dans ce dossier des scripts qui vont être chargés au démarrage, avant le fichier ~/.vimrc.
colors
Ici sont stockés des scripts appelés par la commande colorscheme permettant de charger un jeu de couleur.
syntax
Là se trouvent des scripts gérant la colorisation syntaxique pour un type de fichier donné sous la forme type_de_fichier.vim.
plugin
Dans ce dossier sont stockés les plugins de VIM.
doc
Les fichiers documentation des plugins utilisables par la commande :help.
spell
Pour les dictionnaires du correcteur orthographique.
Pour une description complète et exhaustive de tous les autres dossiers, utilisez la commande help runtimepath.

Nous le verrons plus loin, cette liste n'est pas exhaustive car certains plugins vont ajouter ici leur propres sous-dossiers. Alors dans la mesure où ~/.vim va vite devenir le centre névralgique de votre configuration, je vous conseille la manipulation suivante :

gaston$cd
gaston$mkdir -p .vim/{autoload,colors,syntax,plugin,spell,config}
gaston$mv .vimrc .vim/vimrc
gaston$ln -s .vim/vimrc .vimrc
Initialisation de sa configuration VIM

Ceci a pour but de pré-créer .vim et un ensemble de sous-dossiers. D'y déplacer notre .vimrc en un fichier visible (sans point devant) et de faire un lien symbolique pour permettre à vim de le démarrer en ne se rendant compte de rien. Ainsi toute votre configuration sera à un seul et même endroit.

Pour parfaire le dispositif, vous noterez la création du sous-dossier config. Il ne s'agit pas d'un dossier de VIM mais d'un endroit où nous allons stocker des bouts de vimrc. En effet, vous vous en rendrez vite compte, vimrc peut rapidement devenir titanesque. A titre d'exemple le mien fait plus de 1000 lignes de code... Du coup, il est bien pratique de pouvoir ventiler cette configuration dans plusieurs fichiers thématiques (ex. settings.vim, mappings.vim, etc.).

Pour que cela fonctionne, il faut que nous rajoutions à vimrc le code permettant de lire ce dossier config :

runtime! config/**/*.vim
Lecture des scritps contenus dans .vim/config

Ceci fait, vous pouvez déplacer dans un .vim/config/settings.vim tout ce qui se trouve après set nocompatible (il est préférable de laisser cette ligne en en-tête de vimrc).

A plugin to rules them all

Comme vous le savez sûrement, VIM dispose d'un stock impressionnant de plugins. Il sera en effet bien rare de ne pas trouver le plugin correspondant à l'un de vos besoin.

Techniquement, un plugin est fournie sur un site comme vim.org sous la forme d'une archive zip à décompresser à la racine de .vim provoquant l'ajout de fichiers dans un ou plusieurs sous dossiers (plugin, doc, autoload, etc.). A terme je vous laisse imaginer le foutoir... Fort heureusement il y a une solution à ce problème. Il y en a même plusieurs en réalité, mais celle que j'ai retenu s'appelle pathogen.

Le principe de pathogen est très simple. Il s'agit de créer un nouveau dossier .vim/bundle dans lequel chaque plugin aura son propre dossier dans lequel nous retrouverons plugin,doc, autoload, etc. Pathogen se chargera alors, au démarrage de VIM, d'explorer ce dossier et d'instruire VIM sur tous les fichiers à charger. Ainsi tout reste bien rangé.

Pour mettre en place pathogen, il faut d'abord le télécharger. Comme pour absolument tous les plugins pour VIM, le plus simple est clairement de passer par GIT via GitHub. Pour ceux qui découvrent, GIT est un gestionnaire de version et github une plateforme hébergeant de très nombreux projets libres et bâti autours de GIT.

Même pour si le développeur d'un plugin n'utilise pas github, le site vim.org effectue un mirroring automatisé de tous ses plugins sur github. Ainsi si vous cherchez la version \\"github\\" d'un plugin, il suffit généralement de taper dans votre moteur de recherche \\"github vim le_plugin_que_je_cherche\\" pour le trouver. Ainsi toute installation de plugin passera systématiquement par github, ce qui est extrêmement pratique.

La première chose à faire est donc d'installer git sur votre système, cela se fait sur debian par sudo apt get git, tout simplement. Ceci fait, allez sur la page du projet pathogen. Dans la partie du haut, vous trouverez une URL qu'il suffit d'utiliser comme ceci

gaston$cd ~/.vim
Cloning into pathogen...
remote: Counting objects: 225, done.
remote: Compressing objects: 100% (120/120), done.
remote: Total 225 (delta 61), reused 209 (delta 48)
Receiving objects: 100% (225/225), 27.14 KiB, done.
Resolving deltas: 100% (61/61), done.
gaston$cd autoload
gaston$ln -s ../pathogen/autoload/pathogen.vim .
Récupération du code source de pathogen

Nous sommes allé dans notre dossier .vim pour y cloner (comprendre récupérer) le code source de pathogen dans un dossier pathogen. Ensuite nous avons créé le dossier autoload, y sommes rentré, puis avons créé un lien symbolique à partir du fichier ../pathogen/autoload/pathogen.vim.

Nous aurions aussi pu cloner le dépôt n'importe où et ensuite juste recopier pathogen.vim dans le dossier autoload mais en procédant par lien symbolique, nous pourrons facilement bénéficier des éventuelles mises à jour de pathogen de la manière suivante :

gaston$cd ~/.vim/pathogen
gaston$git pull
Mise à jour de pathogen

Maintenant il ne reste plus qu'à ajouter quelque ligne de code à vimrc, juste après set nocompatible pour que la magie pathogen opère :

" Initialisation de pathogen
call pathogen#infect()
call pathogen#helptags()
Ajout de la gestion des plugins par pathogen

Et c'est tout.

Pour tester tout cela, installons notre premier plugin que je classe dans la catégorie incontournable, NerdTree. Sont rôle est d'ajouter à VIM un volet latérale permettant d'explorer les fichiers et sous-dossiers du dossiers courant. Comme pour pathogen, nous allons passer simplement par la page du projet GitHub de NerdTree.

gaston$cd ~/.vim
gaston$mkdir -p bundle
gaston$cd bundle
Cloning into nerdtree...
remote: Counting objects: 2396, done.
remote: Compressing objects: 100% (805/805), done.
remote: Total 2396 (delta 1076), reused 2314 (delta 999)
Receiving objects: 100% (2396/2396), 979.05 KiB | 485 KiB/s, done.
Resolving deltas: 100% (1076/1076), done.
Installation de NerdTree

Et... C'est tout :-) Il ne nous reste qu'à redémarrer VIM et à taper la commande :NERDTree pour disposer d'un navigateur du plus bel effet.

Conclusion

Comme vous le voyez, VIM peut rapidement devenir très personnalisé tant par ajout de paramétrage, que par celui de plugins (personnellement je tourne avec déjà 26 plugins...). Alors évidement, cette approche ne conviendra pas à tous ceux qui veulent "que ça marche". Mais pour les autres, ceux qui aiment construire leur environnement, VIM est une véritable bouffée d'oxygène.

Gravatar de Artisan Numérique
Original post of Artisan Numérique.Votez pour ce billet sur Planet Libre.

Articles similaires

Monitoring-FR : Icinga 1.8 sous le signe de la performance !

dimanche 21 octobre 2012 à 19:25

L’équipe du projet Icinga viennent de livrer la version 1.8 du fork du projet Nagios. Cette version automnale est sous le signe de la performance et de la pratique.

D’abord côté coeur, la limite de la liste au niveau du check_result est dorénavant paramétrable. Cet outil pratique permet d’améliorer considérablement la performance sur des environnements de milliers de services. Les notifications peuvent être désormais désactiver avec la notion d’expiration d’évènements et surtout inutile lorsque la commande « scheduling forced check » est utilisée.

La Classic UI s’est vu ajouté pas mal d’amélioration de type « ergonomique » comme :

En bonus, la pagination dans divers vues a été rajouté ainsi qu’un champ de recherche par expression régulière dans le panneau de configuration ce qui rend l’utilisation plus aisé dans les environnements complexe.

Côté Icinga Web,

cette version donne plus de convivialité avec la statut map. Une réduction des icônes a été réalisée pour limiter l’encombrement visuel.

Un nouveau modèle d’interrogation des données a été mise en place pour limiter la lourdeur des jointures qui engendre beaucoup de charge côté SQL.

Côté Icinga Reporting,

les « morning report » ont été ajouté pour avoir l’information des dernières 24 heures rapidement. La construction des modèles de rapport a été remaniée. Maintenant vous bénéficiez de plages de temps prédéfini. L’équipe nous fait part aussi de l’amélioration des performances lors de la génération des rapports avec l’implémentation d’une nouvelle procédure SQL pour une agrégation plus rapide. Icinga Reporting supporte maintenant JasperReport Server 4.7.

 

Pour plus d’informations, je vous invite à voir le change log de la version 1.8 sur l’article du blog Icinga

Gravatar de Monitoring-FR
Original post of Monitoring-FR.Votez pour ce billet sur Planet Libre.

Denis Szalkowski : dnsmasq, un cache dns performant !

dimanche 21 octobre 2012 à 14:26
Par     21 octobre 2012  - Catégorie(s): Dns  Dns

J’ai troqué mon serveur dns Posadis – peu performant à mes yeux – pour le cache dns Dnsmasq.

Installation de dnsmasq sur CentOS

yum -y install dnsmasq
chkconfig --level 35 dnsmasq on
service dnsmasq start

Configuration

Mon serveur Web est devenu une Ferrari ?Editez le fichier /etc/dnsmasq.conf.

Je limite dnsmasq au cache dns sur l’interface de loopback de mon serveur. Je bloque accessoirement le dhcp.

interface=lo
listen-address=127.0.0.1 ::1
no-dhcp-interface=lo eth0 eth1

J’ajoute l’adresse de Loopback au niveau de la 1ère ligne du fichier /etc/resolv.conf.

search dedibox.fr
nameserver 127.0.0.1
nameserver 88.191.254.60
nameserver 88.191.254.70

Résultats des courses…

Ils sont tout bonnement spectaculaires. La 1ère requête effectuée avec la commande dig sur le domaine laredoute.fr a mis 223 ms. Lors de la 2e exécution, elle a mis 1 ms.

Autres billets sur le sujet :

Dsfc Dsfc

dnsmasq, un cache dns performant !

3 votes, 4.00 avg. rating (81% score)

Gravatar de Denis Szalkowski
Original post of Denis Szalkowski.Votez pour ce billet sur Planet Libre.

Tasse de Café : Ubuntu sur la Google Nexus 7

dimanche 21 octobre 2012 à 09:07

On le sait, c’est un fait établi : Canonical souhaite porter Ubuntu sur le marché des mobiles (smartphones et tablettes), chose qui se comprend tout à fait étant donné l’importance de plus en plus grande de ce marché déjà exploité par quelques entreprises (et bientôt Mozilla avec Firefox OS). Il était donc évident que Canonical finirait par faire débarquer sa distribution sur nos terminaux mobiles et si le projet Ubuntu for Android qui consistait à l’intégrer en tant qu’application n’est pas un projet mort (enfin je crois), nous parlons ici d’une chose bien différente.

Ubuntu mobile

En effet, à partir des prochaines versions du système, nous devrions commencer à voir des versions mobiles d’Ubuntu (possiblement dès la prochaine version en avril 2013, mais rien n’est moins sûr). Et on peut déjà voir que Canonical a commencé à bosser dessus, car Victor Palau, directeur commercial chez Canonical a posté une vidéo sur YouTube… Vidéo qui nous montre Ubuntu en action sur la fameuse Nexus 7 de Google, une tablette de 7 pouces fabriquée par Asus.

Alors rien d’extraordinaire, nous ne sommes qu’aux débuts du boulot : il ne s’agit que d’Ubuntu comme vous pouvez l’avoir sur votre ordinateur, mais sur une tablette. Rien n’a été modifié en terme de taille ou d’organisation des éléments, ce qui fait que, sur du 7 pouces, c’est très petit… et loin d’être pratique. On attend donc de voir l’évolution de projet, nul doute qu’on en aura des nouvelles. Et si Canonical améliore Unity pour les tablettes, espérons que Gnome-Shell soit également optimisé pour ces dernières (c’était plus fort que moi, désolé).

Ah, et attention aux oreilles, l’auteur de la vidéo nous fait part de ses goûts musicaux et n’a pas mis les micros au minimum…

Via

Gravatar de Tasse de Café
Original post of Tasse de Café.Votez pour ce billet sur Planet Libre.

crowd42 : Vidéo : premières images de Ubuntu tournant sur une tablette Nexus 7

dimanche 21 octobre 2012 à 04:25

On savait depuis plus d’un an maintenant, que Canonical travaillait sur un portage de Ubuntu pour les tablettes et smartphones, une information qui a été confirmée par plusieurs responsables de la société. Maintenant on a une vidéo de quelques secondes, qui nous livre les premières images de ce nouveau projet de Canonical. La vidéo a été mise en ligne par Victor Palau, responsable Commercial Engineering chez Canonical et on y voit ubuntu tourner sur une tablette Nexus 7.

Ce qui explique aussi la dernière phrase de Mark Shuttleworth adressée aux participants de sa conférence, où il annonçait le nom de la prochaine version de Ubuntu. En effet, Shuttleworth leur avait demandé d’amener avec eux des tablettes Nexus 7 à la prochaine Ubuntu Developer Summit, qui se déroulera le 29 octobre à Copenhague.

Cet article Vidéo : premières images de Ubuntu tournant sur une tablette Nexus 7 est apparu en premier sur crowd42.

flattr this!

Gravatar de crowd42
Original post of crowd42.Votez pour ce billet sur Planet Libre.

I'm richer than you! infinity loop