{"id":20654998,"url":"https://github.com/aeriavelocity/qvsed","last_synced_at":"2026-04-25T11:34:03.699Z","repository":{"id":179210951,"uuid":"663129129","full_name":"AeriaVelocity/QVSED","owner":"AeriaVelocity","description":"Qt-based Versatile Stateless Editor","archived":false,"fork":false,"pushed_at":"2023-09-30T19:09:12.000Z","size":550,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-09T22:09:51.490Z","etag":null,"topics":["gui","lightweight","pyqt","python","qt","simple","text-editor"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/qvsed/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AeriaVelocity.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-07-06T16:02:22.000Z","updated_at":"2023-09-30T19:09:44.000Z","dependencies_parsed_at":null,"dependency_job_id":"4aad9ed1-5297-44d3-8239-c4cd30a3b89d","html_url":"https://github.com/AeriaVelocity/QVSED","commit_stats":null,"previous_names":["that1m8head/qvsed","aeriavelocity/qvsed"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AeriaVelocity%2FQVSED","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AeriaVelocity%2FQVSED/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AeriaVelocity%2FQVSED/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AeriaVelocity%2FQVSED/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AeriaVelocity","download_url":"https://codeload.github.com/AeriaVelocity/QVSED/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242756869,"owners_count":20180206,"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":["gui","lightweight","pyqt","python","qt","simple","text-editor"],"created_at":"2024-11-16T18:08:06.923Z","updated_at":"2026-04-25T11:33:58.653Z","avatar_url":"https://github.com/AeriaVelocity.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# QVSED - Qt-based Versatile Stateless Editor\r\n\r\nQVSED is a stateless text editor.\r\n\r\n![QVSED screenshot, showing the help message](screenshots/qvsed-screenshot.png)\r\n\r\nQVSED is entirely stateless - once you open a file, QVSED doesn't store any file paths or any other data other than the text contents of the file you loaded.\r\nAdditionally, QVSED won't prompt you if you're about to potentially lose an unsaved file, since it doesn't know of any file metadata.\r\n\r\nQVSED follows the philosophy of ultra-minimalism, with its heavy emphasis on just editing text and nothing more.\r\nQVSED's editing style is text-based, not file-based like basically every other editor out there.\r\nText goes in, from a file, and then text later comes out, into another or perhaps the same file.\r\n\r\nQVSED works well as a simple scratchpad, but it's also quite useful for more involved editing operations, providing a seamless experience without posing prompts for potentially destructive actions.\r\nIt's not as powerful as something like Vim or even ed, but it provides a unique editing experience you won't find anywhere else. Whether or not this is a good thing is up to you.\r\n\r\nQVSED is a PyQt5 rewrite of my older project, [ASMED (Another SMol EDitor)](https://github.com/That1M8Head/ASMED), which was written using Windows Forms, and was quite obviously only for Windows.\r\n\r\nQVSED aims to replace ASMED by offering cross-platform support and the advantages of a lightweight editor without the overhead of .NET, as well as provide features that I never thought to add to ASMED because it was .NET only.\r\n\r\n## Installing\r\n\r\nQVSED [is available on PyPI](https://pypi.org/project/QVSED/). You can install it using the following command:\r\n\r\n```bash\r\npip install --upgrade qvsed\r\n```\r\n\r\nTo run QVSED, use the `qvsed` command. Feel free to make a shortcut/alias/symlink to it if you find that convenient.\r\n\r\n## License\r\n\r\nQVSED is free software, licensed under the GNU General Public License version 3 or later.\r\n\r\n## Configuration\r\n\r\nFor configuration documentation, see [CONFIG.md](CONFIG.md).\r\n\r\nFor colour scheme configuration, see [COLOURS.md](COLOURS.md) for a list of sample colour schemes.\r\n\r\n## Usage\r\n\r\nQVSED is broken up into three parts - the Action Deck, the Text Area and the Echo Area.\r\n\r\nThe Action Deck contains editing commands, the Text Area is where the text content goes, and the Echo Area is where messages will be printed.\r\n\r\nThere's also the File Picker, for whenever QVSED prompts you to open or save a file. It provides a simple text entry and a button to open your system's file picker.\r\n\r\n## Keyboard Shortcuts\r\n\r\nQVSED contains a mix of bindings from the original ASMED, Vim-style bindings and Emacs-style bindings.\r\n\r\n### Key Prefixes\r\n\r\n+ `C-` - `Ctrl` (Windows, Linux), `⌘` (macOS)\r\n+ `A-` - `Alt` (Windows, Linux), `⌥` (macOS)\r\n\r\nWhen you see `\u003cC-n\u003e`, for instance, that means pressing `Ctrl+N` on Windows/Linux, or `⌘N` on macOS.\r\n\r\nThis kind of notation was inspired by Emacs (though, QVSED uses `A-` instead of `M-` to explicitly mean \"Alt\").\r\n\r\n`Ctrl` being `⌘` is a Qt thing, not a QVSED thing, and there isn't much of a reason to change it.\r\n\r\n`Alt` being `⌥` is a Mac thing anyway, and there's not much difference in that case, even Emacs uses `⌥`.\r\n\r\n### Action Deck bindings\r\n\r\nThese bindings are evolutions of the original ASMED key bindings.\r\n\r\n+ **Clear Text** - `\u003cC-n\u003e` - Clear the Text Area. Think of it like New File.\r\n+ **Open File** - `\u003cC-f\u003e` - Launch a file picker and load the chosen file's contents into the Text Area.\r\n+ **Save File** - `\u003cC-s\u003e` - Launch a file picker and save the contents of the Text Area to the chosen file name.\r\n+ **Full Screen** - `\u003cA-f\u003e` - Toggle full screen mode.\r\n+ **Get Help** - `\u003cC-h\u003e` - Show a help message in the Text Area. This will overwrite your current work.\r\n+ **Quit QVSED**  - `\u003cA-q\u003e` - Quit QVSED on the spot with no confirmation dialog.\r\n\r\n### File Picker bindings\r\n\r\n+ **Open/Save** - `\u003cRET\u003e` - Load from/save to the specified file path.\r\n+ **Cancel** - `\u003cESC\u003e` or `\u003cA-q\u003e` - Cancel and go back to QVSED.\r\n+ **System File Picker**  - `\u003cC-d\u003e` - Launch your OS file picker.\r\n+ **Change Directory**  - `\u003cA-d\u003e` - Change the current working directory.\r\n\r\n### Motion bindings\r\n\r\nThese bindings are for the most part inspired by Vim, if not Emacs.\r\n\r\n+ `\u003cA-h\u003e` - Move left a character. Inspired by Vim's `h`.\r\n+ `\u003cA-j\u003e` - Move down a character. Inspired by Vim's `j`.\r\n+ `\u003cA-k\u003e` - Move up a character. Inspired by Vim's `k`.\r\n+ `\u003cA-l\u003e` - Move right a character. Inspired by Vim's `l`.\r\n\r\n+ `\u003cA-u\u003e` - Move up half a page. Inspired by Vim's `\u003cC-u\u003e`.\r\n+ `\u003cA-d\u003e` - Move up half a page. Inspired by Vim's `\u003cC-d\u003e`.\r\n\r\n+ `\u003cA-w\u003e` - Move forward a word. Inspired by Vim's `w`.\r\n+ `\u003cA-b\u003e` - Move back a word. Inspired by Vim's `b`.\r\n\r\n+ `\u003cA-a\u003e` - Move to the start of the line. Inspired by Emacs' `\u003cC-a\u003e`.\r\n+ `\u003cA-e\u003e` - Move to the end of the line. Inspired by Emacs' `\u003cC-e\u003e`.\r\n\r\n## Action Deck\r\n\r\n![Action Deck](screenshots/action-deck-screenshot.png)\r\n\r\nThe Action Deck, positioned on the left side of the QVSED window, containing commands to clear the Text Area, open or save a file, display this help text, toggle in and out of full screen mode or quit QVSED.\r\n\r\nThe Action Deck is on the left rather than on the top like a traditional menu bar, so that the buttons can be bigger while still providing enough screen real estate for the Text Area.\r\n\r\n## Text Area\r\n\r\n![Text Area](screenshots/text-area-screenshot.png)\r\n\r\nThe Text Area is where the actual text editing takes place.\r\n\r\nYou can enter and delete text, scroll down and up, cut, copy, paste, all that standard Notepad stuff.\r\n\r\nQVSED is intentionally simplistic, and so there's not much to the Text Area.\r\n\r\n## Echo Area\r\n\r\n![Echo Area](screenshots/echo-area-screenshot.png)\r\n\r\nThe Echo Area is the small bar at the bottom of the QVSED window that prints information.\r\n\r\nFor example, when a file is opened, it prints its file name. If a config file was not found, it'll generate one and give you the path.\r\n\r\nQVSED inherited the name from Emacs. Well, less \"inherited\" and more \"stolen from.\"\r\n\r\n## File Picker\r\n\r\n![File Picker](screenshots/file-picker-screenshot.png)\r\n\r\nThe File Picker is displayed when you use the **Open File** or **Save File** Action Deck commands.\r\n\r\nIt consists of the following elements:\r\n\r\n+ A label instructing you to enter the file path, relative or absolute.\r\n+ Another label that shows the current working directory.\r\n+ A text box where you can enter the file path.\r\n+ Three buttons:\r\n  + **System File Picker** opens your operating system's file picker, so you can select the file you want without having to type in its path, just like in pre-1.5.0 QVSED versions. This can also be accessed with the `\u003cC-d\u003e` key binding.\r\n  + **Change Directory** changes the current working directory to the one specified in the path box. This can also be accessed with the `\u003cA-d\u003e` key binding.\r\n  + **Open** or **Save** (depending on the Action Deck command you used) opens or saves the file at the specified path.\r\n  + **Cancel** closes the dialog without saving any changes.\r\n\r\nThe File Picker makes it simple to load the file you want, simply by typing in its path.\r\n\r\nIf this is too oversimplified for you, or you just need to use your system file picker for whatever reason, you can always use the System File Picker option.\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faeriavelocity%2Fqvsed","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faeriavelocity%2Fqvsed","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faeriavelocity%2Fqvsed/lists"}