Paste depuis vim.
Introduction
Bien que le développement soit un métier individuel on est rarement plusieurs à coder ensemble mise à part lorsqu'on fait du pair-programming mais ce qui reste assez rare. Malgré tout, il arrive parfois qu'on est besoin d'aide car nous sommes bloqué sur un bout de code qui nous résiste et nous savons que des yeux neufs peuvent parfois débloquer la situation, ou encore parce-que nous avons besoin d'une review1. C'est dans ces moments qu'intervient les pasteurs. Je remercie tshirtman2 qui m'a pointé un super plugin Vim gist-vim qui utilise comme son nom l'indique le pasteur de github qui est vraiment très bien. Le plugin a été initié par mattn3 il est donc de très bonne facture.
Installation
J'utilise Vundle pour ma part donc pour les personnes dans le même cas, ajouté ceci:
Bundle 'mattn/gist-vim'
Sauver puis lancer:
:BundleInstall
Configuration github
Pour commencer il faut configurer son compte github, le plugin utilise l'api v3. Il est possible de stocker son nom d'utilisateur et son mot de passe dans un fichier, mais ce n'est pas recommandé. Il est plus prudent d'utiliser Oauth pour ça il suffit de configurer son utilisateur github dans le fichier de configuration git:
git config --global github.user nom_utilisateur
A la première utilisation gist.vim demandera le mot de passe pour créer une autorisation4.
Utilisation
Pour paster tout le contenu du fichier, il suffit d'utiliser la commande Gist:
:Gist
Par défaut les pastes sont en mode privé.
Il est aussi possible de sélectionner une portion à paster, utiliser le mode visuel:
:'<,'>Gist
Si le plugin est configuré en mode privé, il est possible de demander un paste public:
:Gist -P
Si le plugin est configuré en mode publique, il est possible de demander un paste privé:
:Gist -p
Il est possible de créer un paste anonyme:
:Gist -a
Une option que je n'ai pas encore utilisé mais qui peut s'avérer utitle, c'est de paster un gist de tous les buffers ouverts:
:Gist -m
Si vous avez une erreur dans un de vos pastes et qu'il faut l'éditer c'est aussi possible, il faut cependant qu'un buffer avec le gist soit ouvert:
:Gist -e
Une fois paster un gist n'a pas de durée de vie, il est donc bon de faire un peu le ménage de temps en temps, encore une fois le gist doit être au préable ouvert:
:Gist -d
Il est aussi possible de lister vos gist:
:Gist -l
Pour ouvrir l'un des gist de la liste il suffit d'appuyer sur entrée, le gist s'ouvre dans un buffer splitter de manière horizontale, pareil que pour la liste.
Il est aussi possible de lister les gist d'un utilisateur:
:Gist -l utilisateur
Ou encore tous les gist:
:Gist -la
Il est possible de forker un gist si il est ouvert:
:Gist -f
Si un gist vous plait, il est possible de lui ajouter une étoile:
:Gist +1
Si au contraire vous vous êtes trompés et vous souhaitez retirer votre étoile:
:Gist -1
J'ai listé les principales commandes qui me paraissent les plus utiles et les plus utilisées, il en existe encore d'autres pour le reste je vous laisse lire la documentation du plugin.
Configuration
Il est possible de configurer quelques options. Comme par exemple indiquer si les gist doivent être publique ou non par défaut. Toutes ces variables de configurations sont à ajouter dans le fichier de configuration vim le vimrc.
Pour indiquer de détecter le type de fichier, qui est le fonctionnement par défaut:
let g:gist_detect_filetype = 1
Pour demander à ouvrir le gist automatiquement après l'avoir posté:
let g:gist_open_browser_after_post = 1
Indiquer le navigateur à utiliser:
let g:gist_browser_command = 'chromium %URL% &'
Spécifier de montrer aussi les gist privés avec la commande Gist -l:
let g:gist_show_privates = 1
Indiquer que les gist doivent être privés, fonctionnement par défaut:
let g:gist_post_private = 1
Il est aussi possible d'utiliser github enterprise et donc de spécifier l'url:
let g:github_api_url = 'http://your-github-enterprise-domain/api/v3'
Il y a encore d'autres possibilités, voir la documentation du projet pour le reste.
Conclusion
Un article assez simple qui reprends globlament la documentation pour vous présenter un plugin très pratique et intéressant. Comme on peut le constater le plugin utilise l'api de github et il s'avère très complet.
Pratique pour lequel je suis un grand fan, je suis pour le partage et l'intelligence collective ↩
Je profite de l'occassion pour le remercier, car je l'embête beaucoup et il me donne toujours de très bon conseils notamment technique ↩
C'est aussi l'auteur de webapi-vim utiliser par de nombreux plugin ↩
Même fonctionnement qu'avec l'api twitter qui utilise le même protocole ↩