【问题标题】:How to prevent iterm2 from closing when typing Ctrl-D (EOF)键入Ctrl-D(EOF)时如何防止iterm2关闭
【发布时间】:2015-12-11 05:41:57
【问题描述】:

我用的是鱼壳。当我输入 Ctrl-D 时,它会向我的终端发送一个 EOF,然后终端关闭。

我想让 ctrl-D 不会关闭我的 iterm2。

我看到有人在 bash shell 中设置了 IGNOREEOF,如下所示:https://unix.stackexchange.com/questions/27588/how-can-i-keep-controld-from-disconnecting-my-session

但是,我不认为这个变量存在于鱼中。有谁知道我如何强制 iterm2(带有默认鱼壳)在 ctrl-D 上不关闭?

【问题讨论】:

  • 这是在shell级别处理的,所以和iTerm2没有关系。
  • (或者,您可以映射^D 以在 iTerm2 中发送其他内容,包括“忽略”,但我认为这不是一个好主意。为了限制对钓鱼的影响,有一个专门的profile 叫做“fish”什么的,然后使用 iTerm2 的自动配置文件切换。)
  • 您说得对,先生。这可能是一种选择。我只是不禁想知道是否有任何鱼类专家也使用 iterm2,他们用什么来防止这种情况发生:)
  • 与终端没有任何关系这不是真的。某些终端可以设置为在程序退出时不关闭选项卡/窗口。

标签: shell unix fish iterm2


【解决方案1】:

这是 control-D 的默认键绑定:

bind \cd delete-or-exit

你可以通过运行bind找到它。

delete-or-exit只是一个函数,你可以用functions delete-or-exit读取。)

所以它正在退出,因为这是默认行为。你可以让 control-D 做别的事情。例如,也许它应该删除光标下的字符:

bind \cd delete-char

如果您想将此永久化,请将其添加到您的 fish_user_key_bindings 函数中:

  1. 运行funced fish_user_key_bindings 开始编辑
  2. bind \cd delete-char 放入函数中
  3. 按回车键创建函数
  4. 运行funcsave fish_user_key_bindings保存

【讨论】:

  • 您也可以运行bind \cd 来获取绑定。
  • 很好,我创建了一个类似于delete-or-exit的函数并将其绑定到\cd,现在,C-d不会退出而是执行另一个我经常使用的命令。
【解决方案2】:

阅读此问题和答案后,我更新了删除或退出功能以要求确认而不是完全停用它:

cd ~/.config/fish/functions/
cp /usr/share/fish/functions/delete-or-exit.fish .

然后编辑/替换:

function delete-or-exit

    set -l cmd (commandline)

    switch "$cmd"
        case ''
            read --nchars 1 --local -P 'Do you want to exit? [y/N] ' confirm
            switch $confirm
                case Y y
                    exit 0
                case '' N n
                    echo -n (fish_prompt)
            end

        case '*'
            commandline -f delete-char
    end
end

它有一个小问题,当你完成时它会显示两次提示,但如果你不打印它似乎总比没有好(参见上面的 N 案例)。也许有人对此有解决方案。

【讨论】:

    【解决方案3】:

    您也可以通过bind --erase --preset \cd 取消绑定,而不是为Ctrl+d 分配不同的操作。所有步骤:

    • 运行funced fish_user_key_bindings 开始编辑
    • bind --erase --preset \cd 放入函数中
    • 按回车键创建函数
    • 运行funcsave fish_user_key_bindings保存

    【讨论】:

      猜你喜欢
      • 2020-02-20
      • 2012-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多