【问题标题】:Add common commands to WSL autocomplete suggestions [duplicate]向 WSL 自动完成建议添加常用命令 [重复]
【发布时间】:2021-11-23 11:25:50
【问题描述】:

我一直在学习 JavaScript 库 Sequelize,并注意到一些用于 sequelize-CLI 的样板代码。例如,要生成一个模型,您经常使用这样的东西:

npx sequelize-cli model:generate --name SingularModelNameHere --attributes attribute1Name:datatype, attribute2Name:dataType

我的问题是如何将这些类型的“样板”添加到我的 Ubuntu,以便我可以轻松使用选项卡自动完成功能并用适当的代码替换样板?我见过this tutorial,但是他们单独使用host 命令,而google.comcyberciti.biznixcraft.com 是单独的自动完成参数。

有没有办法让我可以在终端中输入npx sequelize-cli 并使用选项卡自动完成model:generate --name SingularModelNameHere --attributes attribute1Name:datatype, attribute2Name:dataType 样板?

我也想添加其他样板命令。例如,

npx sequelize-cli seed:generate --name <descriptiveName>

然后,如果我输入 npx sequelize-cli s,我可以使用标签自动完成功能。

【问题讨论】:

  • 嗨!制表符完成实际上是为了一次完成一个选项/参数,这与您的用例并不匹配。我可以建议一个替代方案吗?您在 Linux 中输入 bash 的每个命令都可以保存到“历史”文件中。如果您进行了设置,并使历史文件变大(因此 所有内容 都会被保存),那么您可以使用 Ctrl-r 快速搜索它。例如Ctrl+r model:generate 应该找到最后一个npx ... model:generate ... 命令,然后您可以按 Enter 运行它。 superuser.com/questions/7414/….

标签: bash ubuntu terminal sequelize.js windows-subsystem-for-linux


【解决方案1】:

有几种方法可以解决此问题,但首先,重要的是要了解“完成”是您的 Linux shell 而非 WSL 的功能。如果您没有更改它,bash 很可能是您的 shell,因为它是大多数发行版中的默认设置。一些常见的替代方案包括zshfish

虽然我通常不会在答案中“宣传”我最喜欢的 shell,但我认为这在这种情况下是合适的,因为 fish shell 中的一大特点是其开箱即用的出色完成,建议, 和缩写系统。

正如 cmets 中提到的 omajid,大多数 shell 都可以通过历史搜索在某种程度上完成您想要的事情。但无论您选择哪种外壳,我都建议您添加 fzf 并设置其外壳集成。它可以通过极快的模式搜索来加速 Ctrl+R 历史搜索。

您可以输入npx seq,点击Ctrl+R,然后根据您之前使用的标志进行过滤。 npx seedCtrl+R 将显示您与 npxseed 的所有命令,无论它们出现在命令行中的什么位置。

即使像seqseed Ctrl+R 这样简单的东西也会找到这些行。

这可以处理您的“多个样板”场景。同样,这可以设置为在 Bash、Zsh 或 fish 中工作。

但是fish 还有一个开箱即用的Autosuggestions 功能可以帮助解决这个问题。当您键入每个命令时,fish 将“建议”您可以使用 Ctrl+F 接受的先前键入的命令行。或者您可以使用 Alt+ 一次从上一个命令行接受一个参数。

最后,fish 具有可用于此工作流程的内置 Abbreviation 支持:

abbr --add seqgen npx sequelize-cli model:generate --name SingularModelNameHere --attributes attribute1Name:datatype, attribute2Name:dataType
abbr --add seqseed npx sequelize-cli seed:generate --name 

然后,键入seqseed 后跟空格键 会将seqseed 替换为npx sequelize-cli seed:generate --name,将光标留在可以添加<descriptiveName> 的末尾。

此类工作的一些其他命令行编辑技巧。其中一些可以在其他 shell 中找到:

Key                         Function
Ctrl+W Deletes previous token. Fish is smart enough to use things like / and : as token separators by default, so if you use Ctrl+W after attribute2Name:dataType, it will only remove dataType.
Ctrl+ and
Ctrl+
Skip backward and forward over tokens
Alt+E or
Alt+V
Edit the current commandline in your preferred $EDITOR.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-08
    • 2010-12-22
    • 2022-01-18
    • 2013-01-26
    • 2014-08-15
    • 1970-01-01
    • 2018-12-28
    • 1970-01-01
    相关资源
    最近更新 更多