NeoVim

Juste une petite discussion à propos de l'avenir de Vim

a marqué ce sujet comme résolu.

Hello,

Ce topic est assez généraliste pour avoir une petite discussion sur vim et sur plusieurs points, si ça vous dit bien entendu :-) .

Vu qu'il y a quelques adeptes de Vim ici, je voulais savoir si quelqu'un avait testé Neovim en condition réelle. Si quelqu'un a testé je suis intéressé pour savoir quelles sont les principales nouveautés.

Je me disais aussi que ça serait top d'avoir un cours sur Vim ici, personne n'est chaud pour le faire ? Perso j'ai pas le niveau pour un tel cours. Même si j'ai des bases je serais intéressé pour le lire à vrai dire, car c'est vraiment large et personne ne le traite vraiment de A à Z (dommage).

VimL pour moi c'est de la daube, le moindre truc est complexe, pour un langage de script pour un éditeur c'est le comble… Vous avez une explication de pourquoi c'est encore le langage de base dans vim ? Vous avez des arguments pour me faire croire que c'est pas si pourri ?

Je suis aussi curieux de savoir en quoi développent les gens qui utilisent vim (moi c'est pour PHP / C / JS).

Bref, ça sera mon tread du dimanche :) . Bonne journée.

+1 -0

Salut,

Bonne idée, ce topic, mais je crois qu'il aurait plus sa place dans le bar à smoothies, non ?

Sinon, perso, j'ai commencé à utiliser VIM très récemment, tout simplement parce que ce logiciel me rebutait au départ à cause des commandes.

Pour vous situer un peu dans le contexte, j'utilise un netbook possédant de faibles performances pour prendre mes cours, et bon vieux barbu que je suis, j'avais retiré l'interface graphique car il souffrait énormément (un peu bourrin, je le reconnais), avec Nano comme éditeur de texte. Ce logiciel n'est pas mal, mais il souffrait de deux grosses lacunes qui rendaient le travail un poil pénible :

  • Pas de copier-coller possible pour plus d'une ligne
  • Pas d'indentation automatique, ce qui m'obligeait à les refaire automatiquement pour écrire du code…

Comme je ne savais pas trop qui de VIM ou de Emacs me plairait le plus, j'ai fini par installer les deux et de les essayer l'un après l'autre. J'ai commencé par Emacs, et je me suis très vite frotté à un problème : bien qu'il y ait un menu disponible en haut de l'interface en ligne de commande, je n'ai pas trouvé de moyen d'y accéder. Or, c'est là-dedans que se trouvent toutes les fonctions avec les raccourcis associés. J'ai fini très vite par l'abandonner et j'ai tenté VIM, dans lequel j'ai très vite retrouvé mes traces. Il m'arrive encore de temps à autre d'oublier de passer en mode Insertion, mais je m'y plais beaucoup plus :)

Pour finir, je suis passé à VIM pour tout, y compris en interface graphique avec GVIM (paquet vim-gtk sous Ubuntu). Je l'utilise pour PHP et $\LaTeX$, et plus récemment Python pour mes bots IRC.

+0 -0

De ce que j'ai vu le but de neoVim a moyen terme est de faire le ménage dans la base de code pour virer les supports legacy, le code mort et mettre au propre le projet. Ils ne sont pas encore au point de rajouter de nouvelles fonctionnalités. Je pense qu'actuellement il y a assez peu d'interet pour l'utilisateur. L'interet arrivera à long terme quand ils auront fini le refactoring.

Pas d'indentation automatique, ce qui m'obligeait à les refaire automatiquement pour écrire du code…

[HS] Et bien ça dépend de ce que tu appelles indentation auto. Si tu veux dire "quand je mets une accolade ouvrante il met une tabulation (ou autre) en plus", là non, il ne sait pas faire. Par contre, garder ton indentation courante, si. [HS++] Et moi ça me suffit :p [/HS++] [/HS]

+0 -0

De ce que j'ai vu le but de neoVim a moyen terme est de faire le ménage dans la base de code pour virer les supports legacy, le code mort et mettre au propre le projet. Ils ne sont pas encore au point de rajouter de nouvelles fonctionnalités.

Sauf erreur de ma part, la grosse motivation derrière NeoVim c'est de faire de l'asynchrone (des commandes qui s'exécutent en background) nativement. Je crois qu'ils ont avancé de ce côté, mais je ne sais pas à quel point. J'ai aussi cru voir qu'ils allaient remplacer le vimL par le lua et qu'ils écrivaient un compilateur vimL -> Lua actuellement.

+1 -0

Peut être une question bête mais pourquoi l'utiliser en ligne de commande ? Je veux dire, même sous X tu as un terminal…

Nek

Comme je l'ai dit ici :

j'utilise un netbook possédant de faibles performances pour prendre mes cours, et bon vieux barbu que je suis, j'avais retiré l'interface graphique car il souffrait énormément SourceJérôme Deuchnord

Mais bon depuis j'ai remis LXDE. Et puis rappelons quand même que VIM a d'abord été conçu pour une utilisation en ligne de commande, donc que ce soit dans un TTY ou dans un émulateur de terminal, ça revient au même hein.

[HS] Et bien ça dépend de ce que tu appelles indentation auto. Si tu veux dire "quand je mets une accolade ouvrante il met une tabulation (ou autre) en plus", là non, il ne sait pas faire. Par contre, garder ton indentation courante, si. [HS++] Et moi ça me suffit :p [/HS++] [/HS]

dosmpm

C'est effectivement ce que je cherchais au départ, comment on fait ?

Sinon, VIM propose aussi d'indenter automatiquement après une accolade par exemple, avec la commande :set cindent! (la même commande permettant de désactiver la fonctionnalité).

+0 -0

non mais faut pas chercher, si tu as commencé a prendre en main Vim, il n'y a aucun interet a repartir sur nano. Le plus dur a comprendre ce sont les modes et les combinaisons de commandes. Une fois que ça c'est compris, c'est la pratique qui te fais le maitriser mais c'est toujours beaucoup plus puissant que nano.

De ce que j'ai compris, l'idée derrière le projet est aussi d'avoir un projet qui soit beaucoup plus évolutif. Apparemment, le développement de Vim est surtout contrôlé par un seul homme qui ne peut pas faire des miracles à lui tout seul. En retapant le code, il sera accessible à potentiellement plus de développeurs. Mais pour l'instant, je rejoins kje. Même si le projet est intéressant, il y a peu d'intérêt pour l'utilisateur final.

Sinon, perso, j'utilise Vim parce qu'il est dispo partout. Comme je suis amené à me connecter à des machines sans serveur X en SSH sur lesquelles je n'ai évidemment pas les droits root, il me faut un truc qui puisse servir un peu à tout faire (des scripts en divers langages, des programmes plus lourds avec plusieurs fichiers, lire de gros fichiers de données) sans boiter et de façon efficace. Vim convient parfaitement pour cet usage en couteau suisse sans avoir à changer de cerveau toutes les 10 minutes parce qu'on change d'IDE.

+2 -0

Peut être une question bête mais pourquoi l'utiliser en ligne de commande ? Je veux dire, même sous X tu as un terminal…

Nek

Comme je l'ai dit ici :

j'utilise un netbook possédant de faibles performances pour prendre mes cours, et bon vieux barbu que je suis, j'avais retiré l'interface graphique car il souffrait énormément SourceJérôme Deuchnord

Mais bon depuis j'ai remis LXDE. Et puis rappelons quand même que VIM a d'abord été conçu pour une utilisation en ligne de commande, donc que ce soit dans un TTY ou dans un émulateur de terminal, ça revient au même hein.

Désolé j'ai fait une erreur dans mon message, je demandais pourquoi ne pas l'utiliser en ligne de commande… En parlant de ton utilisation de GVim, j'ai du mal à en comprendre l'intérêt :) .

Pour ce qui est de Neovim, si je comprends bien, personne ne l'a testé ? (parce que oui, j'ai bien lu le site officiel, comme vous :) )

On m'a vendu "neovim c'est le support de ruby par exemple"… Mais moi, j'ai déjà ruby sous vim :o (la preuve avec le plugin lusty). En revanche remplacer VimL par lua c'est vraiment énorme comme feature :o .

Sinon personne n'a parlé de ctags, vous ne l'utilisez pas ? Vous ne trouvez pas sa mise en place un peu trop complexe pour pas grand chose (je veux dire, devoir faire une conf par projet etc…). Vous avez une solution plus performante que ctags pour l'autocompletion ?

[HS] (décidément !)

C'est effectivement ce que je cherchais au départ, comment on fait ?

Je suis tout à fait d'accord avec ceci :

non mais faut pas chercher, si tu as commencé a prendre en main Vim, il n'y a aucun interet a repartir sur nano.

Mais, pour ta culture, dans /etc/nanorc, en plus de mettre la coloration syntaxique, je mets ceci (enfin en fait je les décommente :p ) :

1
2
set autoindent
set nowrap # pour les cas extrèmes

[/HS]

De toute façon, comme je n'ai jamais utilisé d'IDE pour faire du code (juste un éditeur de texte avec coloration syntaxique), j'utilise vi (généralement quand je n'ai pas nano je n'ai pas non plus vim) comme si j'avais nano, donc en gros je me limite à "insertion", ESC : wq :honte: .

+0 -0

Peut être une question bête mais pourquoi l'utiliser en ligne de commande ? Je veux dire, même sous X tu as un terminal…

Nek

Comme je l'ai dit ici :

j'utilise un netbook possédant de faibles performances pour prendre mes cours, et bon vieux barbu que je suis, j'avais retiré l'interface graphique car il souffrait énormément SourceJérôme Deuchnord

Mais bon depuis j'ai remis LXDE. Et puis rappelons quand même que VIM a d'abord été conçu pour une utilisation en ligne de commande, donc que ce soit dans un TTY ou dans un émulateur de terminal, ça revient au même hein.

Désolé j'ai fait une erreur dans mon message, je demandais pourquoi ne pas l'utiliser en ligne de commande… En parlant de ton utilisation de GVim, j'ai du mal à en comprendre l'intérêt :) .

À vrai dire, je me pose parfois la question du pourquoi j'utilise GVIM, c'est vrai que VIM en ligne de commande se suffit amplement… Cela dit, j'y ai vu une utilité (un peu détournée) : toutes les fonctions de VIM sont disponible dans le menu de la GUI, ce si on ne connaît (ou se souvient) plus d'un commande, on peut la rechercher dans le menu… Et comme la commande associée est indiquée à côté, ça permet de se la (re)mémorer en même temps ^^

+0 -0

Si quelqu'un a testé je suis intéressé pour savoir quelles sont les principales nouveautés.

Nek

Rajout de l'asynchrone. Et modularisation plus aboutie que les plugins. Ils vont chercher à simplifier l'installation et les mises à jour de plugins (-> capitalisation de l'expérience de VAM, NeoBundle & cie)

Je me disais aussi que ça serait top d'avoir un cours sur Vim ici, personne n'est chaud pour le faire ? Perso j'ai pas le niveau pour un tel cours. Même si j'ai des bases je serais intéressé pour le lire à vrai dire, car c'est vraiment large et personne ne le traite vraiment de A à Z (dommage).

Nek

Il y a beaucoup de choses à dire :

  • les bases
  • comment écrire ses plugins/configurer vim (j'avais donné une présentation sur le sujet il y a très longtemps (-> en partie périmé côté bonnes pratiques) … que j'ai paumée :()
  • quels sont les plugins les plus populaires et qu'est-ce qu'ils apportent

VimL pour moi c'est de la daube, le moindre truc est complexe, pour un langage de script pour un éditeur c'est le comble… Vous avez une explication de pourquoi c'est encore le langage de base dans vim ? Vous avez des arguments pour me faire croire que c'est pas si pourri ?

Nek

Seul le support du VimL est garanti. C'est pour cela que j'écris tous mes plugins en VimL. Avec python/perl/scheme/ruby/tcl/… je n'ai aucune garantie que les utilisateurs de mes plugins puissent les utiliser. Sans parler que du jour au lendemain je risque de me retrouver sur une machine où python/perl/scheme/ruby/tcl/… ne sera pas installé. Et si en plus d'installer gvim, je dois installer une version de python/… compatible avec la version requise par mes plugins, c'est l'enfer (j'ai eu d'ailleurs un problème avec YouCompleteMe sur une vieille conf où je ne pouvais pas installer de version récente de python).

Sur un PC de client orienté bureautique assez verrouillé, j'avais écrit des scripts de traitement/transformation de données. Avec gvim sur ma clé USB, j'ai eu accès au VimL ce qui m'a permis de réaliser fort simplement mes transformations.

Accessoirement, ne pas perdre de vue que les commandes principales du vimL sont :substitute et :global. Ces commandes sont très proches des test-utils d'UNIX : sed et grep. Après, il est sûr que pour faire du fonctionnel, le VimL est une cata.

Je suis aussi curieux de savoir en quoi développent les gens qui utilisent vim (moi c'est pour PHP).

Nek

C++ essentiellement. Et VimL aussi. Et du LaTeX une fois tous les 5 ans.

Et finalement le vim-master arriva o/.

Si quelqu'un a testé je suis intéressé pour savoir quelles sont les principales nouveautés.

Nek

Rajout de l'asynchrone. Et modularisation plus aboutie que les plugins. Ils vont chercher à simplifier l'installation et les mises à jour de plugins (-> capitalisation de l'expérience de VAM, NeoBundle & cie)

L'asynchrone dis tu ? Genre lancer ctags dans vim sera possible ? ^^ Ça ouvrirait vraiment un énorme potentiel… Attention IntelliJ, NeoVim is here!

Je me disais aussi que ça serait top d'avoir un cours sur Vim ici, personne n'est chaud pour le faire ? Perso j'ai pas le niveau pour un tel cours. Même si j'ai des bases je serais intéressé pour le lire à vrai dire, car c'est vraiment large et personne ne le traite vraiment de A à Z (dommage).

Nek

Il y a beaucoup de choses à dire :

  • les bases
  • comment écrire ses plugins/configurer vim (j'avais donné une présentation sur le sujet il y a très longtemps (-> en partie périmé côté bonnes pratiques) … que j'ai paumée :()
  • quels sont les plugins les plus populaires et qu'est-ce qu'ils apportent

Beh ouais, carrément, en fait c'est justement parce que je pense à ça que je n'ai pas le niveau (sinon je sais bidouiller vim finalement ^^). Mais c'est des parties super intéressantes de Vim. En fait ça permettrait à des gens comme moi de faire des plugins (notamment pour les tools qu'on promouvoit).

Après du coup il vaudrait mieux que le cours soit direct orienté Neovim.

Tu serais chaud toi pour bosser sur ce genre de projet ? :o

Seul le support du VimL est garanti. C'est pour cela que j'écris tous mes plugins en VimL. Avec python/perl/scheme/ruby/tcl/… je n'ai aucune garantie que les utilisateurs de mes plugins puissent les utiliser. Sans parler que du jour au lendemain je risque de me retrouver sur une machine où python/perl/scheme/ruby/tcl/… ne sera pas installé. Et si en plus d'installer gvim, je dois installer une version de python/… compatible avec la version requise par mes plugins, c'est l'enfer (j'ai eu d'ailleurs un problème avec YouCompleteMe sur une vieille conf où je ne pouvais pas installer de version récente de python).

Sur un PC de client orienté bureautique assez verrouillé, j'avais écrit des scripts de traitement/transformation de données. Avec gvim sur ma clé USB, j'ai eu accès au VimL ce qui m'a permis de réaliser fort simplement mes transformations.

Je comprends mieux l'intérêt :) . C'est vrai que du coup de ce point de vu c'est beaucoup moins une "daube".

+0 -0

C'est pas avec ctags que tu vas révolutionner quoique ce soit. C'est vachement limité comme parseur/analyseur de code. Mes plugins reposent sur ce dernier et … cela limite pas mal ce qu'il m'est possible de faire. Après, j'ai le non-documenté lh-tags pour mettre à jour de façon incrémentale une base ctags. Mais pour les langages évolués, mieux vaut viser du côté de YouCompleteMe qui a résolu autrement le "tourner en tâche fond".

Pour ce qui est de faire un tuto, je n'ai pas trop le temps, et les principaux trucs pour vim sont déjà sur wikia. Après, ma façon de procéder est assez différente de beaucoup sur pas mal de choses. Avant de faire un tuto, j'ai un gros billet à finir sur le C++, plus deux autres que j'ai en tête plus toute la doc de mes plugins. Je voudrais p.ex. faire des screencast de mon wizard de génération de safe-enums pour le C++ (depuis vim), et de toute la chaine de gestion de projet C++ avec CMake (depuis vim). Donc bref, c'est mal barré pour un tuto sur vim. Au mieux je peux relire et corriger pour donner des bonnes pratiques.

Je connaissais pas YCM, j'utilisais clang_complete. Ça a l'air d'être le même genre, mais YCM semble avoir un support pour Rust et ça, ça m'intéresse ;D.

Edit : Ah bah non, c'était Ruby, pas Rust x).

+0 -0

Ça a l'air awesome YCM, il faut absolument que je test dès que j'ai un peu de temps à passer sur ma config Vim.

Note: cette phrase là: "un peu de temps à passer sur ma config vim", ça me pose vraiment problème à l'usage de vim au quotidien, pas vous ?

@Nek: pas tellement, mais en même temps ça fait 2 ans que j'ai pris le parti ultra-fort de limiter ma conf au minimum vital.

En fait, dans mon contexte, je suis tout le temps sur plusieurs machines à la fois à travers ssh, jamais les mêmes, souvent réinstallées, etc. Du coup, j'ai la flemme de me trimballer mon vimrc et mn .vim sur toutes les machines que je touche, donc je me suis décidé à changer mes usages et me limiter à très très peu de plugins.

Sur mon poste principal (où je dev le plus) je n'utilise en fait que ctags, TagList, NerdTree et OmniComplete. Tout le reste, c'est presque uniquement la conf par défaut et ça me suffit pour C, C++, Perl, Python et markdown (parce que latex j'ai arrêté aussi. J'impose pandoc à tout le monde, rien à battre : c'est pas eux qui les tapent les documents :D).

Du coup j'utilise vim de façon très spartiate mais l'habitude aidant, je ne ressens pas le besoin de plus.

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte