Développement avec Emacs et Vim

17 replies [Last post]
Mark
Offline
Joined: 04/14/2012

Bonjour à tous,
Mon disque dur qui contenait Windows vient de mourir... Je ne peux plus utiliser mes outils de développement web. Il ne me reste que le second disque dur sous Trisquel GNU/Linux 5.5.
Jusque-là, tout va bien. Sauf que je ne suis pas un bon utilisateur de Trisquel, je ne sais même pas utiliser correctement Emacs23 ou Vim...

J'ai donc pas mal de question à vous poser.

  1. Lequel des 2 choisir pour le développement Web (HTML 5, CSS 3, PHP etc) ?
  2. Lequel des 2 choisir pour le développement en JavaScript ?
  3. Lequel des 2 choisir pour le développement en python et en C et C++ ?/li>
  4. Comment activer la coloration syntaxique dans Vim ?/
  5. Peut-on utiliser l'auto-complétion dans Emacs23 ? Du genre j'ouvre une balise et il la ferme lui-même.
  6. Que permettent de faire Emacs23 et Vim ?

Merci de bien vouloir me répondre,
j'ai vraiment besoin de votre aide.

Merci beaucoup.

Magic Banana

I am a member!

I am a translator!

Offline
Joined: 07/24/2010

Premier point : il existe des développeurs qui n'utilisent ni vim ni Emacs. Il ont tort sur le long terme. À court terme il ont raison : ces deux logiciels demandent des semaines d'apprentissages avant de dépasser la productivité que tu as avec des éditeurs plus simples. Bref, si cela peut te rassurer (et/ou si tu as du travail réellement urgent), tu peux tout à fait utiliser un éditeur de texte moins puissant. GEdit, par exemple, est installé par défaut dans Trisquel. Il sais colorer à peu près n'importe quel langage formel. Il existe aussi des tas de plugins pour lui faire faire des choses supplémentaires. Beaucoup de ces plugins sont directement installables depuis le gestionnaire de paquets. Néanmoins, et comme je l'écrivais, il est vraiment utile d'apprendre vim ou Emacs : sur le long terme, tu es gagnant.

Second point : je suis d'avis (mais d'autres me contrediront) qu'il est bête d'apprendre à la fois vim et Emacs. Ces deux outils sont capables des mêmes prouesses en terme d'édition de texte (y compris celles que tu listes)... mais ils sont complètement différents dans leur fonctionnement (sans parler des raccourcis clavier qui doivent être retenus pour un minimum de productivité).

Troisièmes point : Emacs est capables de bien d'autres prouesses que l'édition de texte. Au contraire, vim n'est qu'un excellent éditeur de texte. On peut lire/envoyer ses courriels depuis Emacs, gérer ses fichiers, gérer une liste de tâche à accomplir, naviguer sur le Web, lire ses flux RSS, chatter, jouer à Tetris, se confier à un psychiatre, etc. Toutes ces choses réutilisent les mêmes commandes de base et l'on peut donc optimiser toute son informatique en apprenant Emacs et en y sortant que très rarement. On peut même implémenter soit même tout ce que l'on veut pour qu'il devienne disponible dans Emacs. En effet, Emacs se "reprogramme" à l'aide d'extension que tu peux écrire toi-même en Lisp (typiquement des petites fonctions d'édition mise dans le fichier de configuration: ~/.emacs) ou récupérer d'autres utilisateurs.

Quatrième point : la courbe d'apprentissage d'Emacs est bien plus légère que celle de vim. Comme je l'écrivais, ces deux logiciels fonctionnent de façon complètement différentes. Le moins que l'on puisse dire est que le fonctionnement "modal" de vim n'a rien de commun. Le commun des mortels qui se retrouve devant un terminal avec vim lancé n'arrive à produire que des bips. Il faut, en effet, appuyer sur la touche i pour entrer dans le mode "insertion" et commencer la saisie. Au contraire, tu arriveras à quelque chose si tu trouves une fenêtre Emacs d'ouverte. Plutôt que des modes, l'édition se fait par le biais de raccourcis clavier comme tu en as l'habitude... mais ils sont différents de ceux que tu connais. Par exemple tu chercheras une chaîne de caractères (ou même une expression régulière) avec Ctrl+S (C-S dans le jargon Emacs) plutôt que Ctrl+F (qui sert à avancer d'un caractère sans aller chercher la flèche droite à l'autre bout du clavier). On ne peut pas reprocher à Emacs de ne pas disposer des raccourcis clavier connus de tous : il existait avant que Microsoft n'arrive avec ses propres choix (l'implémentation originelle d'Emacs, par rms, date de 1976). Les raccourcis d'Emacs, contrairement à ceux de vim sont, en général, faciles à retenir si tu connais l'anglais. Par exemple le S de C-S vient de "Search". Le F de C-F vient de "Forward". Comme tu peux le deviner C-B (B comme "Backward") permet de reculer d'un caractère. Enfin, Emacs tourne, par défaut, dans une belle interface GTK avec un menu qui s'adapte au fichier que tu édites (généralement automatiquement en examinant l'extension du nom de fichier). Il est donc très facile d'apprendre de nouvelles commandes spécifiques (et leurs raccourcis) en jetant des coups d'œil au contenu des menus. Au contraire, vim, en soit, ne tourne qu'à l'intérieur d'un terminal (ce que Emacs peut faire aussi et fait naturellement si tu es sur un système où le serveur X ne tourne pas).

Bon, comme tu l'auras compris je suis un fervent utilisateur d'Emacs et te le recommande par rapport à vim. Principalement en vertu d'une courbe d'apprentissage bien plus douce (je ne recommande pas aux utilisateurs avancés de vim de changer d'éditeur) et pour ses possibilités qui vont bien au delà de l'édition de texte. Pour commencer l'apprentissage d'Emacs, lance-le puis, dans le menu "Help", clique sur "Emacs Tutorial (choose language)..". Là tu peux cliquer sur "French" ou taper le début de ce mot ("f" suffit) puis Entrer. Il faut bien compter 2-3 heures pour arriver au bout du tutoriel (et bien, sûr, il faut faire les choses qu'il te dicte). Il faut ensuite des semaines quelque peu douloureuses à se forcer à utiliser Emacs même si tu serais plus efficace avec un éditeur plus simple. Après, tu ne reviendras plus jamais en arrière et pesteras lorsque tu te retrouveras à éditer un fichier sur un système sans Emacs. ;-)

Il serait bon qu'un utilisateur de vim vante ici ses mérites. Histoire d'avoir l'autre son de cloche (non, je ne veux pas dire que les utilisateurs de vim sont des "cloches" !).

Mark
Offline
Joined: 04/14/2012

Wow !!
Merci pour toutes ces précisions.
Le 3ème point m'impressionne beaucoup !! Emacs23 semble être tellement puissant !

Mark
Offline
Joined: 04/14/2012

Bonsoir,

J'ai un petit soucis, j'ai supprimé par mégarde le raccourci Emacs dans le "Main Menu" de Trisquel. Comment le remettre ?
J'ai regardé dans les paramètres du "Main Menu" mais je ne sais pas comment remettre le raccourcis d'Emacs... Dans l'onglet Programmation.

Pouvez-vous m'aider s'il vous plais ? Merci.

Magic Banana

I am a member!

I am a translator!

Offline
Joined: 07/24/2010

Dans l'utilitaire "Main Menu", il y a un bouton "New Item". Il permet d'ajouter une nouvelle entrée. Dans le cas de Emacs, la "Commande" doit être 'emacs', 'emacs23' en encore '/usr/bin/emacs23' pour le chemin entier. Néanmoins, tu peux y ajouter "%F" pour qu'il soit possible de glisser-déposer un fichier texte sur l'entrée et qu'il soit automatiquement ouvert. Au final, le champ "Commande" peut contenir :
/usr/bin/emacs23 %F

Pour le reste (l'icône, le nom et le commentaire), tu peux mettre ce qu'il te chante. /usr/share/icons/hicolor/scalable/apps/emacs23.svg est l'icône d'Emacs. Pour ce qui est du nom, tu veux probablement quelque chose comme "GNU Emacs 23". Quant au commentaire, peut-être "Voir et éditer des fichiers".

kawa
Offline
Joined: 11/18/2012

Merci pour les commentaires et les conseils de Banana sur Emacs. J'ai suivi le tuto d'Emacs depuisun mois. A la place du Terminal classique de vim,j'utilise Emacs et son shell pour mettre à jour ma Trisquel, c'est très conviviale.
Je dois bosser encore pour apprendre d'autres fonctions d'Emacs. Et à cette occasion, je souhaite une bonne santé et longue vie pour RSM.
Cordialement.

Magic Banana

I am a member!

I am a translator!

Offline
Joined: 07/24/2010

"RSM" ? Tu voulais écrire "RMS" je suppose. :-)

Mark
Offline
Joined: 04/14/2012

Oh super, Merci Magic Banana.

J'ai commencé le tutoriel d'Emacs, wow il semble extrêmement puissant !

Juste deux petites questions :

  1. Une fois que j'aurais terminé le Tutoriel d'Emacs, je dois faire quoi ? Je veux dire qu'est-ce-qu'il faut que je fasse pour bien le maîtriser ?
  2. C'est quoi le "Shell" que tu mentionnes dans ton message kawa ? Parce-que j'entends souvent GNOME Shell, script Shell etc..
Magic Banana

I am a member!

I am a translator!

Offline
Joined: 07/24/2010
  1. Il faut se forcer à l'utiliser. Il faut être curieux et notamment aller voir ce qu'il y a dans les menus pour apprendre de nouvelles commandes utiles. Il faut savoir qu'il est personnalisable aux petits oignons.
  2. Le "shell" est le programme qui interprète les commandes qui sont entrées dans un terminal. Plusieurs shells existent. Le plus commun, par défaut sur Trisquel, est GNU Bash. Il est possible d'ouvrir un Shell dans un buffer Emacs: C-x C-u (ou, M-x shell). Un script Shell est un script écrit dans le langage interprété par le Shell. Ces scripts commences par #!/bin/sh (pour un script interprétable par la plupart des Shells) ou #!/bin/bash (si il utilise des particularités de Bash) ou ... Emacs reconnaît cette ligne et charge automatiquement le mode majeur "Shell-script'. L'utilisation du mot "shell" dans GNOME Shell n'a pas grand chose à voir. C'est la "coquille" ("shell" en anglais) de GNOME plutôt que des commandes.
dsw
dsw
Offline
Joined: 03/13/2010

Bonjour Mark et Magic Banana!

Par tradition et aussi pour rappeler la philosophie UNIX, je viens ici m'inscrire en contre au sujet des arguments de Magic Banana ;-)

1. Dans toute distribution Linux/BSD, VI (le parent de Vim) est installé par défaut ce qui n'est pas le cas de Emacs.

2. La philosophie UNIX est d'avoir un outil par tâche (qui ne fait qu'une seule tâche mais qui le fait bien). Ce qui est le cas de Vim et pas d'Emacs.

3. Petite 'correction', Vim peut très bien s'exécuter en 'mode graphique' et non pas seulement en console. Il suffit de lancer gvim au lieu de vim (pour l'installer: apt-get install vim-gtk)

4. Comme Mark veut un éditeur puissant pour faire du développement web, pourquoi dès lors avoir autre chose qu'un éditeur. Est-ce vraiment une nécessité d'avoir un pyschiatre, de jouer à Tétris, lire ses mails, surfer sur le web? Ce n'est plus un éditeur, c'est une usine à gaz!

5. Au sujet de la courbe d'apprentissage, je ne suis pas d'accord avec Magic Banana. Même si dans un premier temps, on peut taper du texte dans Emacs, le nombre de raccourcis est proprement hallucinant et fait appel aux touches ESC, META, ALT, CONTROL et SHIFT (d'où le nom EMACS :)).

6. Au niveau de la configuration d'Emacs, elle me semble nettement plus complexe que la configuration de VIm. C'est aussi à prendre en compte dans la courbe d'apprentissage.

7. Avec VIm, je fais du développement web depuis un bon moment maintenant et je dispose des choses que tu demandes comme la coloration syntaxique ou l'auto-complètement.

8. VIm peut également se transformer en EDI (environnement de développement intégré) grâce à l'adjonction de scripts. Il en existe des centaines sur Vim-online.

Enfin, je ne suis pas étonné de voir qu'Emacs est mis en avant dans cette distribution pour laquelle j'ai beaucoup de respect et au doux nom de Trisquel car RMS est le créateur d'Emacs ET de la FSF. Il est donc naturel qu'une distribution comme Trisquel, fidèle à la FSF, fasse la part belle à Emacs...

Celà dit sans animosité et en rappelant le caractère traditionnel de cette "guerre des éditeurs".

Pour conclure en toute objectivité, je pense que l'utilisation de l'un ou de l'autre est une question de feeling. Par exemple, j'ai essayé d'apprendre les deux à l'époque où je n'avais pas encore fait mon choix (tout comme Mark) et, personnellement, je n'ai jamais pu me faire aux raccourcis imbuvables d'Emacs. En revanche, j'ai appris très rapidement et _naturellement_ les différents modes de Vim.

Sans rancune!

PS: comme "alternative" proposant des raccourcis plus familiers (comme CTRL-F et CTRL-H par exemple), j'estime que Geany est plus complet que Gedit (j'ai d'ailleurs développé pendant un moment avec Geany).

Magic Banana

I am a member!

I am a translator!

Offline
Joined: 07/24/2010

Merci pour la réponse. Je pense qu'il est très bien d'en rester là plutôt que de se lancer dans une flame war (même si c'est toujours tentant) ! :-)

Mark
Offline
Joined: 04/14/2012

Woah !! Merci pour ta réponse dsw !

C'est vrai que j'ai beaucoup de mal à m'adapter aux raccourcis d'Emacs. Mais je pense que les deux outils sont extrêmement puissants et valent tout deux le coup d'être maîtrisé.

Juste une question, comment activer l'auto-complétion et la coloration syntaxique dans Vim pour les langages HTML, CSS, PHP, mySQL et JavaScript ?

Merci beaucoup de vos réponses ;)

Magic Banana

I am a member!

I am a translator!

Offline
Joined: 07/24/2010

Connaissant l'anglais, je trouve les raccourcis d'Emacs beaucoup plus simples à apprendre. Ceux de Vim n'ont aucune logique (si ce n'est d'être plus facilement accessibles, genre sur la ligne du milieu du clavier, lorsqu'ils sont plus utilisés) : l pour déplacer le curseur à droite (contre C-f comme "forward" dans Emacs), x pour supprimer un caractère (conre C-d comme "delete" dans Emacs), etc.

Lorsque l'on arrive à des commandes plus complexes, il est clair que les raccourcis clavier correspondant le sont aussi (tous les raccourcis simples étant pris par les commandes simples) : M-q pour formater un texte en une colonne (par défaut de 80 caractères, je crois, sans coupure des mots), M-/ pour l'auto-complétion, M-$ pour vérifier/corriger l'orthographe du mot sous le curseur, M-; pour ajouter un commentaire ou commenter/décommenter le texte sélectionner, ... et là j'en reste encore à des choses relativement simples (puisque non spécifiques à un langage). Vim en est capable mais j'ai souvent vu des utilisateurs de Vim (mes étudiants) qui ne savaient pas comment ! Je suppose que cela est du à la difficulté de découvrir de nouveau raccourcis dans Vim. Dans Emacs, on peut, dans le pire des cas, utiliser le menu "Help/Search Documentation" et ses multiples façons d'accéder à ce que l'on veut.

Mais, comme je l'écrivais, une façon beaucoup plus simple d'apprendre de nouvelles commandes est via le menu qui s'adapte automatiquement au type de fichier. Je ne crois pas que ce soit le cas avec GVIM (après une recherche d'image sur le Web). As-tu essayé d'ouvrir un fichier .html dans Emacs ? As-tu fouillé dans les menus HTML et SGML qui s'affichent alors ? Il y a un raccourcis pour ajouter chaque élément HTML ou pour ajouter/supprimer un élément générique (l'étiquette t'est demandée dans le minibuffer), de quoi naviguer efficacement dans le document (en sautant d'un élément au suivant/précédent), un raccourcis pour ouvrir le buffer dans le navigateur Web, un mode "autoviewing" (pour que l'onglet du navigateur Web s'ouvre automatiquement après un enregistrement du buffer), etc.

Mark
Offline
Joined: 04/14/2012

Je te remercie de m'aider mais je crois qui tu n'as pas très bien compris ma question... Je voulais savoir comment activer la coloration syntaxique dans Vim pout les langages HTML, CSS, PHP, mySQL et JavaScript ?

Dans Emacs23, la coloration syntaxique s'active bien à l'ouverture d'un fichier *.htm. Cela fonctionne également lorsque je créé un nouveau fichier portant l’extension *.htm.

Ci-joint se trouve une capture d'écran de mon Terminal avec Vim, comme tu peux le voir, j'ai activé la numérotation automatique des lignes par un :set number en mode normal.
Mais la coloration syntaxique n'est pas présente. Elle ne s'est pas activée lors de l'ouverture du fichier essai.htm.

Autre problème, si je termine ma session Vim, et que je quitte ou non le Terminal, la numérotation automatique des lignes disparaît.

Donc, voilà l'embrouille :

  • Comment mettre par défaut la numérotation automatique dans Vim ?
  • Comment activer par défaut la coloration syntaxique dans Vim ?
colo_syn_vim.jpg
dsw
dsw
Offline
Joined: 03/13/2010

Bonsoir Mark!

Pour "fixer" les paramètres de Vim, il te faut créer un fichier .vimrc dans ton /home/mark/ (je présume).

Dans ce fichier, tu peux définir tes paramètres personnalisés.

Pour te donner un petit coup de main et te souhaiter la bienvenue dans le "Culte de VI", voici le lien de mon fichier de configuration (auto-complètement et coloration syntaxique inclus): http://pastebin.com/t93NfUwE.

Penses aussi à faire un: sudo cp -R /usr/share/vim/vim73 /home/mark/.vim
(c'est peut-être 'vim72' dans ta version de Trisquel...)

Pour résumer rapidement, Vim, c'est 3 modes:

1. mode commandes:
exemples:
'yy' (appuyez deux fois sur 'y', de 'yank'= copier la ligne en cours)
7p (la coller 7 fois, de p = paste)

2. mode 'visual' (touche 'v' en mode commandes): te permets de faire une sélection de plusieurs lignes et ensuite d'appliquer, par exemple, l'exemple 1

3. mode 'insertion' (touche 'i' en mode commandes): pour taper ton texte

En mode 'commandes', tu peux aussi avancer d'un mot avec la touche 'w' (= word) ou revenir un mot en arrière avec 'b' (= before)...

Pour sortir du mode 'insertion' ou du mode 'visual' et revenir en mode 'commandes': ESC

Pour le reste: vimtutor dans un terminal

Une fois que tu maitriseras les 3 modes, tu pourras te retrouver devant n'importe quelle distribution Linux ou BSD, même sans serveur X (donc en tty) et sans connexion internet tout en étant capable d'éditer n'importe quel fichier de configuration (par exemple tes paramètres réseau!) puisque VI sera forcément présent!

Bon amusement!

Mark
Offline
Joined: 04/14/2012

Merci beaucoup, c'est vraiment très gentil :D

silemmo
Offline
Joined: 10/25/2012

A mon avis apprend emacs sur ton temps libre si tu veux vite programmer sans t'embêter à apprendre emacs je te conseille.

Pour les petits jobs : gedit avec les snippets.
Pour les moyen à gros projet: eclipse ou geany.

Je suis comme toi, mais je voulais apprendre à programmer et non pas apprendre à utiliser un programme avant d'apprendre à programmer lol.

Ne vous meprenez pas emacs est sûrement génial, mais le facteur temps est important. Je pense qu'un tutoriel destiné aux programmeurs serait cool ou un emacs pré-packagé avec une config programmeur etc.
Mais bon encore une fois quelqu'un doit le faire et peut de monde a le temps.

Magic Banana

I am a member!

I am a translator!

Offline
Joined: 07/24/2010

Le fait est, qu'à long terme, maîtriser Emacs ou vim est un gain de temps.

Emacs n'a pas réellement besoin d'être "configuré" pour la programmation : les paramètres des modes associés aux langages de programmations sont, par défaut, tout à fait raisonnable. Cela n'a pas vraiment l'air d'être le cas de vim puisque, par défaut, la coloration syntaxique n'est pas activée. Dans les deux cas, chaque détail peut être modifié à sa convenance. Mais cela ne signifie que de tels modifications sont "nécessaires".