39 个版本
0.20.3 | 2024年1月31日 |
---|---|
0.20.2 | 2023年12月27日 |
0.19.2 | 2023年3月12日 |
0.18.0 | 2022年8月24日 |
0.6.1 | 2020年7月23日 |
#252 in 命令行工具
1.5MB
3K SLoC
The Way
终端代码片段管理器。
记录和检索您每天或偶尔使用的代码片段,无需启动浏览器。只需调用 the-way new
以添加带有描述、语言和一些标签的片段。
the-way search
在您的片段库中进行模糊搜索(可选按语言和标签进行过滤)并允许您
- 使用 Shift-Right 编辑片段
- 使用 Shift-Left 删除片段
- 使用 Enter 将特定片段复制到剪贴板,以便您可以将其粘贴到您正在使用的任何编辑器或 IDE 中。
通过一些自引用示例查看其操作(点击以在 asciinema 中打开)
目录
安装
要求
xclip
在 Linux 上和 pbcopy
在 OS X 上(更多选项请参阅 此处)
二进制文件
查看 发行版
- OSX - 通过系统偏好设置允许
the-way
(至少在 Catalina 上是必需的) - Linux -
chmod +x the-way
- 目前不支持 Windows(等待 此问题)
- 可以通过更改复制命令在 Windows Subsystem for Linux 上运行(请参阅 此处)
使用 brew
brew tap out-of-cheese-error/the-way && brew install the-way
使用 cargo
cargo install the-way
使用 yay
yay -S the-way-git
在 Android 上
需要 Termux、Termux:API 和 pkg install termux-api
克隆存储库,运行 cargo build --release
,然后使用 target/release/the-way
升级
某些升级需要数据库迁移(在发行说明中提及)
- 升级前
the-way export > snippets.json
the-way clear
- 升级后
the-way import snippets.json
用法
A code snippets manager for your terminal
Usage: the-way [OPTIONS] <COMMAND>
Commands:
new Add a new code snippet
cmd Add a new shell snippet
search Fuzzy search to find a snippet and copy, edit or delete it
sync Sync snippets to a Gist
list Lists (optionally filtered) snippets
import Imports code snippets from JSON
export Saves (optionally filtered) snippets to JSON
clear Clears all data
complete Generate shell completions
themes Manage syntax highlighting themes
config Manage the-way data locations
edit Change snippet
del Delete snippet
cp Copy snippet to clipboard
view View snippet
tags Lists (optionally filtered) tags
languages Lists (optionally filtered) languages
help Print this message or the help of the given subcommand(s)
Options:
-c, --colorize Force colorization even when not in TTY mode
-p, --plain Turn off colorization
-h, --help Print help information (use `--help` for more detail)
-V, --version Print version information
功能
主要功能
- 添加代码和shell代码片段
- 交互式模糊或精确搜索,具有编辑、删除和复制到剪贴板的功能
- 按标签、日期、语言和/或正则表达式模式筛选
- 通过JSON导入/导出
- 从Gist导入(使用
the-way import -g <gist_url>
) - 同步到Gist
- 语法高亮显示
Shell 命令
the-way cmd
(受pet启发)使保存带变量的单行bash/shell代码片段变得更容易,这些变量可以在需要时填充。
根据您选择的shell添加以下功能。每次您花费大量时间手动编写完美的命令时:运行它,关闭所有stackoverflow标签,然后运行cmdsave
将其保存到the-way
。然后您可以使用cmdsearch
来搜索这些shell代码片段,所选片段已经粘贴到终端,准备运行。
bash
function cmdsave() {
PREV=$(echo `history | tail -n2 | head -n1` | sed 's/[0-9]* //')
sh -c "the-way cmd `printf %q "$PREV"`"
}
function cmdsearch() {
BUFFER=$(the-way search --stdout --languages="sh")
bind '"\e[0n": "'"$BUFFER"'"'; printf '\e[5n'
}
zsh
function cmdsave() {
PREV=$(fc -lrn | head -n 1)
sh -c "the-way cmd `printf %q "$PREV"`"
}
function cmdsearch() {
BUFFER=$(the-way search --stdout --languages="sh")
print -z $BUFFER
}
fish
function cmdsave
set line (echo $history[1])
the-way cmd $line
end
function cmdsearch
commandline (the-way search --languages=sh --stdout)
end
您通常希望在每次需要shell命令时都使用不同的参数:将变量保存为shell代码片段中的<param>
或<param=default_value>
,每次选择时都可以交互式地填充它们(或保留默认值)。参数可以出现多次,只需使用相同的名称并在第一次使用时写入默认值。
这是一个将shell命令保存为添加新语言语法的另一个自引用示例
(待办:使用cmdsearch代替search)
同步到 Gist
the-way sync date
将代码片段同步到Gist,每个代码片段的命名方式为snippet_<index>.<extension>
,并有一个index.md
文件链接到每个代码片段的描述和标签。本地更新和删除将上传到Gist,Gist更新将下载。
the-way sync local
上传所有本地更改、添加和删除到Gist。这在升级到the-way的新版本且Gist格式已更改或Gist中出现问题后非常有用。
the-way sync gist
将所有Gist更改、添加和删除下载到本地数据库。这对于在不同计算机间同步代码片段非常有用,因为它使用Gist作为事实来源。
此功能需要一个具有“gist”范围的GitHub访问令牌。您可以在首次运行sync
时输入此令牌,或将它设置为环境变量$THE_WAY_GITHUB_TOKEN
。
您还可以使用the-way import -w <gist_url>
导入由the-way创建的Gist中的代码片段。
Shell 完整性
为您的shell生成并保存到适当的完成文件夹
the-way complete bash > the-way-completion.bash
source the-way-completion.bash
例如,对于oh-my-zsh
the-way complete zsh > .oh-my-zsh/completions/_the-way
exec zsh
语法高亮显示
The Way将语言映射到它们的扩展名,并使用此信息
- 在
$EDITOR
(如果编辑器支持)中启用语法高亮显示, - 将代码片段上传到具有正确扩展名的Gist,
- 添加一个小型彩色语言指示器(GitHub风格),
- 在终端中高亮显示代码
最后一点可以通过the-way themes
进行自定义。
使用the-way themes set
来查看可用的主题并启用一个主题。
默认主题
Darcula
InspiredGitHub
Solarized (dark)
Solarized (light)
base16-eighties.dark
base16-mocha.dark
base16-ocean.dark
base16-ocean.light
base16-tomorrow.dark
base16-twilight.dark
使用the-way themes add <主题.tmTheme>
将新主题添加到您的主题文件夹中。主题文件需要是Sublime的.tmTheme格式。在GitHub上搜索.tmTheme会显示一些示例。
使用the-way themes language <语言.sublime-syntax>
来添加对新的语言的支持(默认支持许多语言)。语法文件需要是Sublime的sublime-syntax格式。《Zola》有一个这样的文件集合。
以下是添加Kotlin.sublime-syntax
前后看起来是怎样的
- 之前
- 之后
要为markdown文件中的代码块获得语法高亮,请下载并添加此存储库中的修复过的Markdown.sublime-syntax
文件,取自bat(默认语法文件不再这样做)
配置
默认的配置TOML文件位于
- Linux:
/home/<username>/.config/the-way
- Mac:
/Users/<username>/Library/Preferences/rs.the-way
此文件包含数据目录的位置,这些目录将根据XDG和标准目录指南自动创建和设置。通过创建一个配置文件并使用the-way config default > config.toml
来更改此文件,然后设置环境变量$THE_WAY_CONFIG
指向此文件。
复制命令
默认情况下,Linux使用xclip
,OSX使用pbcopy
,Android使用termux-clipboard-set
。您可以通过设置配置文件中的copy_cmd
字段来覆盖默认命令。例如,要将wl-copy
用作Wayland上的复制命令,将copy_cmd
字段设置为以下内容
copy_cmd = 'wl-copy --trim-newline'
为什么叫 "The Way"?
这个名称是对科斯摩匹莉特的道的参考,适用于每一种情况。
依赖项
~23–34MB
~546K SLoC