世の中の開発者が最終的に自分の手で実装してみたいソフトウェアの一つにテキストエディタが挙げられるかもしれません。本日紹介する「Kilo」はそんな夢に向かって踏み出すためのきっかけになるかもしれないコンパクトなテキストエディタの実装です。
Kiroはライブラリに依存せず(cursesでさえ)、標準のVT100エスケープシーケンスだけを使って作られたシンプルなテキストエディタで、唯一のソースコードkilo.cの行数は1000行以下というコンパクトさを誇っています。
int main(int argc, char **argv) {
if (argc != 2) {
fprintf(stderr,"Usage: kilo \n");
exit(1);
}
initEditor();
editorSelectSyntaxHighlight(argv[1]);
editorOpen(argv[1]);
enableRawMode(STDIN_FILENO);
editorSetStatusMessage(
"HELP: Ctrl-S = save | Ctrl-Q = quit | Ctrl-F = find");
while(1) {
editorRefreshScreen();
editorProcessKeypress(STDIN_FILENO);
}
return 0;
}
▲kilo.cのmain関数。
目次
Kiroの使用方法
Kiloのバイナリは配布されていません。試してみるにはソースコードをcloneしてmakeする必要があります。実行ファイルがビルドできたら「./kilo ファイル名」でテキストファイルの編集を始めることができます。
git clone https://github.com/antirez/kilo.git cd kilo.git make ./kilo README.md
矢印キーでのナビゲートや文字入力のほか、以下のコマンドが実行可能です。
- CTRL-S: 保存
- CTRL-Q: 終了
- CTRL-F: 検索
残念ながら日本語を入力するとカーソル位置がずれてしまいました。とはいえ基本的なエディタの構造を学びたい方にとっては参考となりそうです。UTF-8対応のための修正を行ってみるのも興味深いかもしれません。
KiroはSalvatore Sanfilippo氏によって開発されているソフトウェアで2条項BSDライセンスが採用されています。