取消别名命令中使用的选项?

取消别名命令中使用的选项?

例如,假设以下实现ll

alias ls="ls -F -G"         # colourise and display dir,exec,etc. icons
alias ll="ls -l -h -o"      # long-list, use KB,MB,etc. sizes, no group id

现在假设我使用ll,虽然通常我很高兴没有(通常是)混乱,但我实际上想要组 ID。

有什么方法可以“取消”选项,例如类似的方法吗ll -!o

!更简单地说,但没有明显的用例,像这里这样的命令foo -B -!B相当于foo?

已标记因为这就是我使用的,但如果确实存在便携式解决方案,显然(?)那是首选。

答案1

对于ls和其他一些命令,您可以添加另一个选项,这将否定别名中现有的选项。

但作为一个一般的解决方案我认为最好的方法如下:

  • 编写别名命令(命令后不要放置空格)
  • 运行一个小部件_expand_alias( M-x _expand_alias)
  • 删除不必要的选项并按 Enter 键

如果您经常需要此过程,您可以将此小部件绑定到某个键(^Xa默认情况下)。

相关内容