W: ciąg bez podziałów linii *
Zezwól użytkownikowi na edycję i przesłanie wiersza
Wyjście: zmodyfikowany ciąg (opcjonalnie z końcowym łamaniem linii)
Edytor linii musi przynajmniej pozwolić użytkownikowi na:
przesuń widoczny kursor w lewo i prawo
wstawianie i / lub zastępowanie znaków w pozycji kursora
usuń znaki w pozycji kursora
prześlij nowy ciąg, tzn. zaprzestań edycji, aby zmodyfikowany ciąg został zwrócony / wydrukowany / wyświetlony / zapisany… (bez innego tekstu)
Doceniany, ale nie wymagany:
wyjaśnienie twojego kodu.
link do strony testowej online, która może zademonstrować Twój program / funkcję
animowany obraz demonstrujący użycie (na przykład TIO nie pozwala na interaktywność)
Uwaga:
powiązania klawiszy są tylko sugestiami
GUI lub styl wizualny nie jest wymagany
Przykłady
Poniżej pokazano kursor _
.
W: Just some text
Zezwól użytkownikowi na edycję:
Just some text_
Użytkownik naciska ←(lewy klawisz strzałki) dziewięć razy
Just ̲some text
Użytkownik naciska Delcztery razy
Just ̲ text
Użytkownik naciska Użytkownik naciska :any
Just any_text
Enter
Just any text
W: Remove me
Pozwól użytkownikowi na edycję:
Remove me_
Użytkownik naciska Backspacedziewięć razy
_
Użytkownik naciska Out: (pusty ciąg)Enter
* Aby zapobiec trywialnym rozwiązaniom edytora, musi to być dostarczone za pomocą innej metody wprowadzania niż polecenia edycji, lub musi być oddzielone od nich znakiem nowej linii lub podobnym.
źródło
Odpowiedzi:
APL (Dyalog) , 5 bajtów
To jest tradfn, więc skorzystaj z niego
A następnie wywołaj go za pomocą
a
, po czym podasz ciąg początkowy, a następnie możesz edytować ciąg.źródło
JavaScript (ES6),
1514 bajtówNie rozumiem, dlaczego jest tak dużo entuzjastów!
Oszczędność bajtu dzięki Adámowi sugestii , że wyświetlam oryginalne wejście w
prompt
.Spróbuj
źródło
""
go0
lub nawets
(aby użytkownik mógł nadal zobaczyć oryginalny tekst podczas edycji - fajna funkcja).Bash 4.x, 25 znaków
Przykładowy przebieg:
(Wiersz 2 powyżej był interaktywną edycją, wiersz 3 wyjściem tekstu wynikowego.)
źródło
-bash: read: -i: invalid option
?man
mówi, żeers
dozwolone są tylko flagi.-ei
-i
został wprowadzony w wersji Bash 4.0 (wydanej w lutym 2009 r.) - „-i tekst Użyj TEKSTU jako tekstu początkowego dla Readline”.cat
po prostu czeka na strumień przychodzący, dla którego powłoka nie zapewni żadnej funkcji edycji. Przynajmniej nie domyślnie.Bash + Vi / Vim, 14 bajtów
vi
jest aliasowanyvim
na macOS, nie wiem o innych systemach operacyjnych.źródło
:wq!
lub:x
, tak myślę. OP jest nieco niejasne, co się do tego kwalifikuje.HTML + JavaScript (ES6),
77 6664 bajtówHTML
JavaScript
Zaoszczędzono 10 bajtów dzięki Jörgowi Hülsermannowi i 2 bajty dzięki Lukeowi.
źródło
oninput
zamiast tego.oninput
poEnter
naciśnięciue.which==13?alert(t.value):0
->e.which-13||alert(t.value)
zapisuje dwa bajty.Python 2 ,
275200 bajtówNie jest zwycięzcą, ale oto:
Wyjaśnienie:
Działa poprzez odwrócenie danych wejściowych (za pomocą
[::-1]
) oraz wykluczanie i wstawianie znaków w tym odwróconym danych wejściowych, aby kursor nie musiał się poruszać. Odwraca go ponownie podczas drukowania.Stosowanie:
Klawisz [Tab], aby przejść w prawo
[Ctrl + C], aby przejść w lewo
[Backspace], aby usunąć
[Return], aby zakończyć edycję
Każdy inny klawisz zostanie wstawiony do tekstu
Przykład:
Na przykładzie OP
W:
Just some text
Just some text>
Just some> text
Użytkownik naciska Ctrl+Cpięć razyJust > text
Użytkownik naciska Backspacecztery razyJust any> text
Użytkownik naciska Użytkownik naciska :anyJust any> text
EnterJust any text
Wersja edytora wbudowanego:
Jeśli chcesz, aby tekst był edytowany w wierszu, dołącz
,'\r',
na końcuprint
instrukcji:źródło
-
i+
aby to zrobić, ale redaktor nie byłaby w stanie zaakceptować te znaki następnie\t
i\v
?C + NCURSES, 573 bajtów
Test
Just some text
.a
an
następniey
.Enter
aby zakończyć.Szczegółowe
źródło
KEY_*
odpowiednimi liczbami całkowitymi, aby zaoszczędzić niektóre bajty?VBScript,
2340 bajtówźródło
C #, 53 bajty
Gdzie
s
ciąg do zmodyfikowania, a dane wyjściowe to nowa wartość.SendKeys.SendWait : Wysyła podane klucze do aktywnej aplikacji, a następnie czeka na przetworzenie wiadomości.
lub 74 bajty, jeśli nie jesteśmy w kontekście Windows Forms:
źródło
Ruby,
9192284 bajtówSpowoduje to utworzenie haka przed wprowadzeniem Readline, który wstawia tekst s, a następnie wyświetla ponownie. Po tym irb zostaje pomieszany, więc upewnij się, że uruchomiłeś to z pliku. Uruchom jako lambda, pobiera ciąg wejściowy jako argument i zwraca ciąg wyjściowy.
Wykorzystuje bibliotekę Readline do edycji linii. Moja poprzednia odpowiedź dopuszczała tylko spacje.
To jest naprawdę, bardzo oczywiste.
Edycja: Poproszono mnie o wyjaśnienie. Jest to równoważne zputs(gets)
.gets
wprowadza ciąg znaków za pomocą edytora linii.puts
wyprowadza to.źródło
r.insert_text(s).redisplay
i usuń następujące elementy;
. BTW, jak rozumiem nasze zasady, powinieneś wspomnieć, że Twój kod działairb
, ponieważ w przeciwnym razie będziesz musiał wymagaćReadline
w swoim kodzie.PHP + HTML, 26 bajtów
Przeglądarka automatycznie dodaje znacznik zamykający
$ _GET Używanie adresu URL takiego
http://example.com?0=input
jak Input Tworzy w HTML<input value=input
I to jest dane wyjściowe dla ciągu wejściowego
źródło
autofocus
aby kursor znajdował się na początku. Inne elementy HTML, które możesz edytować, jeśli ustawisz atrybutcontenteditable
test></input><script>alert("Hi");//some malicious code\n</script>
Tcl, 17
Tłumacze online są do niczego, aby to zademonstrować, a następnie prezentuję niektóre obrazy z powłoki poleceń Windows:
Przypadek testowy 1
Przypadek testowy 2
źródło
AHK , 32 bajty
InputBox
przechowuje wszystko, co jest wpisane jako zmiennas
i wyświetla monit o podanie zmiennej,1
która jest pierwszym przekazanym parametrem.Send
wysyła naciśnięcia klawiszy do bieżącego okna. W tym przypadku będzie to zawartośćs
.MsgBox
była opcją, ale dla golfaSend
jest o 2 bajty krótsza.źródło
Polecenie natychmiastowego okna Excel VBA - 22 bajty
źródło
inputbox(0,,"Hi")
zapisuje bajt[a1]=inputbox(0,,[a1])
czy coś takiego, gdzie indzieja
? Przechowywanie w zmiennej nie jest prawidłową metodą wyjściową .ZX Spectrum BASIC, 7 bajtów
Trywialne, uwzględnione dla kompletności (
INPUT
iPRINT
są jednobajtowe tokeny każdy).źródło
a$
?a$
klawiatury;a$
zostanie zastąpioneINPUT
słowem kluczowym.SmileBASIC, 138 bajtów
Tworzy funkcję
E
z 1 argumentem i 0 wyjściami. (Dane wyjściowe są wyświetlane w konsoli)Znaki ucieczki powinny być rzeczywistymi symbolami, ale nie pojawią się tutaj.
Sterownica:
Wstawianie / usuwanie znaków odbywa się wstecz, więc korzystanie z nich jest bardzo denerwujące (ale nadal powinno spełniać wymagania).
źródło
Interpreter poleceń systemu Windows, 16 bajtów
To jest bardzo trywialne; interpreter poleceń jest trywialnie „edytorem linii”.
źródło
Commodore BASIC (C64Mini, C64 / 128, VIC-20 itd ...) 179 tokenizowanych bajtów BASIC
Należy to wpisać w trybie biznesowym (wielkie / małe litery)
Umożliwia podstawową edycję tekstu + usuwanie + nowy wiersz. Maksymalny rozmiar
a$
wszystkich łańcuchów w Commodore BASIC wynosi 255 znaków, więc więcej niż to spowoduje awarię programu. Znajdę sposób na zrobienie> 255 znaków, jeśli będzie to konieczne.źródło