LLMShellAutoComplete
nimlock
LLMShellAutoComplete | nimlock | |
---|---|---|
3 | 1 | |
99 | 4 | |
- | - | |
4.4 | 10.0 | |
about 1 year ago | about 8 years ago | |
Python | Nimrod | |
MIT License | - |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
LLMShellAutoComplete
-
ZSH-like autocompletion
As a small plug there's my https://github.com/TIAcode/LLMShellAutoComplete which uses OpenAI GPT API for autocomplete, though currently it needs atuin to make recommendations, but I'm going to add some kind of nushell sqlite history database option soon.
- Atuin replaces your existing shell history with a SQLite database
nimlock
-
Atuin replaces your existing shell history with a SQLite database
> How do you handle maintaining this as you transition through jobs, machines, etc?
Currently, the tool reads ~/.mergerc, which is a JSON file with a list of SSH hosts to SCP history to and from. As long as the history file is in the same place (it tends to be on hosts that I setup, and otherwise I check in default locations) and the host has an entry in ~/.ssh/config, the tool will work. It's really just a wrapper for a few SCP invocations plus a history file (extended) format parser.
Changing servers is just a change in the config file, but it's also helpful for changing jobs, because I can quickly add a bit of filtering before the merging happens. I had to erase some API keys and such a few times, adding `filter` call here: https://github.com/piotrklibert/zsh-merge-hist/blob/master/s... took care of it.
> what is your workflow around maintaining these one off ad hoc "developer boost" type tools?
Good question. I don't have such workflow, at all. When I commit to write something like this, I try to make sure that it has a scope limited enough so that it can be "completed" or "done". In this case, the tool builds on SSH/SCP and a file format that hasn't changed in the last 20 years (at least). So, once I had it working, there was nothing much to do with it after that. The only change I had to do recently was changing `+` to `` in the parser, because somehow (not sure how, actually) an empty command made it into the file. But that's all I had to do in 5 years time.
I'm not as extreme, but suckless.org philosophy appears to work well here. Here's another example: https://github.com/piotrklibert/nimlock - it's a port, done because I wanted to do something in Nim, but it worked for me for years and I suspect it still works now (after going full remote I stopped needing it). There's nothing much that could break (well, Wayland would* break it, but I don't use it), and so there's not much you need to do in terms of maintenance.
As for language choices - these are basically random. I made the zsh-merge-hist in Scala simply because I was interested in Scala back then. I have little tools written in Nim, OCaml, Racket, Elisp, Raku - and even AWK (pretty nice language actually) and shell. That's another reason why making the tools any more complex than what's absolutely necessary would be a problem: the churn in the ecosystems tends to be too high for me to keep track of, especially since I'd need to track 10 of them.
> I'm checking it out
If you have Java installed, `./gradlew installDist` should give you `./build/install/bin/zsh-merge-hist` executable to run. The ~/.mergerc (on the host the tool runs) should look like this:
{
What are some alternatives?
resh - RESH ❯❯ Contextual shell history for zsh and bash
zsh-merge-hist
bash-preexec - ⚡ preexec and precmd functions for Bash just like Zsh.
atuin - ✨ Magical shell history
mcfly - Fly through your shell history. Great Scott!
carapace - command argument completion generator for spf13/cobra