我如何启用“!!”在鱼?

How do I enable "!!" in fish?

我经常在使用bash的同时使用$ sudo !!。切换到鱼后,我注意到这不再有效。由于搜索引擎不支持搜索特殊字符,我自己很难弄清楚这一点。我想我只需要 add/change 配置中的一行,但我不知道那会是什么。

鱼shelldeliberately omits history substitution

有一些方法可以使用 https://github.com/fish-shell/fish-shell/wiki/Bash-Style-Command-Substitution-and-Chaining-(!!-!%24-&&-%7C%7C)

中列出的 shell 技巧来实现

例如:

function bind_bang
  switch (commandline -t)
  case "!"
    commandline -t $history[1]; commandline -f repaint
  case "*"
    commandline -i !
  end
end

function bind_dollar
  switch (commandline -t)
  case "!"
    commandline -t ""
    commandline -f history-token-search-backward
  case "*"
    commandline -i '$'
  end
end

function fish_user_key_bindings
  bind ! bind_bang
  bind '$' bind_dollar
end

funcsave bind_bang bind_dollar fish_user_key_bindings

最简单的方法是安装Fisher package manager; and then install the package !!,例如:

$ fisher install oh-my-fish/plugin-bang-bang

p.s.

不仅拿回来使用!! (最后使用的命令)还有 !$(最后一个命令参数。)

您也可以通过旧版安装程序使用该插件 omf

当你有像 Fisher 这样易于使用的包管理器时,为什么要重新发明轮子。

老问题,但令我惊讶的是没有提到 fish shell 的“pre-pend sudo”键绑定 Alt+s.

使用默认的开箱即用键绑定,sudo !! 可以通过以下任一方式实现:

  • Alt+. 然后是 Alt+s
  • 后跟[=​​21=]Alt+s,但这确实会移动你的手指a对于那些关心的人(我也是),离“主场”有点远。

第一个键和弦重复前面的命令,然后 Alt+ssudo 添加到它前面。

编辑:对于 fish 3.2 及更高版本,我最喜欢的新功能之一是您甚至不需要通过 Alt+ 检索上一行.。仅 Alt+s 没有在提示符处键入其他文本将导致提示符自动填充为 sudo + 最后一个命令输入。