bash的!$和!! 在鱼壳里?


30

我已经使用bash大约十年了,并且已经习惯于能够输入!$来重复最后一个参数,例如:

$ mkdir foo
$ cd !$
cd foo

(最后一行由外壳程序打印,以告诉您命令评估的内容)。同样,我经常注意以下几点:

$ make_sandwich
-bash: make_sandwich: Permission denied
$ sudo !!
sudo make_sandwich

我真的很喜欢鱼壳,但是我的肌肉记忆力很强。鱼类中是否有等同物?我可以将fish配置为使用相同的命令吗?

Answers:


26

Alt- Up arrow提供上一个命令的最后一个参数。随后的推送会循环遍历先前的参数。

我还没有找到一个满意相当于!!,除了Up那么Ctrl-A


11

须藤!! (或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


我必须在哪里输入该代码?将其输入鱼中,然后“ sudo !!” 返回一些带有“源:读取文件'-'时出错”的错误行
Benedikt S. Vogler

11

我在鱼用户邮件列表中找到了一个完美的答案:

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的进一步讨论


太棒了!您应该考虑编辑包含此内容的最佳答案...
user1480704 '16

2
我创建~/.config/fish/config.fish并粘贴了这个。重新启动鱼后效果很好。
卡图

3

我遇到了与您相同的问题,并通过使用oh-my-fish (这是fishShell 的插件管理器)https://github.com/oh-my-fish/oh-my-fish进行了修复 。您可以使用以下命令安装它:

curl -L https://get.oh-my.fish | fish

然后bang-bang使用以下命令安装插件:

omf install bang-bang 

1

如果!!仅在的上下文中使用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 !!

参见Ahti在github讨论上的评论

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.