aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/README.md
blob: 013a95f1449457e2775a0e0a905f775866098fa4 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
# Soon


[![Publish to AUR](https://github.com/HsiangNianian/soon/actions/workflows/publish-aur.yml/badge.svg)](https://github.com/HsiangNianian/soon/actions/workflows/publish-aur.yml)
[![Publish to crates.io](https://github.com/HsiangNianian/soon/actions/workflows/publish-crates.yml/badge.svg)](https://github.com/HsiangNianian/soon/actions/workflows/publish-crates.yml)
[![Publish to PyPI](https://github.com/HsiangNianian/soon/actions/workflows/publish-pypi.yml/badge.svg)](https://github.com/HsiangNianian/soon/actions/workflows/publish-pypi.yml)


> 🤖 Predict your next shell command based on history — like shell autocomplete, but MORE stupid

<img align="right" src="https://repology.org/badge/vertical-allrepos/soon.svg?columns=2" />

- 🐚 Shell-aware (supports Bash, Zsh, Fish)
- 📊 Shows your most used commands
- 🌍 i18n support (EN/中文) (WIP)
- 💡 Designed for clarity — **not** an autocomplete tool, but a prediction assistant.

## Install

1. Archlinux

```shell
paru -Sy soon
```

2. Cargo

```shell
cargo install soon
```

3. Python

```
pip install soon-bin
```

## Usage

```shell
»»»» soon help                                                                                                                                                                                      0|00:00:54
Predict your next shell command based on history

Usage: soon [OPTIONS] [COMMAND]

Commands:
  now                  Show the most likely next command
  stats                Show most used commands
  learn                Train prediction (WIP)
  which                Display detected current shell
  version              Show version information
  update               Update self [WIP]
  show-cache           Show cached main commands
  show-internal-cache  Show internal cache commands
  cache                Cache a command to soon cache (for testing)
  help                 Print this message or the help of the given subcommand(s)

Options:
      --shell <SHELL>  
      --ngram <NGRAM>  [default: 3]
      --debug          Enable debug output
  -h, --help           Print help
  -V, --version        Print version
```

### Main Commands

| Command               | Description                                      |
|-----------------------|--------------------------------------------------|
| `now`                 | Show the most likely next command                |
| `stats`               | Show most used commands                          |
| `learn`               | Train prediction (WIP)                           |
| `which`               | Display detected current shell                   |
| `version`             | Show version information                         |
| `update`              | Update self (WIP)                                |
| `show-cache`          | Show cached main commands                        |
| `show-internal-cache` | Show internal cache commands                     |
| `cache <NUM>`         | Set cache size to `<NUM>` and refresh cache      |
| `help`                | Print this message or the help of subcommands    |

### Options

| Option           | Description                                 |
|------------------|---------------------------------------------|
| `--shell <SHELL>`| Specify shell type (bash, zsh, fish, etc.)  |
| `--ngram <NGRAM>`| Set n-gram length for prediction (default: 3)|
| `--debug`        | Enable debug output                         |
| `-h, --help`     | Print help                                  |
| `-V, --version`  | Print version                               |

---

### Examples

#### Predict your next command (default ngram=3)
```shell
soon now
```

#### Show your most used commands
```shell
soon stats
```

#### Show cached main commands (default ngram=3)
```shell
soon show-cache
```

#### Show cached main commands with custom cache size (e.g., 10)
```shell
soon cache 10
soon show-cache --ngram 10
```

#### Set shell type explicitly (if auto-detect fails)
```shell
soon now --shell zsh
```

#### Enable debug output
```shell
soon now --debug
```

---

### How cache works

- The `.soon_cache` file always contains the latest N main commands (N = cache size).
- Every time you run `soon now`, `soon cache <NUM>`, or `soon show-cache`, the cache is refreshed from your shell history.
- The cache size is controlled by the `<NUM>` argument in `soon cache <NUM>` or by `--ngram <NGRAM>` option.


---

MIT © 2025-PRESENT 简律纯.
[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2FHsiangNianian%2Fsoon.svg?type=shield&issueType=security)](https://app.fossa.com/projects/git%2Bgithub.com%2FHsiangNianian%2Fsoon?ref=badge_shield&issueType=security)

[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2FHsiangNianian%2Fsoon.svg?type=large&issueType=license)](https://app.fossa.com/projects/git%2Bgithub.com%2FHsiangNianian%2Fsoon?ref=badge_large&issueType=license)