{"id":31789246,"url":"https://github.com/fonsecapeter/peter-notes","last_synced_at":"2026-04-15T20:03:31.569Z","repository":{"id":56887875,"uuid":"95306888","full_name":"fonsecapeter/peter-notes","owner":"fonsecapeter","description":"Manage notes from the console with your favorite editor","archived":false,"fork":false,"pushed_at":"2017-09-28T16:07:30.000Z","size":92,"stargazers_count":0,"open_issues_count":3,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-08T01:53:07.502Z","etag":null,"topics":["command-line","command-line-tool","console","notes","ruby","terminal"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fonsecapeter.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-06-24T15:43:34.000Z","updated_at":"2021-02-23T22:07:48.000Z","dependencies_parsed_at":"2022-08-21T00:50:45.169Z","dependency_job_id":null,"html_url":"https://github.com/fonsecapeter/peter-notes","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/fonsecapeter/peter-notes","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fonsecapeter%2Fpeter-notes","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fonsecapeter%2Fpeter-notes/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fonsecapeter%2Fpeter-notes/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fonsecapeter%2Fpeter-notes/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fonsecapeter","download_url":"https://codeload.github.com/fonsecapeter/peter-notes/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fonsecapeter%2Fpeter-notes/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31857625,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-15T15:24:51.572Z","status":"ssl_error","status_checked_at":"2026-04-15T15:24:39.138Z","response_time":63,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["command-line","command-line-tool","console","notes","ruby","terminal"],"created_at":"2025-10-10T14:50:12.226Z","updated_at":"2026-04-15T20:03:31.551Z","avatar_url":"https://github.com/fonsecapeter.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg src=\"media/peter-notes_384.png\" width=\"120\" alt=\"peter-notes icon\"/\u003e\n\nPeter Notes\n======================\n[![Gem Version](https://badge.fury.io/rb/peter-notes.svg)](https://badge.fury.io/rb/peter-notes)\n[![Build Status](https://travis-ci.org/fonsecapeter/peter-notes.svg?branch=master)](https://travis-ci.org/fonsecapeter/peter-notes)\n\n**Manage your notes from the console.**\n\nIf you're like me, you spend most of your computing time in a terminal, you have a text-editor set up just to your liking, and you wish you could use it for everything. Naturally, when it comes time to ditch your paper note-pad, you refuse to to use the more popular gui-driven apps and want to find a way to use your editor instead.\n\nBut when you start looking for a terminal-based notes framework (or plugin for your editor) you're blinded by crazy features and unwilling to learn a new tool. You've also already started keeping your notes in some text files and don't want to have to start over.\n\nAnyway, I went through the same thing and made this this lightweight tool (originally from some aliases in my bashrc) to do what I wanted it to do, which isn't a lot. But, like ruby, it has a nice interface, and it'll stay out of the way. That means you can choose where you keep your notes, how you organize them, how you track them (if you do), and what editor you use to write them. So if you already have your own notes, you can just point `peter-notes` at them and start using worlds simplest (and coolest) notes-manager.\n\n## Installation\n\n    $ gem install peter-notes\n\n## Usage\n\n`notes`. Yeah.\n\nBut you can do more!\n\nLets assume you have the following notes:\n\n    ~/Notes\n    |-- projects\n    |   |-- python\n    |   |   +-- jarbs.txt\n    |   +-- ruby\n    |       +-- peter_notes.txt\n    +-- other\n        +-- motorcycle.txt\n\nMost of the time you just want to open them. To do that, type `notes`. You can specify your text editor and where your notes are in `~/peter-notes.yaml` (see the preferences section below). This will basically `cd` into your notes and open them all with `YOUR-EDITOR ./`. Some editors don't super work when you open a directory, but I use vim with [NerdTree](https://github.com/scrooloose/nerdtree) and I'm sure other editors have similar plugins.\n\nIf you want to open a specific note, you can pass in a `file-glob` to specify which one. If you think a file glob is what happens when you spill coffee on your computer, just check this out [this description](http://tldp.org/LDP/abs/html/globbingref.html) (hint, you use it in bash a lot, like, when you `ls *.rb`).\n\nLets say you want to open `other/motorcycle.txt`. You could run `notes \"other/motorcycle.txt\"`, but that's kind of lame, so you could also type `notes \"motorcycle\"`, or even `notes \"moto*\"`. If you're feeling extra crazy, you could get away with `m*` here. Basically if you pass a glob in, `peter-notes` will just take the first match from `--find` (see below) and open that. If you wanted to open all notes under `projects/` you could also use this same idea and run `notes \"projects\"`.\n\nThe close observer will have noticed that I'm leaving out `.txt` in most of my commands. That's not  because `peter-notes` requires `.txt` files. In fact, you can use markdown or whatever kind of files you want, but `peter-notes` will totally ignore file extensions unless you provide one. If you plan on keeping most of your notes in some file-extension other than `.txt`, just add a line to your preferences file (below), but it really only effects `--new`.\n\nThat's like what 90% of what you'll ever need and no crazy macros or flags to memorize. Not bad right? Well not all flags are bad, in fact, you also get some super-helpful optional ones for the other 10%:\n\n  - `-f`, `--find FILE-GLOB`:\n  **Seach for notes that match the specified `FILE-GLOB`**. This one's running [find](http://linuxcommand.org/man_pages/find1.html) -- `find YOUR-NOTES-DIR -name FILE-GLOB`. It's a little more than that though, this will be fuzzy in that you can add some path info to your glob. For example, if you ran `notes --find \"projects/*\"` (or `notes --find \"pro/*\"`), you'd get back both `projects/python/jarbs.txt` and `projects/ruby/peter_notes.txt`. So it's better than just find. A little.\n\n  - `-l`, `--list [PATH]`:\n  **List all notes or, if a `PATH` is specified, list notes within the specified path**. Bet you thought this was running `ls -R`, well it's actually running [tree](http://linuxcommand.org/man_pages/tree1.html) because it's much cooler -- `tree YOUR-NOTES-DIR/PATH`.\n\n  - `-n`, `--new PATH`:\n  **Create a new note at the specified `PATH`, making any directories in-between, and open it**. If you don't give a file-type extension, `peter-notes` will use the `extension` value from your preferences (below), ex: `notes --new path/to/my_note` will make `~/Notes/path/to/my_note.txt` (with default preferences). If you do specify a file-type extension, you'll create a note with that extension -- they don't all have to be the same! :astonished:\n\n  - `-s`, `--search REGEX`:\n  **Search within notes for text matching the specified `REGEX`**, ex: `notes --search \".*TODO.*\"`. This isn't magic, it's just [grep](http://linuxcommand.org/man_pages/grep1.html). Specifically, it's running `grep -r YOUR-NOTES-DIR -e REGEX`.\n\nOh yeah, make sure your terminal has `grep`, `find`, and `tree`. It should, but depends on how crazy your 'gear' is. Also, this is a cli tool, don't try to import it into some ruby source code.\n\n## Preferences\n\nPreferences are saved in `~/.peter-notes.yml`. There are just 3 options that you can set so don't freak out:\n\n  - `editor`:\n  The editor of your choice. This value will get passed to bash so make sure you use the exact name your terminal will understand.\n\n  **Possible Values**: `[vim, subl, atom, emacs, nano]`\n  (more?) I haven't tested others but I know they're out there.\n\n  **Default Value**: `vim`\n\n  - `notes_dir`:\n  The home of your notes. This is where `notes` will look for them.\n\n  **Possible Values**: any valid + existing dorectory path. I use `~/GoogleDrive/Notes` because I track mine in google drive ([overGrive](https://www.thefanclub.co.za/overgrive) for linux).\n\n  **Default Value**: `~/Notes`\n\n  - `extension`:\n  The default file-type extension for your notes.\n\n  **Possible Values**: `[txt, md, yml, json, html, rb, ...]` anything your editor can understand that's a valid file extension.\n\n  **Default Value**: `txt`\n\nThat's [yaml](http://www.yaml.org/start.html) so it should look like this:\n\n```yaml\neditor: vim\nnotes_dir: ~/Notes\nextension: txt\n```\n\n## Development\n\nAfter checking out the repo, run `bin/setup` to install dependencies. Then, run `bin/test` to run the tests. You can also run `bin/console` for an interactive [pry](http://pryrepl.org/) prompt.\n\nIf you're changing the man page, generate roff and html files with `bin/ronn`.\n\nTo install this gem onto your local machine, run `bundle exec rake install`.\n\nTo release a new version, first update the version number in `lib/peter_notes/version.rb`, then build the gem with `bundle exec rake build`. Install locally and confirm nothing broke, push a commit [Major, Minor, Patch] version bump. Now you can push the `.gem` file to [rubygems.org](https://rubygems.org) with `gem push pkg/peter-notes-VERSION.gem`. Throw a git tag on there `bin/tag`.\n\n## Contributing\n\nBug reports and pull requests are welcome on GitHub at https://github.com/fonsecapeter/peter-notes. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.\n\n## License\n\nThe gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).\n\n## Code of Conduct\n\nEveryone interacting in the peter-notes project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/fonsecapeter/peter-notes/blob/master/CODE_OF_CONDUCT.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffonsecapeter%2Fpeter-notes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffonsecapeter%2Fpeter-notes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffonsecapeter%2Fpeter-notes/lists"}