Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/devinleamy/jeff

Command line notes made easy
https://github.com/devinleamy/jeff

Last synced: about 1 month ago
JSON representation

Command line notes made easy

Awesome Lists containing this project

README

        

# *Jeff*


Installation
Usage
Build
Notes

***Jeff*** is a command line note management app, similar to Obsidian.

## Installation

#### ***Install with cargo:***

```bash
$ cargo install jeff
```

## Usage

#### ***Create a vault using the following command:***

```bash
$ jf vault newvault ~/vaults
```

Here, ***newvault*** is the name of the vault, and '***~/vault***' is the location where it will be created (this location should be an absolute fs path and exist already or `jeff` will throw an error).

Providing no arguments to `vault` command will list all vaults.

```bash
$ jf vault
```

Adding the '***-l***' flag will list all vaults with their locations.

```bash
$ jf vault -l
```

At this moment only ***newvault*** will be listed.

#### ***Enter into the vault:***

```bash
$ jf enter newvault
```

`enter` command is also used to switch to other vaults.

#### ***Create notes and folders***

```bash
$ jf note newnote
```

```bash
$ jf folder newfolder
```

`note` and `folder`, both work similarly and create the corresponding items in ***current folder***. When a vault is first created, the ***current folder*** is set to its root.

#### ***Create templates***

To avoid having to write the boilerplate for things like weeks notes, `jeff` provides note templates.

```bash
# list all templates
$ jf template
```

```bash
# create and edit a new template "weekly_note"
$ jf template weekly_note
```

Notes can then be created using a template by supplying `--template (-t)` along with the name of the template.
```bash
# create a new note from the "weekly_note" template
$ jf note reflection --template weekly_note

# or equivalently
$ jf nt reflection -t weekly_note
```

#### ***Create and edit daily note in the current vault***

Daily notes are stored as `YYYY-MM-DD.md` at the top-level the current vault. `jf today` will edit any existing daily note. If no daily note exists,
you will be prompted to create one.

```bash
# Create daily note YYYY-MM-DD? (y/n)
$ jf today
```

#### ***Change folder***

```bash
$ jf chdir newfolder
```

`chdir` command will switch the current folder to the location mentioned.


Relative path to location from current folder has to be provided. Standard fs paths are accepted as valid input, like `../folder1/somefolder/`.

```bash
$ jf chdir ..
```

This will switch back to the root of vault.

#### ***Print dir tree of current folder***

```bash
$ jf list
```

When needed `list` command will print the dir tree of current folder.
All notes will be highlighted in ***yellow***,
vaults will be highlighted in ***red***, and folders will appear ***blue***.

This is what the dir tree will look like with this vault's root as the current folder.

```bash
newvault # red
├── newfolder # blue
└── newnote # yellow
```
The highlight colors can be configured using `jf config -color `. Colors can also be set using `jf config -color`, which displays a select containing all available options.

Set vault color to red
```bash
jf config vault-color red
```
Set folder color using selection
```bash
jf config folder-color
```

#### ***Fs operations***

Command `remove` works as its name suggests, on all items (vaults, notes, or folders).

```
$ jf remove note newnote
```

Commands `rename` and `move` are used similarly but take one additional argument each.

Command `rename` takes the new name as its third argument.

```bash
$ jf rename note newnote somenewnote
```

Command `move` takes the new location as its third argument.

For vaults, path rules are same as `vault` command and for other items, path rules are same as `chdir` command.

```bash
$ jf move note newnote /newfolder/
```

These commands take the item type (***vault***, ***note***, or ***folder***) as their first argument.

Command `vmove` is similar to `move`, but it moves an item (***note*** or ***folder***) from the current folder of the current vault to the root of a different vault, and takes the name of this vault as an argument in place of location.

```bash
$ jf vmove note newnote somevault
```

Every keyword used so far (commands and item names) is interchangeable with its two letter alias, e.g. `move` command can also be written as:

```
$ jf mv nt newnote /newfolder/
```

#### ***Handle Jeff's config***

```bash
$ jf config
```
Will display the current configuration. Add additional arguments, `jf config