Килуа-это небольшой, расширяемый редактор текстового текста Lua.

Первоначально проект был основан на минимальном редакторе килограмма, первоначально написанного @antirez, и представлен здесь в своем блоге, но теперь не разделяет код с этим проектом, просто происхождение.
Килуа был написан Стивом Кемпом и показывает много обновлений и дополнений по сравнению с оригинальным проектом:
Mx function() .lua-lpeg . Запуск kilua работает, как и следовало ожидать:
$ kilua [options] [file1] [file2] ... [fileN]
После запуска клавиши стрел переместят вас, а основные ключи, которые нужно узнать, - это:
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.
Следующие варианты командной строки распознаются и поняты:
--config file--dump-config--eval--syntax-path--versionУстановка должна быть прямой, чтобы создать запуск кода:
make
После построения вы можете запустить бинар в портативном виде, например, так:
./kilua --syntax-path ./syntax [options] [file1] [file2] .. [fileN]
Использование --syntax-path необходимо для загрузки файлов синтаксиса, но вы можете удалить опцию, если вы скопируете содержимое каталога ./syntax/ на любом из них:
/etc/kilua/syntax/~/.kilua/syntax/Если вы не указаете местоположение библиотек, зажигающих синтаксис, или вы не установите их, то у вас будет нулевая поддержка синтаксиса.
Это является следствием размещения кода синтаксиса зажигания во внешних библиотеках: если вы не можете загрузить эти библиотеки, то функциональность не будет доступна.
По умолчанию мы строим с LUA 5.2, но если вы редактируете src/Makefile вы также сможете успешно построить с LUA 5.1.
При запуске. Следующие файлы конфигурации читаются, если присутствуют:
~/.kilua/init.lua ../.kilua/$hostname.lua .*Messages* чтобы увидеть, что было найдено, если таковые имеются. Если ни один файл не читается, то будет выполнена встроенная копия kilua.lua , которая была создана во время сборки, будет выполнена, что гарантирует, что минимальная функциональность присутствует. (т. Е. Если вы загружаете файлы конфигурации Zero, то не будет никакой настройки связей клавиш, так что вы не можете ни перемещаться, ни редактировать!)
Предполагается, что вы отредактируете предоставленный файл запуска, чтобы изменить привязки в соответствии с вашими потребностями, добавить функциональность через поставленные примитивы LUA, а затем копировать в ~/.kilua/init.lua (возможно, расширяя это с файлом для каждого дома).
Без каких -либо изменений вы получите функциональный редактор, который следует за моими конкретными предпочтениями.
Пользовательские запросы, реализующие полезную функциональность, будут получены с благодарностью, даже если только для добавления синтаксического освещения для дополнительных языков.
В будущем может быть реализовано больше обратных вызовов, которые являются функциями, которые вызовы C-яд в различных точках.
Прямо сейчас существуют следующие обратные вызовы и вызываются через C-Core:
get_status_bar()on_complete(str)on_idle()on_key(key)on_loaded(filename)on_save(filename)on_saved(filename) kilua позволяет открывать несколько файлов, используя буферы. Если kilua будет запущен без каких -либо параметров имени файла, будет два буфера:
*Messages*Ctrl-x Ctrl-s или Mx save("name") , чтобы сохранить его. В противном случае будет один буфер для каждого файла, названного в командной строке, а также буфер *Messages* . (Вы можете убить буфер *Messages* если хотите, но это удобно иметь вокруг.)
Ключевые связки по умолчанию для работы с буферами:
| Действие | Связывание |
|---|---|
| Создайте новый буфер. | Ctrl-x c |
| Убейте текущий буфер. | Ctrl-x k |
| Убейте текущий буфер, насильно. | Ctrl-x K |
| Выберите следующий буфер. | Ctrl-x n или M-right |
| Выберите предыдущий буфер. | Ctrl-x p или M-left |
| Выберите буфер через меню. | Ctrl-x b или Ctrl-x B |
Стоит отметить, что вы можете легко динамически создавать буферы через LUA, например, следующая функция может быть вызвана Mx uptime() и делает то, что вы ожидаете:
*uptime* ./usr/bin/uptime в буфер.Образец времени безотказной работы:
-- 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
Вы можете записать свою позицию (то есть «Марк») в именованном ключе, а затем прыгнуть к ней, как в vi .
Чтобы записать текущую позицию, используйте Mm и нажмите клавишу, которую вы хотите использовать. Чтобы вернуться к нему, используйте Mb XX , где XX был выбранным вами ключом. (Marks записывает буфер, а также текущую позицию курсора.)
Статус-бар, показанный в качестве предпоследней линии на дисплее, содержит имя текущего файла/буфера, а также положение курсора и т. Д.
Содержимое статуса генерируется через LUA, поэтому его легко изменить. Дисплей по умолчанию показывает:
"${buffer}/${buffers} - ${file} ${mode} ${modified} #BLANK# Col:${x} Row:${y} [${point}] ${time}"
Значения внутри " ${...} " расширяются через замены, и следующие предоставляются по умолчанию:
| Имя | Значение |
|---|---|
${buffers} | Подсчет открытых буферов. |
${buffer} | Количество текущего буфера. |
${date} | Текущая дата. |
${file} | Имя файла/буфера. |
${mode} | Режим синтаксиса, используемый, если таковой имеется. |
${modified} | Строка, которая сообщает, изменяется ли буфер. |
${point} | Персонаж под точкой. |
${time} | Текущее время. |
${words} | Подсчет слов в буфере. |
${x} | X-координат курсора. |
${y} | Y-координата курсора. |
Занятия по производству, добавляющие больше вариантов здесь было бы наиболее приветствующимся.
Синтаксическое выделение обрабатывается через библиотеку lua-lpeg , и поэтому, если это не установлено, он не будет доступен.
Каждый буфер имеет соответствующий режим синтаксиса, который представляет собой строку, такой как «C», «Markdown» или «lua». Файл конфигурации по умолчанию устанавливает режим на основе суффикса файла, который вы редактируете.
Например, если вы хотите изменить режим интерактивно на LUA, то запустите:
M-x syntax("lua")
Реализация синтаксического выделения требует загрузки библиотеки. Например, синтаксическое выделение LUA требует, чтобы библиотека lua.lua загружается - синтаксические режимы ищут в этих местах:
/etc/kilua/syntax~/.kilua/syntax--syntax-path .Реализация довольно проста:
update_colours позволит установить цвет каждого отдельного символа в буфере. Чтобы избежать задержек при вставке текста, рендеринг обновляется в фоновом режиме с помощью обратного вызова on_idle() . Эта функция делает очевидную вещь:
text() .update_colours() . В качестве конкретного примера, если буфер содержит строку «Стив Кемп», тогда должен содержать вызов update_colours :
`RED RED RED RED RED WHITE GREEN GREEN GREEN GREEN`
Это приведет к тому, что «Стив» будет отображаться в красном, а «Кемп» - зеленым.
В настоящее время мы включаем синтаксис-подсветку для:
Makefile s.Проверки, добавляющие больше синтаксических режимов, было бы наиболее приветствующимся.
https://news.ycombinator.com/item?id=12137698
Нет очевидных планов на будущее, но отчеты об ошибках могут быть составлены, если у вас есть функция, которую нужно предложить (или сообщить об ошибке)!
Одна вещь, которая может быть полезной,-это разделитель, чтобы просмотреть два файла рядом или один над другим. Это еще не запланировано, но я думаю, что это можно сделать достаточно чисто.
Стив - https://steve.kemp.fi/