7
votes

Y a-t-il une bibliothèque .Net similaire à gnu readline?

Je envisage d'écrire une demande de console en C # et je tiens à intégrer l'historique, l'achèvement et l'édition de ligne de commande quelque chose comme GNU Readline (mais pas nécessairement aussi vaste que cela!)

Y a-t-il une bibliothèque existante pour .NET qui fournit ce type de fonctionnalité? Je suppose qu'une option serait d'utiliser Interop Services pour appeler GNU Readline. Mais y a-t-il une option native?


4 commentaires

Avez-vous considéré un logiciel enfichable PowerShell? C'est l'option la plus «natif» dans le monde .Net, je peux penser en ce moment.


Peut-être que c'est juste moi, mais lorsque vous commencez à réfléchir à l'amélioration de l'expérience utilisateur avec une interface utilisateur de cette façon, vous devez vraiment commencer à examiner les formulaires Windows.


Pas sûr de suivre? Vous suggérez-vous d'écrire mon application en tant que logiciel enfichable PowerShell? Cela ne vous permettra pas de me donner la modification de ligne de commande standard de PowerShell (c.-à-d. Caractéristiques de base de la console Windows Plus l'achèvement de l'onglet Fancy)? Je suis après plus que cela (recherche d'histoire, suppression de mot, choses comme ça).


Nobugz - une application d'interface graphique va bien, mais je veux toujours autoriser l'édition d'interaction et de ligne de commande de ligne de commande d'utilisateur. Considérez PowerShell vs PowerShell Ise. Personnellement, je déteste les installations d'édition de ligne de commande ISE, je préfère la version de la console, mais je voudrais un peu plus (ce que je ne peux pas ajouter parce que la console IO n'est pas personnalisable).


4 Réponses :


2
votes

La seule chose que je connaisse est mono-readline .

Il fournit une interface .NET à la bibliothèque GNU Readline - c'est un peu crue cependant, seule la version 0.0.1, et je ne l'ai jamais vue que de courir sur le mono-runtime.

Vous devez faire attention à une licence aussi ... AFaik tout ce qui relie les bibliothèques GNU Readline doit être publiée sous la GPL.


0 commentaires


9
votes

Vous voudrez peut-être vérifier la caisse de miguel de icoa's getline.cs ( Le lien dans le poteau de blog est cassé, le code peut maintenant être trouvé Ici ). Selon les caractéristiques de LireLine, vous avez réellement besoin, cela pourrait suffire à vos besoins.

La bonne chose est que tout soit contenu dans un fichier unique (par conséquent gisline.cs) et MIT X11 sous licence sous licence. P>

L'utilisation est assez facile. P>

Si vous Voulez-vous essayer, il suffit de télécharger le fichier et compilez-le: p> xxx pré>

the #Ifdef démo code> montre également la partie de base: p >

var le = new LineEditor("whatever");
string s;

while ((s = le.Edit("my prompt> ", "")) != null)
{
    // User input from command line / prompt now in "s".
}


2 commentaires

J'ai essayé la bibliothèque GetLine du projet CSHARPREPL, mais a un support limité pour l'achèvement de l'onglet. En outre, la fonctionnalité d'achèvement elle-même est assez difficile à mettre en œuvre. Peut-être que mes limites ...


Mais le lien n'est pas cassé o.o



1
votes

Une ancienne question, mais toujours pertinente puisqu'elle apparaît dans les résultats de la recherche Google. Il est logique de mentionner ce qui suit:

https://github.com/tonerdo/readline est une bonne option de nos jours. Citant son README:

LireLine est une ligne de lecture GNU comme une bibliothèque intégrée à Pure C #. Il peut servir de remplacement de remplacement de la console console.readline () et apporte une partie de la bonté terminale que vous obtenez à partir de coquilles UNIX, telles que la navigation de l'historique des commandes et l'achèvement automatique de l'onglet.

Il s'agit de plate-forme croisée et de fonctionne n'importe où .NET est pris en charge, ciblant NetStandard1.3 signifie qu'il peut être utilisé avec le noyau .NET ainsi que le cadre complet .NET.

LICENCE

Le projet est autorisé sous la licence MIT


0 commentaires