Answers:
须藤!! (或sudo bang bang)是我最常用的命令之一。我仍然只使用普通的老式bash,就可以了。得知鱼不能正确实施,我们深感抱歉。有点谷歌搜索,我发现了这一点:
function sudo
if test "$argv" = !!
eval command sudo $history[1]
else
command sudo $argv
end
end
这里的线程还有更多选择:https : //github.com/fish-shell/fish-shell/issues/288
我在鱼用户邮件列表中找到了一个完美的答案:
function bind_bang
switch (commandline -t)[-1]
case "!"
commandline -t $history[1]; commandline -f repaint
case "*"
commandline -i !
end
end
function bind_dollar
switch (commandline -t)[-1]
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
关于Fish的github Wiki的进一步讨论
~/.config/fish/config.fish
并粘贴了这个。重新启动鱼后效果很好。
我遇到了与您相同的问题,并通过使用oh-my-fish
(这是fish
Shell 的插件管理器)https://github.com/oh-my-fish/oh-my-fish进行了修复 。您可以使用以下命令安装它:
curl -L https://get.oh-my.fish | fish
然后bang-bang
使用以下命令安装插件:
omf install bang-bang
如果!!
仅在的上下文中使用sudo !!
,则可以定义对^s
(CTRL + s)的键绑定,这会将sudo附加到命令中:
function prepend_command
set -l prepend $argv[1]
if test -z "$prepend"
echo "prepend_command needs one argument."
return 1
end
set -l cmd (commandline)
if test -z "$cmd"
commandline -r $history[1]
end
set -l old_cursor (commandline -C)
commandline -C 0
commandline -i "$prepend "
commandline -C (math $old_cursor + (echo $prepend | wc -c))
end
这允许键入任何命令,并在键入或类似情况下在sudo之前添加sudo来代替 sudo !!