CONNEXION
  • RetourJeux
    • Tests
    • Soluces
    • Previews
    • Sorties
    • Hit Parade
    • Les + attendus
    • Tous les Jeux
  • RetourActu
    • Culture Geek
    • Astuces
    • Réalité Virtuelle
    • Rétrogaming
    • Toutes les actus
  • RetourHigh-Tech
    • Actus JVTECH
    • Bons plans
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTECH
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch
    • Xbox Series
    • Overwatch 2
    • FUT 23
    • League of Legends
    • Genshin Impact
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • PS4
  • One
  • Switch
  • Wii U
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Etoile Abonnement RSS

Sujet : VI VI VI, éditeur de la Bête

DébutPage précedente
1234567891011
Page suivanteFin
Caletlog Caletlog
MP
Niveau 10
22 décembre 2013 à 15:50:36

Oyo!
Histoire de concurrencer un peu le sujet sur l'Église d'Emacs, je me porte volontaire pour un petit topic de présentation de vim (et non pas vi, mais il fallait bien faire sensation dans le titre).

----------------------------------------------
0. Qu'est-ce que VIM?
----------------------------------------------
VIM (vi-improved, descendant de l'antique Vi) est un éditeur de texte modal, initialement en ligne de commande (donc accessible dans un terminal ou tty sans interface graphique)
Un éditeur modal est un éditeur qui fonctionne par modes (uhuhu), c'est-à-dire que les fonctionnalités et commandes habituelles sont séparées en groupes sémantiques et ne sont utilisables que dans ces groupes (ou leur comportement est modifié dans les autres). Par exemple, vous ne pourrez écrire du texte qu'en mode Insertion; par contre, les lettres de l'alphabet sans modificateurs (donc sans control, shift, alt, ...) pourront être utilisées en mode Normal: étant donné que vous n'êtes pas censé vouloir écrire du texte (puisque vous n'êtes pas en mode Insertion), toutes les lettres peuvent ainsi être utilisées comme des commandes, au même titre que Ctrl+a ou Alt+m, par exemple.
C'est là tout le principe et la force de vim; en séparant la saisie du texte du traitement de ce dernier, on a la possibilité de toujours avoir des raccourcis courts, simples et accessibles sans effort, permettant de passer des heures dans l'éditeur en faisant le moins de mouvements possible.

----------------------------------------------
1. Présentation de VIM
----------------------------------------------
/ / / ---------------------------------
/ / / 1.1 Pourquoi VIM?
/ / / ---------------------------------
+ Ultra léger et rapide à démarrer
+ Accessible sans interface graphique
+ Ultra personnalisable avec des options à la pelle et le langage VimScript (qui ressemble au bash)
+ Modal
+ Conçu pour être ergonomique
+ Configurable dynamiquement à la volée
+ Possibilité de tester et compiler ses fichiers à l'intérieur de vim

/ / / ---------------------------------
/ / / 1.2 Pourquoi pas VIM?
/ / / ---------------------------------
- L'édition modale et les raccourcis peuvent sembler rébarbatifs
- La configuration par défaut est quasiment inutilisable en environnement de production
- La gestion des extensions est archaïque sans Pathogen ou Vundle
- Configuration éparpillée et pas forcément évidente
- Certains concepts ou noms de concepts sont à l'opposé des idées admises

/ / / ---------------------------------
/ / / 1.3 Et à quoi ça sert?
/ / / ---------------------------------
Éditer du texte. Et rien d'autre. Je vois d'ici venir les utilisateurs d'emacs avec leur système d'expl... éditeur complet. Ici, pas de froufrou qui pend au rétroviseur, pas de partie de pacman entre deux compilations, pas de vidéos dessinées en ASCII à l'intérieur d'un gestionnaire de mails à l'intérieur d'un émulateur gameboy lancé par l'éditeur.
Non non non Môsieur, vim édite du texte, et c'est tout. Mais qu'est ce qu'il le fait bien!

Plus sérieusement, VIM, par défaut, ne fait effectivement qu'éditer du texte. Par contre, grâce à ses possibilités de personnalisation infinies et l'existence d'une tonne de plugins, il est possible d'en faire plus ou moins ce que vous voulez, à partir du moment où ça reste dans le domaine de l'édition de texte. Vous trouverez à la fin de ce guide un exemple de transformation de vim en IDE plus que complet, par exemple, qui n'a rien à envier aux plus grands du milieu.
Évidemment, des jeux et des utilitaires (prise de notes, client irc, calculatrice scientifique, ...) sont disponibles avec un peu de bricolage ou quelques plugins. Mais ça reste anecdotique: avec vim, un programme pour chaque chose et on ne mélange pas tout.

----------------------------------------------
2. Guide de survie de VIM
----------------------------------------------
/ / / ---------------------------------
/ / / 2.1 Concepts principaux
/ / / ---------------------------------
Dans VIM, il convient de comprendre plusieurs concepts de base afin de se débrouiller convenablement.

      • Les modes*** Les principaux modes de vim sont: INSERTION (écrire du texte); COLLAGE (sous-mode d'insertion, permet de coller des blocs de texte en respectant l'indentation); REMPLACEMENT (permet d'insérer du texte en le remplaçant au lieu de l'ajouter); VISUEL (permet de sélectionner du texte à la souris ou au clavier pour le manipuler en blocs); SELECTION(sous-mode de visuel, permet de remplacer le texte sélectionné par le prochain caractère tapé); NORMAL (mode par défaut, permet de manipuler le fichier); LIGNE-DE-COMMANDE (permet de taper des commandes vim ou shell en revenant au mode normal après réussite); mode EX (permet de taper des commandes à la suite sans revenir en mode normal tant qu'on ne le demande pas).
      • Les buffers*** Un buffer est un fichier ouvert, chargé dans la mémoire de l'éditeur afin d'y travailler dessus. Notez que tous les fichiers ouverts dans vim sont liés à un buffer, mais qu'un buffer n'est pas forcément lié à un fichier (buffer non écrit sur le disque, par exemple). Il y a également des buffers spéciaux: buffer de recherche qui stocke les recherches faites, buffer de copie, buffer utilisateur, buffer des macros, ...
      • Les fenêtres*** Une fenêtre est une porte vers un buffer. On peut faire pointer plusieurs fenêtres sur un même buffer ou une seule fenêtre sur un seul buffer (minimum).
      • Les onglets*** Un onglet est un regroupement de fenêtres, par exemple lorsque l'écran est divisé en deux blocs verticaux ou horizontaux.
      • Les mappings*** Un mapping est un raccourci. Concrètement, il y a un type de mapping pour chaque mode. On peut donc définir un même raccourci à des fonctions différentes en fonction du mode dans lequel on se trouve.
      • Les macros*** Un macro est un mapping local pour utilisation en général à court-terme car très spécifique (sinon on lui préférera le mapping). Il permet de répéter une action particulière autant de fois que nécessaire après l'avoir enregistrée.
      • Les colorschemes*** Un colorscheme est un fichier de configuration externe qui permet d'indiquer à vim quelles constructions syntaxiques particulières à un langage il doit mettre en valeur, colorer, souligner, ...
      • La statusline*** C'est la ligne qui permet d'afficher des informations diverses sur le document en cours d'édition. Elle est entièrement personnalisable, avec des fonctions, des mises à jour automatique, ...

/ / / ---------------------------------
/ / / 2.2 Raccourcis principaux
/ / / ---------------------------------
échap: retourne au mode NORMAL.

En mode NORMAL:
i/a/A: entrer en mode insertion au curseur/curseur+1/fin de ligne.
o/O: entrer en mode insertion dans une nouvelle ligne sous/sur la ligne actuelle.
rR: entrer en mode remplacement pour un caractère/jusqu'au prochain changement de mode
h/j/k/l: se déplacer à gauche/bas/haut/droite.
gg: aller en première ligne.
G: aller en dernière ligne.
dd: effacer/couper la ligne courante.
p: coller la ligne dans le buffer.
yy: copier la ligne courante.
u: annuler la dernière opération.
Ctrl-R: rétablir la dernière annulation.
...

Et ainsi de suite. Il est essentiel de comprendre que la quasi totalité de ces commandes fonctionne avec des modificateurs vimiens: sachant que "$" indique la fin d'une ligne et que "w" indique le début du mot suivant, taper "d$" va supprimer la ligne actuelle jusqu'à la fin de la ligne, tandis que "cw" va entrer en mode insertion en effaçant du curseur jusqu'au début du mot suivant. Suivant le même principe, 4j déplace de 4 lignes vers le bas et 8yy copie les 8 prochaines lignes.
Le principe des modificateurs est vraiment puissant; essayez! Tout est plus ou moins combinable à la façon de phrases, pouvant donner lieu à des commandes de manipulation rudement pratique.

...

Caletlog Caletlog
MP
Niveau 10
22 décembre 2013 à 15:50:52

...
(suite)

----------------------------------------------
3. Plugins et exemple de configuration
----------------------------------------------
Il est possible de personnaliser vim de façon incroyable grâce aux plugins. Pour se faire, vous pouvez les télécharger et les décompresser dans votre ~/.vim, mais c'est plutôt archaïque et long à mettre à jour. Il existe des plugins gestionnaires de plugins, très pratiques, comme Pathogen, qui permet de mettre les dossiers de plugins directement dans un même dossier, ou, mieux (selon moi), Vundle, qui permet, en spécifiant une adresse git ou vimscript dans votre fichier vimrc, de télécharger quand vous le voulez les plugins correspondants. Vous gérez et mettez ainsi à jour tous vos plugins en une ligne de commande.

Outre les plugins téléchargeables, vous pouvez également placer vos fichiers [filetype].vim dans ~/.vim/ftplugin afin d'indiquer à vim de charger des paramètres ou abbréviations particulières propres à certains formats de fichiers. Vous pouvez également le faire dans votre .vimrc, mais dans le cas d'abbréviations (par exemple en html pour les entités), c'est plus propre de le faire dans un fichier séparé.

Exemple de configuration, avec mon fichier .vimrc configuré de manière à retrouver toutes les fonctionnalités des IDE traditionnels (completion, snippets, highlighting poussé, regex, gestion de projet, intégration git, ...): http://pastebin.com/LXLkdLcB
Utilisant vundle, il vous suffira d'installer vundle manuellement puis de démarrer vim en tapant ":BundleInstall" afin de vous retrouver avec la même configuration, plugins compris.

--------------------
Il y aurait moyen de parler de vim pendant encore 30 ans sans tout couvrir, je vais donc m'arrêter là. En récupérant mon fichier ou d'autres fichiers de configuration, vous verrez qu'il y a encore des tas de concepts et fonctionnalités très pratiques disponibles dans vim (parfois exclusivement dans vim); à vous de les découvrir si ça vous intéresse, vous ne serez pas déçus :o))

Bref, si vous êtes débutant, vous êtes bienvenue sur ce topic pour demander de l'aide ou des conseils de configuration; pour les intermédiaires et autres experts de vim, n'hésitez pas à partager vos astuces, configs et plugins fétiches :)

Pseudo supprimé
Niveau 10
22 décembre 2013 à 15:55:21

VI VI VI = 6 6 6 :peur:

:hap:

Knakis Knakis
MP
Niveau 10
22 décembre 2013 à 16:02:17

J'adore <cc>, voilà, c'est tout ce que j'ai à dire. :noel:

Au passage, sachez qu'il existe beaucoup de clones de Vi, comme Elvis par exemple (ne gère pas l'unicode >> /dev/null). Trouvez le vôtre, Vim est juste le plus complet et puissant de tous.

Par contre attention aux effets étranges à force de l'utiliser. Un deamon viendra à vous et vous verrez plusieurs fois des <dd>, <x> ou encore <p> dans vos textes. :noel:

Pseudo supprimé
Niveau 10
22 décembre 2013 à 17:47:24

Pourquoi autant d'engouement pour de simples éditeurs de texte ?

Google_Bot Google_Bot
MP
Niveau 12
22 décembre 2013 à 17:52:56

60sec :d) est-ce que tu programmes?
C'est sûr que si tu n'utilises pas souvent un certain type d'outil, tu n'as aucun intérêt à choisir méticuleusement une marque / un modèle / etc.
Mais quand tu passes beaucoup de temps avec un logiciel, autant en choisir un qui soit efficace, adapté à tes besoins, etc.

Pseudo supprimé
Niveau 10
22 décembre 2013 à 17:57:38

J'utilisais geany quand je faisait du python, mais je comprends pas trop en quoi l'éditeur est si important, car au final ce n'est "qu'un" éditeur de texte.

myhideout myhideout
MP
Niveau 7
22 décembre 2013 à 17:58:15

Je programme mais j'ai une grosse flemme de devoir apprendre 20 000 raccourcis :( je trouve que l'autocomplétion, la fermeture automatiques des accolades/guillemets, le copier/coller suffit . Je suis pas sûre que vi/emacs m'apporte quelque chose (à part avoir le droit de troller l'adversaire).

Je lirai le pavé plus tard, ça me donnera peut-être des réponses :hap:

Caletlog Caletlog
MP
Niveau 10
22 décembre 2013 à 17:58:54

60sec > que ce soit pour les cours ou le loisir, je passe plusieurs heures d'affilée par jours devant mon éditeur de texte. Donc le moindre petit confort, la moindre petite fonction qui pourrait me faire économiser des mouvements de doigt, du temps ou de la fatigue visuelle est la bienvenue. Alors je vais peut-être, au final, avoir passé 10 ou 20 heures à configurer l'ensemble de mon environnement (éditeur, shell, thème de couleur, raccourcis, ...), mais au final ce sont des heures et des heures de gagnés niveau confort.

Si tu te sers ponctuellement d'un éditeur de texte pour configurer 2 ou 3 fichiers et puis basta je comprends tout à fait, un truc comme nano pourrait même suffir.

Après y'a aussi un peu le fait que je trouve ça cool de toujours pousser ses outils au maximum, je fais ça avec la plupart des programmes que j'utilise.

Pseudo supprimé
Niveau 10
22 décembre 2013 à 18:00:57

Caletlog :d) ah d'accord alors tout s'explique :-)

Caletlog Caletlog
MP
Niveau 10
22 décembre 2013 à 18:01:43

"au final ce n'est "qu'un" éditeur de texte"

:d) Justement, non, selon moi. Enfin si, dans l'absolu, c'est que ça, c'est pas lui qui va coder à ta place. Mais comme je l'ai dit, quand tu passes des heures d'affilée devant un même éditeur, autant faire en sorte qu'il soit a) fonctionnel et b) adapté à ton moindre besoin. C'est bien plus qu'un simple support de développement, je trouve que c'est un outil qui fait partie intégrante de la chaîne de développement.

Bacon_viii Bacon_viii
MP
Niveau 9
22 décembre 2013 à 18:03:58

Je le poste souvent mais c'est *vraiment* un tuto court et génial pour apprendre à utiliser vim :
http://yannesposito.com/Scratch/en/blog/Learn-Vim-Progressively/

Knakis Knakis
MP
Niveau 10
22 décembre 2013 à 18:11:59

Y'a aussi le Vimtutor pour apprendre, il est très bien.

60sec >> Tu passes beaucoup de temps devant une chose bien précise, autant qu'elle soit la plus confortable possible. L'informatique, c'est aussi passer 1 ans pour gagner 10 secondes.

Caletlog Caletlog
MP
Niveau 10
22 décembre 2013 à 18:17:03

Après le gros problème c'est qu'étant un éditeur assez exotique niveau raccourcis, je perds complètement la possibilité d'être productif quand je passe à autre chose.
Sur les PC de mon IUT on a que Dreamweaver ( :rire: ), Netbeans et Eclipse et quand je dois les prendre je me retrouve avec des i, h,j,k,l, dd, ... dans tout le document et impossible de me souvenir des raccourcis "traditionnels", puisque j'ai passé tous mes programmes en raccourcis vim-like :(

Knakis Knakis
MP
Niveau 10
22 décembre 2013 à 18:19:29

« Par contre attention aux effets étranges à force de l'utiliser. Un deamon viendra à vous et vous verrez plusieurs fois des <dd>, <x> ou encore <p> dans vos textes. :noel: »

Ben, ça fait déjà deux cas.

Le deamon nous regarde. :peur:

[n][b][l] [n][b][l]
MP
Niveau 7
22 décembre 2013 à 20:15:51

Vim est pour moi le meilleur logiciel jamais crée, il est parfait dans son domaine.

nounoursheureux nounoursheureux
MP
Niveau 10
23 décembre 2013 à 09:00:57

Et c'est quoi le plugin pour ajouter la complétion ? Parce que ça m'intéresse :oui:
Et qu'est-ce que tu appelles "highlighting poussé" ?

0k823 0k823
MP
Niveau 10
23 décembre 2013 à 09:12:17

Emacs est un mauvais système d'exploitation et un très mauvais éditeur. :noel:

Nh3xus Nh3xus
MP
Niveau 10
23 décembre 2013 à 09:14:36

Ouste le vilain troll.

nounoursheureux nounoursheureux
MP
Niveau 10
23 décembre 2013 à 14:50:40

C'est quoi le plugin pour avoir la complétion ?

DébutPage précedente
Page suivanteFin
Répondre
Prévisu
?
Victime de harcèlement en ligne : comment réagir ?
La vidéo du moment