Kilua es un editor de texto pequeño, extensible y con motor.

El proyecto se basó originalmente en el editor mínimo de Kilo escrito originalmente por @antirez, y se presentó aquí en su blog, pero ahora no comparte código con ese proyecto, solo ascendencia.
Kilua fue escrito por Steve Kemp y presenta muchas actualizaciones y adiciones en comparación con el proyecto original:
Mx function() .lua-lpeg . El lanzamiento kilua funciona como era de esperar:
$ kilua [options] [file1] [file2] ... [fileN]
Una vez lanzado, las teclas de flecha lo moverán, y las principales tallas de teclas para aprender son:
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.
Las siguientes opciones de línea de comandos se reconocen y entienden:
--config file--dump-config--eval--syntax-path--versionLa instalación debe ser directa para construir el código ejecutado:
make
Una vez construido, puede ejecutar el binario de manera portátil, como así:
./kilua --syntax-path ./syntax [options] [file1] [file2] .. [fileN]
Se requiere el uso de --syntax-path para cargar los archivos de sintaxis, pero puede eliminar la opción si copia el contenido del directorio ./syntax/ ya sea:
/etc/kilua/syntax/~/.kilua/syntax/Si no especifica la ubicación de las bibliotecas de alta iluminación de sintaxis, o no las instala, entonces tendrá un soporte de iluminación de sintaxis cero.
Esto es una consecuencia de colocar el código de iluminación de sintaxis en bibliotecas externas: si no puede cargar esas bibliotecas, la funcionalidad no estará disponible.
Construimos con Lua 5.2 de forma predeterminada, pero si edita src/Makefile también debería poder construir con éxito con Lua 5.1.
Al inicio se leen los siguientes archivos de configuración si están presentes:
~/.kilua/init.lua ../.kilua/$hostname.lua .*Messages* para ver cuál se encontró, si corresponde. Si ninguno de los archivos se lee, se ejecutará la copia integrada de kilua.lua , que se generó en el tiempo de compilación, lo que asegura que la funcionalidad mínima esté presente. (es decir, si carga los archivos de configuración cero, entonces no habrá ninguna configuración de muelles de teclas para que no pueda navegar ni editar!)
Se supone que editará el archivo de inicio suministrado, para cambiar los enlaces para satisfacer sus necesidades, agregar funcionalidad a través de las primitivas LUA suministradas y luego copiar en ~/.kilua/init.lua (tal vez extendiendo eso con un archivo por host también).
Sin ningún cambio, obtendrá un editor funcional que sigue mis preferencias particulares.
Las requisitos de extracción de la implementación de la funcionalidad útil se recibirán con agradecimiento, incluso si solo para agregar la iluminación de sintaxis para idiomas adicionales.
En el futuro se pueden implementar más devoluciones de llamada, que son funciones que las llamadas en el núcleo en varios puntos.
En este momento existen las siguientes devoluciones de llamada y se invocan a través del n-core:
get_status_bar()on_complete(str)on_idle()on_key(key)on_loaded(filename)on_save(filename)on_saved(filename) kilua permite que se abran múltiples archivos, mediante el uso de buffers. Si kilua se lanza sin ningún parámetros del nombre de archivo, habrá dos buffers:
*Messages*Ctrl-x Ctrl-s , o Mx save("name") , para guardarlo. De lo contrario, habrá un búfer para cada archivo nombrado en la línea de comandos, así como el búfer *Messages* . (Puedes matar el búfer *Messages* si lo deseas, pero es algo útil tener alrededor).
Los enlaces de claves predeterminados para trabajar con buffers son:
| Acción | Vinculante |
|---|---|
| Crea un nuevo búfer. | Ctrl-x c |
| Mata el búfer actual. | Ctrl-x k |
| Mata el búfer actual, por la fuerza. | Ctrl-x K |
| Seleccione el siguiente búfer. | Ctrl-x n o M-right |
| Seleccione el búfer anterior. | Ctrl-x p o M-left |
| Elija un búfer, a través del menú. | Ctrl-x b o Ctrl-x B |
Vale la pena señalar que puede crear fácilmente buffers dinámicamente, a través de LUA, por ejemplo, la siguiente función puede llamarse por Mx uptime() , y hace lo que espera:
*uptime* ./usr/bin/uptime en el búfer.Muestra de tiempo de actividad:
-- 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
Puede registrar su posición (es decir, "marca") en una clave con nombre, y luego saltar a ella, al igual que en vi .
Para registrar la posición actual, use Mm y presione la tecla que desea usar. Para volver a él, use Mb XX donde XX fue la clave que eligió. (Las marcas registran el búfer, así como la posición del cursor actual).
La barra de estado, que se muestra como la penúltima línea en la pantalla, contiene el nombre del archivo/búfer actual, así como la posición del cursor, etc.
El contenido de la barra de estado se genera a través de LUA, por lo que es fácil de modificar. La pantalla predeterminada muestra:
"${buffer}/${buffers} - ${file} ${mode} ${modified} #BLANK# Col:${x} Row:${y} [${point}] ${time}"
Los valores dentro de " ${...} " se expanden mediante sustituciones y los siguientes se proporcionan de manera predeterminada:
| Nombre | Significado |
|---|---|
${buffers} | El conteo de amortiguadores abiertos. |
${buffer} | El número del búfer actual. |
${date} | La fecha actual. |
${file} | El nombre del archivo/búfer. |
${mode} | El modo de iluminación de sintaxis en uso, si lo hay. |
${modified} | Una cadena que informa si el búfer se modifica. |
${point} | El personaje bajo el punto. |
${time} | La hora actual. |
${words} | El recuento de palabras en el búfer. |
${x} | La coordenada X del cursor. |
${y} | La coordenada y del cursor. |
Pull-Requests Agregar más opciones aquí sería bienvenido.
La resaltura de sintaxis se maneja a través de la biblioteca lua-lpeg , por lo que si eso no está instalado no estará disponible.
Cada búfer tiene un modo de iluminación de sintaxis asociado, que es una cadena como "C", "Markdown" o "Lua". El archivo de configuración predeterminado establece el modo en función del sufijo del archivo que está editando.
Si desea cambiar el modo de manera interactiva a LUA, por ejemplo, ejecute:
M-x syntax("lua")
La implementación del resaltado de sintaxis requiere la carga de una biblioteca. Por ejemplo, el resaltado de sintaxis de Lua requiere que la biblioteca lua.lua esté cargada: los modos de sintaxis se buscan en estos lugares:
/etc/kilua/syntax~/.kilua/syntax--syntax-path .La implementación es bastante simple:
update_colours permitirá que se establezca el color de cada carácter en el búfer. Para evitar retrasos al insertar texto, la representación se actualiza en segundo plano, a través de la devolución de llamada on_idle() . Esta función hace lo obvio:
text() .update_colours() . Como ejemplo concreto, si el búfer contiene la cadena "Steve Kemp", la llamada a update_colours debe contener:
`RED RED RED RED RED WHITE GREEN GREEN GREEN GREEN`
Eso resultaría en que "Steve" se exhibiera en rojo y "kemp" en verde.
Actualmente incluimos la iluminación de sintaxis para:
Makefile s.Pull-Requests Agregar más modos de sintaxis sería bienvenido.
https://news.ycombinator.com/item?id=12137698
¡No hay planes futuros obvios, pero se pueden hacer informes de errores si tiene una función que sugerir (o error para informar)!
Una cosa que podría ser útil es una pantalla dividida, para ver dos archivos uno al lado del otro o uno encima del otro. Esto aún no está planeado, pero creo que podría hacerse razonablemente limpiamente.
Steve - https://steve.kemp.fi/