Kilua ist ein kleiner, erweiterbarer und von Lua betriebener Texteditor.

Das Projekt basierte ursprünglich auf dem minimalen Kilo -Editor, der ursprünglich von @antirez geschrieben wurde, und wurde hier in seinem Blog vorgestellt, teilt aber jetzt keinen Code mit diesem Projekt, nur mit Ancestry.
Kilua wurde von Steve Kemp geschrieben und verfügt über viele Updates und Ergänzungen im Vergleich zum Originalprojekt:
Mx function() aufrufen.lua-lpeg -Bibliothek. Starten von kilua funktioniert, wie Sie es erwarten würden:
$ kilua [options] [file1] [file2] ... [fileN]
Sobald die Pfeiltasten gestartet wurden, bewegen Sie sich herum und die wichtigsten Schlüsselbindungen sind:
Ctrl-x Ctrl-o Open an existing file.
Ctrl-x Ctrl-f Open an existing file.
Ctrl-x Ctrl-s Save the current file.
Ctrl-x Ctrl-c Quit.
Ctrl-x c Create a new buffer
Ctrl-x n Move to the next buffer.
Ctrl-x p Move to the previous buffer.
Ctrl-x b Select buffer from a list
M-x Evaluate lua at the prompt.
Ctrl-s Regular expression search.
Die folgenden Befehlszeilenoptionen werden erkannt und verstanden:
--config file--dump-config--eval--syntax-path--versionDie Installation sollte einfach sein, um den Codelauf zu erstellen:
make
Einmal gebaut, können Sie die Binärdehnung auf tragbare Weise laufen, wie so:
./kilua --syntax-path ./syntax [options] [file1] [file2] .. [fileN]
Die Verwendung von --syntax-path ist erforderlich, um die Syntaxdateien zu laden. Sie können jedoch die Option entfernen, wenn Sie den Inhalt des Verzeichnisses ./syntax/ in beide lassen:
/etc/kilua/syntax/~/.kilua/syntax/Wenn Sie den Standort der Syntax-Highlighting-Bibliotheken nicht angeben oder sie nicht installieren, haben Sie keine Unterstützung für die Syntax-Highlighting.
Dies ist eine Folge der Platzierung des Syntax-Highlighting-Code in externen Bibliotheken: Wenn Sie diese Bibliotheken nicht laden können, ist die Funktionalität nicht verfügbar.
Wir bauen standardmäßig mit Lua 5.2 auf. Wenn Sie jedoch src/Makefile bearbeiten, sollten Sie auch in der Lage sein, erfolgreich mit LUA 5.1 zu bauen.
Beim Start werden die folgenden Konfigurationsdaten gelesen, wenn vorhanden ist:
~/.kilua/init.lua ../.kilua/$hostname.lua .*Messages* Puffer verwenden, um zu sehen, welche falls vorhanden ist. Wenn keine der beiden Dateien gelesen wird, wird die eingebettete Kopie von kilua.lua , die zum Zeitpunkt der Erstellung erzeugt wurde, ausgeführt, was sicherstellt, dass die Mindestfunktionalität vorhanden ist. (dh wenn Sie Null -Konfigurationsdateien laden, gibt es keine Schlüsselbindungen ein, sodass Sie weder navigieren noch bearbeiten können!)
Es wird angenommen, dass Sie die angegebene Startdatei bearbeiten, die Bindungen an Ihre Bedürfnisse geändert, Funktionen über die gelieferten Lua-Primitiven hinzufügen und dann in ~/.kilua/init.lua kopieren (vielleicht erweitern Sie diese mit einer Host-Datei).
Ohne Änderungen erhalten Sie einen funktionalen Editor, der meinen besonderen Vorlieben folgt.
Pull-Requests, die nützliche Funktionen implementieren, werden mit Dank empfangen, auch wenn sie nur Syntax-Highlighting für zusätzliche Sprachen hinzufügen.
In Zukunft könnten weitere Rückrufe implementiert werden, was Funktionen sind, die die C-Core-Anrufe an verschiedenen Stellen aufrufen.
Im Moment existieren die folgenden Rückrufe und werden über den C-Core aufgerufen:
get_status_bar()on_complete(str)on_idle()on_key(key)on_loaded(filename)on_save(filename)on_saved(filename) kilua können mehrere Dateien über die Verwendung von Puffern geöffnet werden. Wenn kilua ohne Dateiname -Parameter gestartet wird, gibt es zwei Puffer:
*Messages*Ctrl-x Ctrl-s oder Mx save("name") , um ihn zu speichern. Andernfalls gibt es einen Puffer für jede Datei, die auf der Befehlszeile genannt wird, sowie den *Messages* Puffer. (Sie können den *Messages* Puffer abtöten, wenn Sie möchten, aber es ist eine praktische Sache, die Sie haben müssen.)
Die Standard-Schlüsselbindungen für die Arbeit mit Puffer sind:
| Aktion | Bindung |
|---|---|
| Erstellen Sie einen neuen Puffer. | Ctrl-x c |
| Töte den aktuellen Puffer. | Ctrl-x k |
| Töte den aktuellen Puffer gewaltsam. | Ctrl-x K |
| Wählen Sie den nächsten Puffer aus. | Ctrl-x n oder M-right |
| Wählen Sie den vorherigen Puffer aus. | Ctrl-x p oder M-left |
| Wählen Sie einen Puffer über das Menü. | Ctrl-x b oder Ctrl-x B |
Es ist erwähnenswert, dass Sie über LUA leicht Puffer dynamisch erstellen können, z Mx uptime()
*uptime* aus./usr/bin/uptime in den Puffer ein.Laufzeitprobe:
-- Run `uptime`, and show the result in a dedicated buffer.
function uptime()
local result = buffer( "*uptime*" )
if ( result == -1 ) then create_buffer("*uptime*") end
-- move to end of file.
eof()
insert(cmd_output("uptime"))
end
Sie können Ihre Position (dh "mark") in einem benannten Schlüssel aufzeichnen und später wie in vi dazu springen.
Um die aktuelle Position aufzunehmen, verwenden Sie Mm und drücken Sie die Taste, die Sie verwenden möchten. Um dorthin zurückzukehren, verwenden Sie Mb XX , wobei XX der Schlüssel war, den Sie ausgewählt haben. (Markiert markiert den Puffer sowie die aktuelle Cursorposition.)
Die als vorletzte Zeile in der Anzeige angezeigte Statusleiste enthält den Namen der aktuellen Datei/der aktuellen Puffer sowie der Cursorposition usw.
Der Inhalt der Statusleiste wird über Lua generiert, sodass es einfach zu ändern ist. Die Standardanzeige zeigt:
"${buffer}/${buffers} - ${file} ${mode} ${modified} #BLANK# Col:${x} Row:${y} [${point}] ${time}"
Die Werte in " ${...} " werden über Substitutionen erweitert und die folgenden standardmäßig sind:
| Name | Bedeutung |
|---|---|
${buffers} | Die Anzahl offener Puffer. |
${buffer} | Die Anzahl des aktuellen Puffers. |
${date} | Das aktuelle Datum. |
${file} | Der Name der Datei/des Puffers. |
${mode} | Der verwendete Syntax-Highlighting-Modus, falls vorhanden. |
${modified} | Eine Zeichenfolge, die berichtet, ob der Puffer geändert wird. |
${point} | Der Charakter unter dem Punkt. |
${time} | Die aktuelle Zeit. |
${words} | Die Anzahl der Wörter im Puffer. |
${x} | Die X-Koordinate des Cursors. |
${y} | Der y-Koordinat des Cursors. |
Pull-Requests, die hier mehr Optionen hinzufügen, wären sehr willkommen.
Die Syntax-Hervorhebung wird über die lua-lpeg -Bibliothek behandelt. Wenn dies nicht installiert ist, ist es nicht verfügbar.
Jeder Puffer verfügt über einen zugehörigen Syntax-Highlighting-Modus, der eine Zeichenfolge wie "C", "Markdown" oder "Lua" ist. Die Standardkonfigurationsdatei legt den Modus basierend auf dem Suffix der von Ihnen bearbeitenden Datei fest.
Wenn Sie beispielsweise den Modus interaktiv in Lua ändern möchten, dann laufen Sie:
M-x syntax("lua")
Die Implementierung der Syntax -Hervorhebung erfordert das Laden einer Bibliothek. Zum Beispiel erfordert die Syntax -Hervorhebung von LuA, dass die Bibliothek lua.lua geladen ist - die Syntaxmodi werden an diesen Stellen gesucht:
/etc/kilua/syntax~/.kilua/syntax--syntax-path .Die Implementierung ist ziemlich einfach:
update_colours kann die Farbe jedes einzelnen Zeichens im Puffer festgelegt werden. Um Verzögerungen beim Einfügen von Text zu vermeiden, wird das Rendering im Hintergrund über den Rückruf von on_idle() aktualisiert. Diese Funktion macht die offensichtliche Sache:
text() ab.update_colours() . Als konkretes Beispiel, wenn der Puffer die Zeichenfolge "Steve Kemp" enthält, sollte der Anruf zu update_colours enthalten:
`RED RED RED RED RED WHITE GREEN GREEN GREEN GREEN`
Das würde dazu führen, dass "Steve" rot und "Kemp" in Grün angezeigt wird.
Derzeit berücksichtigen wir Syntax-Highlighting für:
Makefile s.Pull-Requests, die weitere Syntaxmodi hinzufügen, wären sehr willkommen.
https://news.ycombinator.com/item?id=12137698
Es gibt keine offensichtlichen Zukunftspläne, aber Fehlerberichte können erstellt werden, wenn Sie eine Funktion vorschlagen (oder Fehler zu berichten haben)!
Eine Sache, die nützlich sein könnte, ist ein geteiltes Display, zwei Dateien nebeneinander oder übereinander anzuzeigen. Dies ist noch nicht geplant, aber ich denke, es könnte einigermaßen sauber gemacht werden.
Steve - https://steve.kemp.fi/