Dalam: string tanpa jeda baris *
Izinkan pengguna untuk mengedit dan mengirimkan baris
Keluar: string yang dimodifikasi (opsional dengan linebreak trailing)
Editor baris minimal harus mengizinkan pengguna untuk:
gerakkan kursor yang terlihat ke kiri dan ke kanan
masukkan dan / atau timpa karakter pada posisi kursor
hapus karakter pada posisi kursor
kirimkan string baru, yaitu berhenti mengedit, menyebabkan string yang dimodifikasi dikembalikan / dicetak / ditampilkan / disimpan ... (tanpa teks lain)
Dihormati, tetapi tidak wajib:
penjelasan kode Anda.
tautan ke situs pengujian online yang dapat menunjukkan program / fungsi Anda
gambar animasi yang menunjukkan penggunaan (TIO, misalnya, tidak memungkinkan interaktivitas)
catatan:
binding kunci hanya saran
GUI atau gaya visual tidak diperlukan
Contohnya
Berikut ini, kursor diilustrasikan dengan _
.
Dalam: Just some text
Izinkan pengguna untuk mengedit:
Just some text_
Pengguna menekan ←(tombol panah kiri) sembilan kali
Just ̲some text
Pengguna menekan Delempat kali
Just ̲ text
Pengguna menekan Pengguna menekan Out:any
Just any_text
Enter
Just any text
Dalam: Remove me
Izinkan pengguna untuk mengedit:
Remove me_
Pengguna menekan Backspacesembilan kali
_
Pengguna menekan Out: (string kosong)Enter
* Untuk mencegah solusi editor sepele, ini harus diberikan melalui metode input yang berbeda dari perintah pengeditan, atau harus dipisahkan dari mereka dengan baris baru atau serupa.
Jawaban:
APL (Dyalog) , 5 byte
Ini adalah tradfn, jadi untuk menggunakannya, lakukan
Dan kemudian menyebutnya dengan menggunakan
a
, setelah itu Anda memasok string awal, dan kemudian Anda dapat mengedit string.sumber
JavaScript (ES6),
1514 byteSaya tidak mengerti mengapa ini mendapatkan begitu banyak upvotes!
Menyimpan satu byte berkat saran Adm bahwa saya menampilkan input asli di
prompt
.Cobalah
sumber
""
dengan0
atau bahkans
(sehingga pengguna masih dapat melihat teks asli saat mengedit - fitur yang rapi).Bash 4.x, 25 karakter
Contoh dijalankan:
(Baris 2 di atas adalah pengeditan interaktif, baris 3 adalah output dari teks yang dihasilkan.)
sumber
-bash: read: -i: invalid option
,?man
mengatakan hanyaers
diizinkan bendera.-ei
-i
diperkenalkan di Bash 4.0 (dirilis pada Februari 2009) - “-i teks Gunakan TEXT sebagai teks awal untuk Readline”.cat
hanya menunggu aliran masuk, yang shell tidak akan menyediakan fungsionalitas pengeditan. Setidaknya tidak secara default.Bash + Vi / Vim, 14 byte
vi
aliasvim
di macOS, saya tidak tahu tentang OS lain.sumber
:wq!
atau:x
, jadi saya rasa begitu. OP agak tidak jelas tentang apa yang memenuhi syarat itu.HTML + JavaScript (ES6),
77 6664 byteHTML
JavaScript
Disimpan 10 byte berkat Jörg Hülsermann dan 2 byte terima kasih kepada Luke.
sumber
oninput
sebagai gantinya.oninput
kebakaran saatEnter
ditekane.which==13?alert(t.value):0
->e.which-13||alert(t.value)
menyimpan dua byte.Python 2 ,
275200 byteBukan pemenang, tapi ini dia:
Penjelasan:
Ini bekerja dengan membalik input (dengan
[::-1]
), dan mengecualikan dan memasukkan karakter dalam input terbalik sehingga kursor tidak harus bergerak. Membalikkannya lagi saat mencetak.Pemakaian:
Tombol [Tab] untuk menggerakkan Kanan
[Ctrl + C] untuk menggerakkan Kiri
[Backspace] untuk menghapus
[Kembali] untuk menyelesaikan pengeditan
Kunci lainnya, akan dimasukkan ke dalam teks
Contoh:
Menggunakan contoh OP
Di:
Just some text
Just some text>
Just some> text
Pengguna menekan Ctrl+Clima kaliJust > text
Pengguna menekan Backspaceempat kaliJust any> text
Pengguna menekan Pengguna menekan Out:anyJust any> text
EnterJust any text
Versi editor sebaris:
Jika Anda ingin teksnya diedit sebaris, tambahkan
,'\r',
di akhirprint
pernyataan:sumber
-
dan+
untuk melakukannya, tetapi editor tidak akan dapat menerima karakter itu\t
dan\v
?C + NCURSES, 573 byte
Uji
Just some text
.a
kemudiann
kemudiany
.Enter
untuk mengakhiri.Terperinci
sumber
KEY_*
dengan bilangan bulat masing-masing untuk menghemat beberapa byte?VBScript,
2340 bytesumber
C #, 53 byte
Di mana
s
string untuk memodifikasi dan output adalah nilai baru.SendKeys.SendWait : Mengirim kunci yang diberikan ke aplikasi yang aktif, dan kemudian menunggu pesan untuk diproses.
atau 74 byte jika kita tidak berada dalam konteks Formulir Windows:
sumber
Ruby,
9192284 byteIni menciptakan kait input pra Readline yang menyisipkan teks dan kemudian menampilkan kembali. Setelah ini, irb akan kacau jadi pastikan untuk menjalankan ini dari file. Jalankan sebagai lambda, dibutuhkan string input sebagai argumen dan mengembalikan string output.
Ini menggunakan pustaka Readline untuk melakukan pengeditan baris. Jawaban saya sebelumnya hanya mengizinkan spasi mundur.
Ini sangat, sangat jelas.
Sunting: Saya telah dimintai penjelasan. Ini setara denganputs(gets)
.gets
memasukkan string dengan editor baris.puts
keluaran itu.sumber
r.insert_text(s).redisplay
dan hapus berikut ini;
. BTW, seperti yang saya pahami kebijakan kami, Anda harus menyebutkan bahwa kode Anda berjalanirb
, karena jika tidak, Anda akan memerlukanReadline
dalam kode Anda.PHP + HTML, 26 Bytes
Browser menambahkan secara otomatis tag penutup
$ _GET Menggunakan url seperti
http://example.com?0=input
sebagai Input Create dalam HTML<input value=input
Dan ini adalah output untuk input string
sumber
autofocus
untuk memiliki kursor di awal di dalamnya. Elemen HTML lain yang juga dapat diedit jika Anda menyetel atributcontenteditable
test></input><script>alert("Hi");//some malicious code\n</script>
Tcl, 17
Penerjemah online hanya ingin menunjukkannya, lalu saya menampilkan beberapa gambar dari shell perintah Windows:
Test case 1
Uji kasus 2
sumber
AHK , 32 byte
InputBox
menyimpan apa pun yang diketik sebagai variabels
dan memberikan prompt awal dari variabel1
yang merupakan parameter yang pertama kali dilewati.Send
mengirim penekanan tombol ke jendela saat ini. Dalam hal ini, itu akan menjadi kontens
.MsgBox
adalah pilihan tetapi, untuk bermain golf,Send
lebih pendek 2 byte.sumber
Perintah Excel VBA Immediate Window - 22 byte
sumber
inputbox(0,,"Hi")
menghemat satu byte[a1]=inputbox(0,,[a1])
atau sesuatu, jika tidak, ke mana perginyaa
? Menyimpan dalam variabel bukan metode output yang valid .ZX Spectrum BASIC, 7 byte
Sepele, termasuk untuk kelengkapan (
INPUT
danPRINT
masing-masing satu byte token).sumber
a$
?a$
dengan input keyboard;a$
akan ditulis ulang denganINPUT
kata kunci.SmileBASIC, 138 byte
Membuat fungsi
E
dengan 1 argumen dan 0 output. (Output ditampilkan di konsol)Karakter yang lolos harus menjadi simbol yang sebenarnya, tetapi mereka tidak akan muncul di sini.
Kontrol:
Memasukkan / menghapus karakter mundur sehingga sangat mengganggu untuk digunakan (tetapi harus tetap memenuhi persyaratan).
sumber
Penerjemah perintah Windows, 16 byte
Ini sangat sepele; interpreter perintah sepele adalah "editor baris".
sumber
Commodore BASIC (C64Mini, C64 / 128, VIC-20 dll ...) 179 byte BASIC tokenized
Ini harus diketik dalam mode bisnis (karakter huruf besar / kecil)
Mengizinkan pengeditan teks dasar + hapus + baris baru. Ukuran maksimum
a$
seperti semua string di Commodore BASIC adalah 255 karakter, jadi lebih dari itu akan merusak program. Saya akan menemukan cara untuk melakukan> 255 karakter jika itu perlu.sumber