In: une chaîne sans saut de ligne *
Autoriser l'utilisateur à modifier et soumettre la ligne
Out: saut de la chaîne modifiée (éventuellement avec un saut de ligne de fin)
L'éditeur de ligne doit au minimum permettre à l'utilisateur de:
déplacer un curseur visible de gauche à droite
insérer et / ou écraser des caractères à la position du curseur
supprimer les caractères à la position du curseur
soumettre la nouvelle chaîne, c.-à-d. cesser de modifier la chaîne modifiée doit être retournée / imprimée / affichée / enregistrée… (sans autre texte)
Apprécié, mais pas obligatoire:
explication de votre code.
lien vers un site de test en ligne qui peut démontrer votre programme / fonction
une image animée démontrant l'utilisation (TIO, par exemple, ne permet pas l'interactivité)
Remarque:
les raccourcis clavier ne sont que des suggestions
Une interface graphique ou un style visuel n'est pas requis
Exemples
Dans ce qui suit, le curseur est illustré par _
.
In: Just some text
Autoriser l'utilisateur à modifier: L'
Just some text_
utilisateur appuie ←neuf fois sur la touche (flèche gauche) L'
Just ̲some text
utilisateur appuie Delquatre fois L'
Just ̲ text
utilisateur appuie L' utilisateur appuie sur Out:any
Just any_text
Enter
Just any text
In: Remove me
Autoriser l'utilisateur à modifier: L'
Remove me_
utilisateur appuie Backspaceneuf fois L'
_
utilisateur appuie sur Out: (chaîne vide)Enter
* Pour éviter des solutions d'édition triviales, celles-ci doivent soit être fournies via une méthode d'entrée différente de celle des commandes d'édition, soit être séparées d'elles par une nouvelle ligne ou similaire.
Réponses:
APL (Dyalog) , 5 octets
Ceci est un tradfn, donc pour l'utiliser, faites
Et puis appelez-le en utilisant
a
, après quoi vous fournissez la chaîne de départ, puis vous pouvez modifier la chaîne.la source
JavaScript (ES6),
1514 octetsJe ne comprends pas pourquoi cela fait autant de votes positifs!
Enregistrement d 'un octet grâce à la suggestion d' Adám d 'afficher l' entrée originale dans le
prompt
.Essayez-le
la source
""
par0
ou mêmes
(afin que l'utilisateur puisse toujours voir le texte d'origine lors de l'édition - une fonctionnalité intéressante).Bash 4.x, 25 caractères
Exemple d'exécution:
(La ligne 2 ci-dessus était l'édition interactive, la ligne 3 la sortie du texte résultant.)
la source
-bash: read: -i: invalid option
,?man
dit que seulsers
les drapeaux sont autorisés.-ei
-i
a été introduit dans Bash 4.0 (publié en février 2009) - «-i text Utilisez TEXT comme texte initial pour Readline».cat
n'attend que le flux entrant, pour lequel le shell ne fournira aucune fonctionnalité d'édition. Du moins pas par défaut.Bash + Vi / Vim, 14 octets
vi
est aliasévim
sur macOS, je ne connais pas les autres OS.la source
:wq!
ou:x
, donc je pense que oui. OP n'est pas clair sur ce qui peut être qualifié de cela.HTML + JavaScript (ES6),
77 6664 octetsHTML
Javascript
10 octets enregistrés grâce à Jörg Hülsermann et 2 octets grâce à Luke.
la source
oninput
place.oninput
déclenche quandEnter
on appuie dessuse.which==13?alert(t.value):0
->e.which-13||alert(t.value)
enregistre deux octets.Python 2 ,
275200 octetsPas un gagnant, mais le voici:
Explication:
Il fonctionne en inversant l'entrée (avec
[::-1]
), et en excluant et en insérant des caractères dans cette entrée inversée afin que le curseur n'ait pas à se déplacer. Inverse à nouveau lors de l'impression.Usage:
Touche [Tab] pour se déplacer vers la droite
[Ctrl + C] pour déplacer vers la gauche
[Retour arrière] pour effacer
[Retour] pour terminer l'édition
Toute autre touche sera insérée dans le texte
Exemple:
Utilisation de l'exemple d'OP
In: l'
Just some text
Just some text>
Just some> text
utilisateur appuie Ctrl+Ccinq fois l'Just > text
utilisateur appuie Backspacequatre fois l'Just any> text
utilisateur appuie l' utilisateur appuie sur Out:anyJust any> text
EnterJust any text
Version de l'éditeur en ligne:
Si vous souhaitez que le texte soit édité en ligne, ajoutez
,'\r',
à la fin de l'print
instruction:la source
-
et+
à mesure, mais l'éditeur ne serait pas en mesure d'accepter ces personnages à ce moment\t
et\v
?C + NCURSES, 573 octets
Tester
Just some text
.a
ensuiten
alorsy
.Enter
pour terminer.Détaillé
la source
KEY_*
par les entiers respectifs pour enregistrer quelques octets?VBScript,
2340 octetsla source
C #, 53 octets
Où
s
est une chaîne à modifier et la sortie est la nouvelle valeur.SendKeys.SendWait : envoie les clés données à l'application active, puis attend que les messages soient traités.
ou 74 octets si nous ne sommes pas dans un contexte Windows Forms:
la source
Rubis,
9192284 octetsCela crée un crochet de pré-entrée Readline qui insère le texte s puis réaffiche. Après cela, irb est gâché alors assurez-vous de l'exécuter à partir d'un fichier. Exécuté en tant que lambda, il prend la chaîne d'entrée comme argument et renvoie la chaîne de sortie.
Cela utilise la bibliothèque Readline pour effectuer la modification de ligne. Ma réponse précédente ne permettait que les backspaces.
C'est vraiment, vraiment explicite.
Edit: on m'a demandé une explication. C'est équivalent àputs(gets)
.gets
saisit une chaîne avec un éditeur de ligne.puts
le produit.la source
r.insert_text(s).redisplay
et supprimez les éléments suivants;
. BTW, si je comprends bien notre politique, vous devez mentionner que votre code s'exécuteirb
, car sinon vous auriez besoin de l'exigerReadline
dans votre code.PHP + HTML, 26 octets
Le navigateur ajoute automatiquement la balise de fermeture
$ _GET Utiliser une URL comme
http://example.com?0=input
entrée crée dans un HTML<input value=input
Et ceci est la sortie pour l'entrée de chaîne
la source
autofocus
pour avoir le curseur au début. D'autres éléments HTML que vous pouvez également modifier si vous définissez l'attributcontenteditable
test></input><script>alert("Hi");//some malicious code\n</script>
Tcl, 17
Les interprètes en ligne craignent de le démontrer, puis je présente quelques images à partir d'un shell de commande Windows:
Cas de test 1
Cas de test 2
la source
AHK , 32 octets
InputBox
stocke tout ce qui est tapé comme variables
et donne une invite de démarrage de la variable1
qui est le premier paramètre passé.Send
envoie des frappes à la fenêtre actuelle. Dans ce cas, ce sera le contenu des
.MsgBox
était une option mais, pour le golf,Send
est de 2 octets plus court.la source
Commande de fenêtre immédiate Excel VBA - 22 octets
la source
inputbox(0,,"Hi")
sauve un octet[a1]=inputbox(0,,[a1])
ou quelque chose, sinon, où vaa
-t-il? Le stockage dans une variable n'est pas une méthode de sortie valide .ZX Spectrum BASIC, 7 octets
Trivial, inclus pour être complet (
INPUT
etPRINT
sont des jetons d'un octet chacun).la source
a$
?a$
par saisie au clavier;a$
sera remplacé par leINPUT
mot clé.SmileBASIC, 138 octets
Crée une fonction
E
avec 1 argument et 0 sorties. (La sortie est affichée dans la console)Les caractères échappés devraient être les symboles réels, mais ils n'apparaîtraient pas ici.
Contrôles:
L'insertion / suppression de caractères est à l'envers, donc c'est très ennuyeux à utiliser (mais devrait toujours répondre aux exigences).
la source
Interpréteur de commandes Windows, 16 octets
C'est très trivial; l'interpréteur de commandes est trivialement un "éditeur de ligne".
la source
Commodore BASIC (C64Mini, C64 / 128, VIC-20 etc ...) 179 octets BASIC tokenisés
Cela doit être tapé en mode entreprise (caractères majuscules / minuscules)
Permet l'édition de texte de base + suppression + nouvelle ligne. La taille maximale de
a$
comme toutes les chaînes dans Commodore BASIC est de 255 caractères, donc plus que cela plantera le programme. Je trouverai un moyen de faire> 255 caractères si cela est nécessaire.la source