{"id":19157512,"url":"https://github.com/kristofer/ziti","last_synced_at":"2025-07-24T11:05:24.910Z","repository":{"id":94664165,"uuid":"160684163","full_name":"kristofer/ziti","owner":"kristofer","description":"ziti is a very, very small Emacs clone in Go (golang.org), based on kilo.c","archived":false,"fork":false,"pushed_at":"2022-11-03T12:01:57.000Z","size":101,"stargazers_count":8,"open_issues_count":2,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-05-07T08:35:44.189Z","etag":null,"topics":["emacs","golang","microemacs","small"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kristofer.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-12-06T14:11:39.000Z","updated_at":"2023-11-22T07:45:49.000Z","dependencies_parsed_at":"2023-04-13T04:32:58.843Z","dependency_job_id":null,"html_url":"https://github.com/kristofer/ziti","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/kristofer/ziti","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kristofer%2Fziti","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kristofer%2Fziti/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kristofer%2Fziti/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kristofer%2Fziti/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kristofer","download_url":"https://codeload.github.com/kristofer/ziti/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kristofer%2Fziti/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262302745,"owners_count":23290313,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["emacs","golang","microemacs","small"],"created_at":"2024-11-09T08:41:14.202Z","updated_at":"2025-06-27T17:36:51.924Z","avatar_url":"https://github.com/kristofer.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Ziti\n\n\nZiti is a small terminal/screen text editor in less than 2K lines of Go code. It uses Go's rune (unicode) machinery. Has multiple buffers. But still single window. hope this makes it into the vault  \n\n### Usage: ziti `\u003cfilename\u003e`\n\nTo build: clone repo into gopath;\n ```\n  $ cd cmd\n  $ go get -d ./...\n  $ go build -o ziti\n ```\n\n Copy to someplace in your PATH\n\nbe sure you have https://godoc.org/github.com/nsf/termbox-go\nso, you may need to `go get github.com/nsf/termbox-go`\n\n### Key Commands:\n\n#### Movement\n* CTRL-Y: HELP\n* Use ArrowKeys to move Cursor around.\n* Home, End, and PageUp \u0026 PageDown should work\n* CTRL-A: Move to beginning of current line\n* CTRL-E: Move to end of current line\n* on mac keyboards:\n  * FN+ArrowUp: PageUp (screen full)\n  * FN+ArrowDown: PageDown (screen full)\n\n#### File/Buffer \n* CTRL-S: Save the file\n* CTRL-Q: Quit the editor\n* CTRL-F: Find string in file \n\t(ESC to exit search mode, arrows to navigate to next/prev find)\n* CTRL-N: Next Buffer\n* CTRL-B: List all the buffers\n* CTRL-O: (control oh) Open File into new buffer\n* CTRL-W: kill buffer\n\n#### Cut/Copy/Paste \u0026 Deletion\n* CTRL-Space: Set Mark\n* CTRL-X: Cut region from Mark to Cursor into paste buffer\n* CTRL-C: Copy region from Mark to Cursor into paste buffer\n* CTRL-V: Paste copied/cut region into file at Cursor\n_Once you've set the Mark, as you move the cursor,\nyou should be getting underlined text showing the current\nselection/region._\n* Delete: to delete a rune backward\n* CTRL-K: killtoEndOfLine (once) removeLine (twice)\n\n\nSetting the cursor with a mouse click should work. (and so,\nit should work to set the selection. but hey, you MUST SetMark\nfor a selection to start... sorry, it's not a real mouse based editor.)\n    \n### Implementation Notes\nZiti was based on Kilo, a project by Salvatore Sanfilippo \u003cantirez at gmail dot com\u003e at  https://github.com/antirez/kilo.\n\nIt's a very simple editor, with kinda-\"Mac-Emacs\"-like key bindings. It uses `go get github.com/nsf/termbox-go\" for simple termio junk.\n\nThe central data structure is an array of lines (type erow struct). Each line in the file has a struct, which contains an array of rune. (If you're not familiar with Go's _runes_, they are Go's unicode code points (or characters))\n\nMultiple buffers, but no window splits. Two _mini modes_,  one for the search modal operations, and\none for opening files.\n\nNotice the goroutine attached to events coming from termbox-go, that is pretty cool. Yet another real reason that Go routines are handy.\n\n_Ziti was written in Go by K Younger and is released\nunder the BSD 2 clause license._\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkristofer%2Fziti","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkristofer%2Fziti","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkristofer%2Fziti/lists"}