#snippets #neovim #visual-studio-code #cli-tool #cli #rust

bin+lib snip-cli

用于管理 Neovim 和 VSCode 片段的 CLI 工具

1 个不稳定版本

0.1.1 2023 年 12 月 19 日

命令行工具 中排名 2520

MIT 许可证

47KB
925 行(不含注释)

用于管理 Neovim 和 VSCode 片段的 CLI 工具(snip-cli)

Rust Build and Test

release

注意:这是一个额外的工具,可以与我的 Neovide Neovim rust 设置一起使用。

VSCode 片段兼容

安装

  1. 您可以在发行页面下载并安装 snip-cli。注意:在 MacOS 上,您可能需要进入系统偏好设置 > 安全与隐私 > 通用,然后点击“仍然打开”以安装它。

注意:在 Windows 上,您可能需要将命令添加到 ENV PATH。

  1. 使用 Cargo 安装
cargo install snip-cli --bin snip

为不同语言管理多个片段文件

您可以使用命令 snip config <path> 来在运行时更改片段文件。

注意:当您想要管理不同语言的多个片段文件时,这非常有用。

配置路径的位置

默认配置路径 DEFAULT_CONFIG_PATH~/.config/nvim/snippets/rust/rust.json,在 src/constants.rs 中设置,并在构建过程中使用,

但您可以通过设置环境变量 SNIP_CONFIG_PATH 来更改它。

使用方法

  1. 帮助
snip
# or
snip --help
输出
snip
/Users/uriah/.config/nvim/snippets/rust/rust.json
A CLI tool for managing Neovim LuaSnip Rust snippets

Usage: snip <COMMAND>

Commands:
  add         Adds entry to Snippet Collection file
  rm          Removes entry from Snippet Collection file
  edit        Edits entry in Snippet Collection file
  ls          Lists all entries in Snippet Collection file
  show        Gets entry from Snippet Collection file
  search      Searches for entries in Snippet Collection file
  config      Configures the Snippet Collection file
  update-key
  help        Print this message or the help of the given subcommand(s)

Options:
  -h, --help     Print help
  -V, --version  Print version
  1. 添加新片段
# help
snip add --help
# Add Snippet
snip add --key <key> --value <value> --description <description> -- "<snippet>"
  1. 删除片段
# help
snip remove --help
# Remove Snippet
snip remove --key <key>
  1. 列出所有片段
# help
snip ls --help
# Usage
snip ls <LIST_OPTION | (key or prefix)>
# List all Keys
snip ls key
# List all Prefixes
snip ls prefix
输出
snip ls key
/Users/uriah/.config/nvim/snippets/rust/rust.json
[src/main.rs:468] list_option = Key
impl_iterator
serialize_to_json_string
impl_add_trait
impl_vec_iterator
unwrap_or_else
impl_deref
impl_debug_single_field
deserialize_json_string
impl_display_single_field
import_serde_traits
impl_clone_single_field
  1. 更新键
# help
snip update-key --help
# Update Key
snip update-key  --old-key <old-key> --new-key <new-key>
输出
snip update-key --old-key "Fuzz match String" --new-key "fuzzy-match-string"
/Users/uriah/.config/nvim/snippets/rust/rust.json
[src/main.rs:499] &old_key = "Fuzz match String"
[src/main.rs:499] &new_key = "fuzzy-match-string"
  1. 更新片段
# help
snip edit --help
# Update snippet Value
snip edit --key <key> --prefix <prefix> --description <description> -- "<snippet>"
  1. 搜索片段
# help
snip search --help
# Search Snippet
snip search <ID | (key or prefix)> -- "<search_term>"
输出
snip search key -- impl
/Users/uriah/.config/nvim/snippets/rust/rust.json
[src/main.rs:490] id = Some(
    Key,
)
[src/main.rs:490] &name = "impl"
impl_deref

impl_clone_single_field

impl_iter_range

impl_partialeq_single_field
  1. 显示片段
# help
snip show --help
# Show Snippet
snip show <key_id>
输出
snip show impl_deref
/Users/uriah/.config/nvim/snippets/rust/rust.json
[src/main.rs:484] &key = "impl_deref"
+-------------+-------------------------------------------------------------+
| Key         | impl_deref                                                  |
+-------------+-------------------------------------------------------------+
| Prefix      | impl_deref                                                  |
+-------------+-------------------------------------------------------------+
| Description | Impl Deref and DerefMut traits for a custom type            |
+-------------+-------------------------------------------------------------+
| Body        | use std::ops::{Deref, DerefMut};                            |
|             |                                                             |
|             | impl<${1:T}> Deref for ${2:YourConcreteStruct}<${1:T}> {    |
|             |     type Target = ${1:T};                                   |
|             |     fn deref(&self) -> &Self::Target {                      |
|             |         &self.${3:your_field}                               |
|             |     }                                                       |
|             | }                                                           |
|             |                                                             |
|             | impl<${1:T}> DerefMut for ${2:YourConcreteStruct}<${1:T}> { |
|             |     fn deref_mut(&mut self) -> &mut Self::Target {          |
|             |         &mut self.${3:your_field}                           |
|             |     }                                                       |
|             | }                                                           |
+-------------+-------------------------------------------------------------+
  1. 配置片段:注意:这可以用来切换配置,例如,如果您想管理 Python 片段,只需传入该配置文件的路径即可。
# help
snip config --help
# Config Snippet
snip config <path>

依赖

~8–19MB
~239K SLoC