Kilua é um editor de texto pequeno, extensível e movido a Lua.

O projeto foi originalmente baseado no editor mínimo de Kilo, originalmente escrito por @antirez, e apresentado aqui em seu blog, mas agora não compartilha código com esse projeto, apenas ancestralidade.
Kilua foi escrito por Steve Kemp e apresenta muitas atualizações e adições em comparação com o projeto original:
Mx function() .lua-lpeg . Lançar kilua funciona como seria de esperar:
$ kilua [options] [file1] [file2] ... [fileN]
Depois de lançado, as teclas de seta o moverão, e as principais peças de chave para aprender são:
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.
As seguintes opções de linha de comando são reconhecidas e entendidas:
--config file--dump-config--eval--syntax-path--versionA instalação deve ser direta, para construir o código executado:
make
Uma vez construído, você pode executar o binário de maneira portátil, assim:
./kilua --syntax-path ./syntax [options] [file1] [file2] .. [fileN]
O uso de --syntax-path é necessário para carregar os arquivos de sintaxe, mas você pode remover a opção se copiar o conteúdo do diretório ./syntax/ para:
/etc/kilua/syntax/~/.kilua/syntax/Se você não especificar a localização das bibliotecas de iluminação de sintaxe ou não as instalar, terá suporte zero de iluminação de sintaxe.
Isso é uma conseqüência de colocar o código de iluminação de sintaxe em bibliotecas externas: se você não pode carregar essas bibliotecas, a funcionalidade não estará disponível.
Construímos com o Lua 5.2 por padrão, mas se você editar src/Makefile também poderá construir com sucesso com o Lua 5.1.
Na inicialização, os seguintes arquivos de configuração são lidos se presente:
~/.kilua/init.lua ../.kilua/$hostname.lua .*Messages* para ver qual foi encontrado, se houver. Se nenhum arquivo for lido, a cópia incorporada do kilua.lua , que foi gerada no momento da construção, será executada, o que garante que a funcionalidade mínima esteja presente. (ou seja, se você carregar arquivos de configuração zero, não haverá nenhuma configuração de pedidos de chave para que você não possa navegar nem editar!)
Supõe-se que você edite o arquivo de inicialização fornecido, para alterar as ligações para atender às suas necessidades, adicionar funcionalidade através das primitivas Lua fornecidas e copiar em ~/.kilua/init.lua (talvez estendendo-o com um arquivo por host também).
Sem nenhuma alteração, você receberá um editor funcional que segue minhas preferências específicas.
As solicitações de tração que implementam funcionalidades úteis serão recebidas com agradecimentos, mesmo que apenas para adicionar a Syntax-Highlighting para idiomas adicionais.
No futuro, mais retornos de chamada podem ser implementados, que são funções que as chamadas C-Core em vários pontos.
No momento, os seguintes retornos de chamada existem e são invocados via Core C:
get_status_bar()on_complete(str)on_idle()on_key(key)on_loaded(filename)on_save(filename)on_saved(filename) kilua permite que vários arquivos sejam abertos, através do uso de buffers. Se kilua for lançado sem parâmetros de nome do arquivo, haverá dois buffers:
*Messages*Ctrl-x Ctrl-s , ou Mx save("name") , para salvá-lo. Caso contrário, haverá um buffer para cada arquivo nomeado na linha de comando, bem como no buffer *Messages* . (Você pode matar o buffer *Messages* se desejar, mas é uma coisa útil de se ter por perto.)
As chaves padrão para trabalhar com buffers são:
| Ação | Vinculativo |
|---|---|
| Crie um novo buffer. | Ctrl-x c |
| Mate o buffer atual. | Ctrl-x k |
| Mate o buffer atual, à força. | Ctrl-x K |
| Selecione o próximo buffer. | Ctrl-x n ou M-right |
| Selecione o buffer anterior. | Ctrl-x p ou M-left |
| Escolha um buffer, via menu. | Ctrl-x b ou Ctrl-x B |
Vale a pena notar que você pode criar facilmente buffers dinamicamente, via Lua, por exemplo, a seguinte função pode ser chamada pelo Mx uptime() e faz o que você espera:
*uptime* ./usr/bin/uptime no buffer.Amostra de tempo de atividade:
-- 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
Você pode gravar sua posição (ou seja, "Mark") em uma chave nomeada e, posteriormente, pular para ela, assim como em vi .
Para gravar a posição atual, use Mm e pressione a tecla que você deseja usar. Para retornar a ele, use Mb XX onde xx foi a chave que você escolheu. (Marcas registram o buffer, bem como a posição atual do cursor.)
A barra de status, mostrada como a penúltima linha na tela, contém o nome do arquivo/buffer atual, bem como a posição do cursor, etc.
O conteúdo da barra de status é gerado via Lua, por isso é simples de modificar. A tela padrão mostra:
"${buffer}/${buffers} - ${file} ${mode} ${modified} #BLANK# Col:${x} Row:${y} [${point}] ${time}"
Os valores dentro de " ${...} " são expandidos por meio de substituições e os seguintes são fornecidos por padrão:
| Nome | Significado |
|---|---|
${buffers} | A contagem de buffers abertos. |
${buffer} | O número do buffer atual. |
${date} | A data atual. |
${file} | O nome do arquivo/buffer. |
${mode} | O modo de iluminação de sintaxe em uso, se houver. |
${modified} | Uma string que relata se o buffer é modificado. |
${point} | O personagem sob o ponto. |
${time} | O horário atual. |
${words} | A contagem de palavras no buffer. |
${x} | A coordenada x do cursor. |
${y} | A coordenada y do cursor. |
Pull-pedidos adicionando mais opções aqui seriam bem-vindos.
O destaque da sintaxe é tratado pela biblioteca lua-lpeg e, portanto, se isso não estiver instalado, ele não estará disponível.
Cada buffer possui um modo de iluminação de sintaxe associada, que é uma string como "C", "Markdown" ou "Lua". O arquivo de configuração padrão define o modo com base no sufixo do arquivo que você está editando.
Se você deseja alterar o modo interativamente para Lua, por exemplo, execute:
M-x syntax("lua")
A implementação do destaque da sintaxe requer o carregamento de uma biblioteca. Por exemplo, o destaque da sintaxe de Lua exige que a biblioteca lua.lua seja carregada - os modos de sintaxe são procurados nesses locais:
/etc/kilua/syntax~/.kilua/syntax--syntax-path -line.A implementação é bem simples:
update_colours permitirá que a cor de cada caractere no buffer seja definida. Para evitar atrasos ao inserir texto, a renderização é atualizada em segundo plano, através do retorno de chamada on_idle() . Esta função faz a coisa óbvia:
text() .update_colours() . Como exemplo concreto, se o buffer contiver a string "Steve Kemp", a chamada para update_colours deve conter:
`RED RED RED RED RED WHITE GREEN GREEN GREEN GREEN`
Isso resultaria na exibição de "Steve" em vermelho e "Kemp" em verde.
Atualmente, incluímos iluminação de sintaxe para:
Makefile s.As solicitações de tração adicionando mais modos de sintaxe seriam muito bem-vindos.
https://news.ycombinator.com/item?id=12137698
Não há planos futuros óbvios, mas os relatórios de bugs podem ser feitos se você tiver um recurso a sugerir (ou bug a relatar)!
Uma coisa que pode ser útil é uma divisão, para visualizar dois arquivos lado a lado ou um acima do outro. Isso ainda não está planejado, mas acho que poderia ser feito razoavelmente de maneira limpa.
Steve - https://steve.kemp.fi/