ubuntu-fr

Communauté francophone des utilisateurs d'Ubuntu

Planet Ubuntu-fr - Truc

Fil des billets

mardi, mai 1 2007

Gravatar de tigrouAWStats et les recherches "accentuées" via tigrou

Voici un court complément à mon billet du 23 janvier concernant l'installation d'AWStats en mode CGI sous Ubuntu . Avec la méthode que j'exposais tout fonctionne très bien, la seule chose ennuyeuse concerne les mots clés tapés dans les moteurs de recherche. En effet, de plus en plus de moteurs utilise UTF-8 ce qui fait que l'URL référente envoyée par le navigateur est elle aussi en UTF-8. Or par défaut AWStats semble traiter les URL en ISO-8859-1 ainsi dans les statistiques au chapitre Phrases clés on voit apparaître "fond d écran" au lieu de "fond d'écran" ou bien "parc de la tête d or" au lieu de "parc de la tête d or". Avec un peu d'entraînement on arrive rapidement à lire l'UTF-8 mais ce n'est pas très pratique et puis j'aime bien sélectionner certaines phrases clés et les rechercher dans Google avec juste un clic droit dans Firefox et là forcément cela fonctionne moins bien.

Il existe une méthode pour contourner ce problème, pour cela, il suffit d'activer le plugin decodeutfkeys dans le fichier de configuration d'AWStats en décommentant (enlever le # en début de ligne) la ligne suivante dans le fichier /etc/awstats.votresite.fr.conf

LoadPlugin="decodeutfkeys"

Comme l'indique le commentaire dans le fichier de configuration, il faut aussi installer les modules Perl Encode et URI::Escape pour cela, il suffit de taper :

sudo apt-get install liburi-perl

Il n'est pas nécessaire de regénérer les statistiques, les mots clés présentés par AWStats devraient maintenant être affichés correctement.

dimanche, avril 15 2007

Gravatar de tigrouQuelques trucs avec ViM #2 via tigrou

Voici la suite du billet Quelques trucs avecViM #1 qui, comme le suggèrait le #1, a bien une suite :) Voici donc 3 petits trucs qui me simplifient la vie presque tous les jours.
Note : les captures d'écran sont des GIF animés, il est possible de les revoir en cliquant dessus pour faire apparaître la page dédiée à l'image.

Mise en valeur de la ligne courante

Une fonctionnalité que l'on voit dans beaucoup d'éditeurs de texte avancés ou IDE est la mise en valeur de la ligne courante. Depuis vim 7, disponible depuis Ubuntu Edgy Eft , cette fonctionnalité est directement dans l'éditeur. Dans un terminal, la ligne est soulignée alors que dans la version graphique, il est possible de définir une couleur de fond, pour ma part, j'utilise les lignes suivantes dans mon .gvimrc pour avoir une ligne légèrement surlignée de bleu/gris dans la version graphique uniquement :

set cursorline
hi CursorLine guibg=#e7ebff

Les folds sur mesure

Beaucoup d'éditeurs proposent la possibilité de "pliage/dépliage" (fold/unfold) des structures de contrôle et/ou des commentaires. Il est possible de faire la même chose dans vim mais j'apprécie assez peu cette fonctionnalités. Par contre, il est possible de définir des zones "pliables" sur mesure ce qui peut être pratique pour être à deux endroits éloignés dans le code sans ouvrir deux buffers sur le même fichier. Pour commencer à l'utiliser, le plus simple est de passer en mode visuel en tapant v depuis le mode commande, de sélectionner quelques lignes de texte avec les déplacements habituels et puis de faire zf pour créer la zone pliée. Pour la déplier, il suffit de taper zo (Fold Open), pour la replier zc (Fold Close). Si on n'a plus besoin de la zone, on peut faire zd (Fold Delete) pour supprimer la possibilité de pliage/dépliage, le texte reste intact. Il est possible d'avoir un repère visuel où des zones pliables sont positionnées en fixant la variable foldcolumn, par exemple à 2 en tapant ":set foldcolumn=2", ce qui donne :

Les zones sont imbricables et beaucoup de raccourcis existent pour les manipuler. Plus d'informations le folding dans l'aide de vim .

Les abbréviations

Lorsqu'on écrit du code, on utilise régulièrement les mêmes constructions syntaxiques, il peut être avantageux de définir des abbréviations permettant de taper rapidement ces séquences. Dans eZVim , un plugin vim pour eZ Publish , j'en définis quelques unes, par exemple :

iabbrev ezfe {foreach __ as $k => $val}{/foreach}
match Error / __ /

La première ligne indique à vim de remplacer la chaîne ezfe suivie d'un espace par le reste de la ligne (foreach) en mode insertion. représente une frappe sur la touche "Entrée". La seconde ligne dit à vim de reconnaître la chaîne " __ " comme une erreur ce qui permet de voir rapidement les points à complèter dans ce qui vient d'être inséré pour obtenir un code syntaxiquement correct :

Plus d'informations sur les abbréviations dans l'aide de vim .

lundi, février 19 2007

Gravatar de tigrouQuelques trucs avec ViM #1 via tigrou

ViM est un formidable éditeur de texte. Bien sûr celui-ci demande un peu d'investissement avant d'être productif mais une fois franchi ce cap, il est vraiment très agréable de garder les mains sur le clavier pour toutes les tâches d'édition. Il est aussi très pratique d'utiliser le même éditeur de texte pour éditer un fichier de configuration au coup par coup sur un serveur et pour écrire de manière plus élaborée (programmation, e-mail, ...), on finit même par taper des commandes ViM dans le terminal ce qui oblige à définir des alias bizarres :-)

Je ne vais pas faire ici une introduction à l'utilisation de ViM car cela a déjà été bien fait mais plutôt donner quelques recettes de cuisine bien pratiques.

Le fichier .vimrc

Pour commencer, il faut configurer la bête :-) Pour cela, il faut créer ou éditer le fichier .vimrc dans votre dossier personnel, par exemple avec vim. Voici un .vimrc de base :

set nocompatible                " pas compatibilité avec vi
 
" priorité faible pour les fichiers avec les extensions
" suivantes lors du complètement
set suffixes=.bak,~,.swp,.o,.info,.aux,.log,.dvi,.bbl,.blg,.brf,.cb,.ind,.idx,.ilg,.inx,.out,.toc
set history=50                  " 50 lignes dans l'historique
set ruler                       " affiche la position du curseur en bas
set sm                          " affiche la parenthèse correspondante
 
set formatoptions=tcroqn        " indentation
set autoindent
set cin
set textwidth=0                 " pas de coupure de ligne par défaut
set backspace=2
set ts=4                        " tabulation sur 4 caractères
set sw=4
 
set nobackup                    " pas de fichier backup
set dir=~/tmp                   " fichier temporaire dans ~/tmp (il faut qu'il existe !)
set autowrite
 
set hlsearch                    " surligne les recherches
set incsearch                   " recherche au fur et à mesure
 
syntax on                       " coloration syntaxique
set background=dark             " fond noir par défaut

Ce fichier est évidemment à adapter en fonction de votre utilisation, constitue déjà une bonne base pour se faciliter l'édition avec ViM. Comme toujours, en cas de doute sur un paramètre, il ne faut pas hésiter à consulter l'aide très complète en tapant :help le_paramètre pour voir de quoi il retourne.

Quelques trucs rapides

Afficher les numéros de lignes

Il suffit de taper :set nu et :set nu! pour les cacher. Si vous voulez toujours afficher les numéros de ligne, il suffit d'ajouter set nu dans votre .vimrc.

Éditer des fichiers distants via SSH

Il est bien sûr possible de se connecter en SSH et d'utiliser ViM sur la machine distante, mais il n'est peut être pas configurer voire pas installé du tout... La commande suivante me permet d'éditer mon .bashrc et le fichier /tmp/unfichier sur ma Dedibox :

$ vim 'scp://tigrou@pwet.fr/.bashrc' 'scp://tigrou@pwet.fr//tmp/unfichier'

Trier les lignes d'un fichier

ViM ne sait pas le faire directement, par contre, on peut utiliser la commande externe sort pour le faire. Pour cela, il suffit de taper :%!sort, ce qui aura pour effet de donner le contenu du buffer courant en entrée de la commande sort et de le remplacer par sa sortie.

Insèrer le résultat d'une commande

En tapant :%!la_commande, on remplace le contenu du buffer par la sortie de la commande. En tapant :r!la_commande, on insère son résultat. Par exemple pour insérer la date courante, on peut faire :r!date.