@kitschpatrol/snip
v0.0.13
Published
A CLI tool for snippet management.
Downloads
106
Maintainers
Readme
@kitschpatrol/snip
A CLI tool for snippet management.
[!CAUTION] This tool is a work in progress, certain commands are not yet implemented and others might behave unpredictably. I don't recommend using it until a 1.0.0 release.
Overview
Snip helps you create, edit, manage, and synchronize code snippets from the command line. Synchronize to (and possibly eventually from) editors like VS Code.
Snip is a fork of Jared Hanstra's snipster. Snip includes both some additions and some regressions vs. the original.
Getting started
Dependencies
The snip CLI tool requires Node 18+.
Installation
Install globally for access across your system:
npm install --global @kitschpatrol/snipUsage
TK
CLI
Command: snip
A CLI tool for snippet management.
This section lists top-level commands for snip.
Usage:
snip [options] [command]| Command | Argument | Description |
| ------------------- | -------------- | ------------------------------------------------ |
| add | [filename] | add a snippet |
| cd | | launch a shell in the snippets directory |
| list | | list all snippets |
| setup | | set up snip |
| sync-to-editors | [editors...] | sync snippets to editors |
| sync-from-editors | [editors...] | sync snippets from editors (not yet implemented) |
| Option | Argument | Description | Default |
| ------------------- | -------- | --------------------------------------------------- | ---------------------------- |
| --version-v | | output the version number | |
| --config-c | <path> | path to configuration file | ~/.config/snip/config.json |
| --library-l | <path> | path to library directory where snippets are stored | ~/.snip |
| --debug-d | | extra logging for troubleshooting | false |
| --help-h | | display help for command | |
See the sections below for more information on each subcommand.
Subcommand: snip add
add a snippet
Usage:
snip add [options] [filename]| Positional Argument | Description |
| ------------------- | --------------- |
| filename | name of snippet |
| Option | Description |
| ---------------- | ------------------------ |
| --help-h | display help for command |
Subcommand: snip cd
launch a shell in the snippets directory
Usage:
snip cd [options]| Option | Description |
| ---------------- | ------------------------ |
| --help-h | display help for command |
Subcommand: snip list
list all snippets
Usage:
snip list [options]| Option | Description |
| ---------------- | ------------------------ |
| --help-h | display help for command |
Subcommand: snip setup
set up snip
Usage:
snip setup [options]| Option | Description |
| ---------------- | ------------------------ |
| --help-h | display help for command |
Subcommand: snip sync-to-editors
sync snippets to editors
Usage:
snip sync-to-editors [options] [editors...]| Positional Argument | Description | Default |
| ------------------- | ------------------ | ------------ |
| editors | editors to sync to | ["vscode"] |
| Option | Description |
| ---------------- | ------------------------ |
| --help-h | display help for command |
Subcommand: snip sync-from-editors
sync snippets from editors (not yet implemented)
Usage:
snip sync-from-editors [options] [editors...]| Positional Argument | Description | Default |
| ------------------- | ------------------ | ------------ |
| editors | editors to sync to | ["vscode"] |
| Option | Description |
| ---------------- | ------------------------ |
| --help-h | display help for command |
Examples
Set up snip for the first time:
snip setup
# Enter a pathname for your snippets library (~/.snip):Add a new snippet interactively — snip prompts for a prefix, description, and language, then opens your $EDITOR:
snip add
# Prefix (the trigger keyword for your snippet): cl
# A quick description of your snippet (optional): Print value to console
# Language (...): js+ts+jsx+tsx
# Opens your editor to write the snippet body...Or pass a filename directly:
snip add "cl--Print value to console.js+ts+jsx+tsx"List all snippets in your library:
snip list
# cl--Print value to console.js+ts+jsx+tsx
# html--HTML 5 boilerplate.html
# li--Lorem Ipsum.allSync your snippet library to VS Code:
snip sync-to-editors vscodeJump into your snippets directory to edit files directly:
snip cdBackground
Snip is a fork of Jared Hanstra's snipster.
Modifications include:
- A monosyllabic name 😅.
- Migration from JavaScript → TypeScript + Zod.
- Migration from CommonJS → ES Modules.
- Migration from Yarn → PNPM.
- Added
.ignorefile support. - Added
$EDITORsupport for creating new snippets. - Added support for
~in paths. - Implemented a new automated language ID aggregation approach based on scraping plugin manifests from the VS Code marketplace.
- Added support for snippet descriptions — stored in the snippet file name itself.
The future
- [ ] Explore Amazon Q (née Fig) auto-complete generation and integration
- [ ] Additional editor adapters
- [ ] Sync-from-editor migration fixes
- [ ] Cosmiconfig
Maintainers
Acknowledgments
Jared Hanstra is the author of the original snipster project on which Snip is based.
Contributing
Issues and pull requests are welcome.
License
MIT © Eric Mika
