在终端执行之前扩展 .bashrc 的别名命令

在终端执行之前扩展 .bashrc 的别名命令

我对此很菜鸟。

alias gc = git commit -m

我想:

  • gc输入终端后
  • space一下就会变成git commit -m
  • 如果我不想这样,请按,esc
    它会变成上一个gc
  • 纠正这个假设gca并按space

你明白了。

有什么解决办法吗?

PS:尝试了shopt选项“shopt -s expand_aliases
如果我写gc,它应该变成git commit -m在终端中”
,但事实并非如此。

答案1

我假设你在bashshell 中有一个别名,比如

alias gc='git commit -m'

Enter并且您希望在按执行命令之前在命令行上展开它。

您可以通过调用 Readline 函数来完成此操作alias-expand-line。最简单的方法是“绑定”组合键来触发该功能。下面我这样做,相当随意地选择Ctrl+X+ a(它只需要不与我常用的任何其他组合键发生冲突):

bind '"\C-xa": alias-expand-line'

发出该bind命令后,您可以开始输入一些命令,如下所示:

$ gc "my message"

在该行的任意点按Ctrl+X+会展开别名并将其变成agc

$ git commit -m "my message"

bind命令通常会放入您的~/.bashrc文件中或您为交互式 shell 进行自定义的任何位置。

Readline 函数无法“取消展开”别名,但您可以使用Ctrl+X+Ctrl+UCtrl+_来撤消展开(或将undoReadline 函数绑定到您选择的其他组合键)。

相关内容