SBCL k plibonigita terminalo

2019-06-19T20:21:01-0600

Nun, kiam retrorigardis mi la pasintajn tempojn, nur unu bedaŭro rimarkeble brilas supre la aliaj— ke iutempe, ĉefe mi uzis CLISP‘on. Fakte, mi rifuzis uzi sbcl'on vigle ĸ perforte, malgraŭ la bonsencaj krioj de miaj amikoj! Nun akordus mi, entute, ke CLISP estas polvkovrita, neuzinda fekaĵo. Se oni skribas Lispajn programojn, si bezonas sbcl'on.

Sed, mia rifuzado ne estis entute sensenca! Mi havis iometan da sperto, kiu malpurigis la aspekton de sbcl, laŭ miaj okuloj.

Kiam oni uzas la terminalon, kiuj estas la plej utilaj, plej uzataj, plej bonvenigaj ebloj de la konko?

Unue, funkcia kaj forta linioregado. Se oni ne povus uzi CTRL-b, (eble vi-klavsistemo), CTRL-w, aŭ eĉ la direktklavoj por movi trans vortoj, la uzado tuj geniĝas. Subite, la uzanto ekricevis kontraŭfrapojn el la komputilo, kaj sentas sin neregema— la komputilo ŝajnas esti la reĝo. »Kial,« voĉas kriegaĉoj de la uzantoj, »mi ne povas movi?! Mi devas faru novan linion entute pro unu tajperaro?!« Jenaj plendoj ofte antaŭas la detruo de ekranoj.
Sed kun forta linioregado, la sistemo, laŭ la uzanto, aspektas plie malfacilrompa— eraroj estas bonvenata, kaj ri plirapide spertiĝas pri la sistemo k konko mem.

Due estas TAB-finigsistemo. Ĝi ne estas grava, je la sama alto de la lasta, sed kvankam grava. Ofte, novaj uzantoj ne vere scias ĉion fareblan per novaj sistemoj, aŭ programoj. Do, ili simple tajpas literon kaj tuj »TAB«— kaj montriĝas kelkajn eblojn de la sistemo. Estas komune, ankaŭ, ke novanoj forgesas plenajn nomojn, kun nur du aŭ tri literoj memorata. Kun la »TAB« sistemo, tio sufiĉas, kaj ne ĉagrenas la ruĝvagna novano. Iutempe, poste kelkaj semajnoj, la ruĝvagnulo ne plu novas— ili spertiĝas. La utilo de la TAB-finigsistemo kreskas kun ri. Nun, ĝi ne estas esplorilo, sed rapidilo. Kun ĝi, taskoj plirapidegiĝas— kaj la alto de plirapidiĝo nur pliiĝas kun pli da tempo.

Ambaŭ ebloj estas, hodiaŭ, inkluzivita je ĉiuj konkoj, kaj ankaŭ multaj reagaj (enirokaptigaj) programoj— ksh, bash, zsh, fish, kaj mysql, s-nail, python*, ktp. Ili estas la bazo de ebleco, ke ĉiuj programoj devas skribi! Sed, bedaŭrinde, ne ĉiuj programoj vere skribas tiajn…

Kaj tiel revenas ni al sbcl. Ĝia »REPL« entute estas fiasko. Laŭ iu ajn, ĝi ĝenas kvazaŭ la plej dika dorno, kaj plie por komencantoj! Ĝi mankas ambaŭ— ne ekzistas linioregado (krom »BACKSPACE«), kaj ne utilas »TAB«! Se vi ne scias la entutĝustajn ordojn de literoj, vi tuj estas perdita.

Pro tioj teruregaj problemaĉoj, mi uzis sbcl unufoje, vidis ĉi tion—


$  ▶ sbcl
This is SBCL 1.4.8.openbsd, an implementation of ANSI Common Lisp.
More information about SBCL is available at .

SBCL is free software, provided as is, with absolutely no warranty.
It is mostly in the public domain; some portions are provided under
BSD-style licenses.  See the CREDITS and COPYING files in the
distribution for more information.
* (ql:qu^[[D^[[D^[[A^[[C

— kaj respondante kuris degne al CLISP.

CLISP havas multegon da ĝenigaj problemoj kaj strangaĵoj, sed ĝi ne malakordis la plej gravajn leĝojn de enirokaptigaj programoj. Ĝi ne subtenas »HTTPS«, sed ĝia linioregadebleco fortegas. Grandan kvanton da quicklisp programoj ne funkcias per ĝi (facile), sed ĝia TAB-finigsistemo bonutilegas. Eble ĝi estas forlasita, sed ĝi ankoraŭ enhavas, kaj ĉiam enhavos, amenoreon de la plej brilanta programista Lumo.

$  ▶ clisp
  i i i i i i i       ooooo    o        ooooooo   ooooo   ooooo
  I I I I I I I      8     8   8           8     8     o  8    8
  I  \ `+' /  I      8         8           8     8        8    8
   \  `-+-'  /       8         8           8      ooooo   8oooo
    `-__|__-'        8         8           8           8  8
        |            8     o   8           8     o     8  8
  ------+------       ooooo    8oooooo  ooo8ooo   ooooo   8

Welcome to GNU CLISP 2.49 (2010-07-07) 

Copyright (c) Bruno Haible, Michael Stoll 1992, 1993
Copyright (c) Bruno Haible, Marcus Daniels 1994-1997
Copyright (c) Bruno Haible, Pierpaolo Bernardi, Sam Steingold 1998
Copyright (c) Bruno Haible, Sam Steingold 1999-2000
Copyright (c) Sam Steingold, Bruno Haible 2001-2010

Type :h and hit Enter for context help.

;; Loading file /home/jaidyn/.clisprc ...
;;  Loading file /home/jaidyn/quicklisp/setup.lisp ...
;;  Loaded file /home/jaidyn/quicklisp/setup.lisp
;; Loaded file /home/jaidyn/.clisprc
[1]>

Per unu frazo, ĝi estas plikomforta por komencantoj pro ĝia pliklara klavregeco, kiun mankas sbcl.

Sed, mi ne volas simple plori pro la truoj de sbcl— mi volas instrui, kiel oni povas salti trans la breĉtruoj kun simpla grimpmasto.

Per la simpla pakaĵo linedit, poviĝis mi elmigri al sbcl komforte. Ĝi akireblas el quicklisp.

Se ne havas vi quicklisp, simple aliru la ĉefretpaĝon, elŝuti quicklisp.lisp, kaj rulu (load "quicklisp.lisp"), (quicklisp:install), k (quicklisp:add-to-init-file).

Per quicklisp, tajpu (ql:quickload :linedit) pro akiri linedit— nun, rulu (linedit:install-repl :wrap-current t :eof-quits t)!

Jen la nova aspekto de la REPL:

(:LINEDIT)
* (linedit:install-repl :wrap-current t :eof-quits t)

T
Linedit version 0.17.6, smart mode, ESC-h for help.
* ;; jen TAB-plenigo!
  (ql:
ql:*quickload-prompt*           ql:client-version
ql:*proxy-url*                  ql:local-projects-searcher

… [kaj tiel plu] …

(Tajpis mi »TAB« je la unua »ql:«)

Aĥ, ve, belege! Nun sbcl vere uzindas. :)


Tio estas la fino de ĝia plifunkciiĝo— sed, se vi estas iomete kiel mi, vi volus ŝanĝi la prompton (antaŭkomandtekston), pro ĝi plibele aspektus. ;P

Se tion deziras vi, ekzistas malsimpla (kaj… stultega) vojo irebla. Vi povas fari novan kopiion ($ cp ~/quicklisp/dist/quicklisp/software/linedit ~/quicklisp/local-projects/) de la projekto, kaj redakti ĝin permane.

Eble ekzistas plisence metodo, sed tio ne estas konata.

Redaktu la doserio »ports/sbcl.lisp«, kaj je linio 61a, ŝanĝi la prompt al io ajn dezirota. Bonan laboron, bonan ŝancon! ^-^

Jen mia prompto (mi pavemas, kompreneble, jajaja):

Bildo de ekrano, kun montrata prompto de SBCL.


Comments / Komentoj

No comments yet / Neniu komento jam

Komentu per via ✦federuja✦ konto! Respondu:
Comment with your ✦fediverse✦ account! Reply to:

https://jam.xwx.moe/notice/AcL5ELthJmhqKvqh5k