【问题标题】:ksh autocomplete and previous commands togetherksh 自动完成功能和之前的命令一起使用
【发布时间】:2012-01-30 18:31:09
【问题描述】:

set -o vi-tabcomplete 正在打开选项卡自动完成

set -o emacs 正在开启历史记录(上一个命令向上,下一个命令向下)

但是,如果我在 ~/.kshrc 中同时设置,它只会打开一个 emacs(history) 并且我无法打开选项卡自动完成功能。我错过了什么吗?

set -o vi-tabcomplete
set -o emacs

做了以下事情

set -o emacs

Esc, Ctrl V -- This gave me 
$ Version AJM 93t+ 2010-02-02

也试过做

$ set -o emacs
$ bind "^I=complete"
ksh: bind: not found [No such file or directory]

也把这些东西放到.kshrc中

set -o emacs
bind "^I=complete"

现在,仅历史记录正在运行,而不是选项卡完整。

【问题讨论】:

    标签: shell ksh


    【解决方案1】:

    选项 vi 和 emacs 是互斥的。

    请检查您的 ksh 版本并更新您的问题:

    set -o emacs 
    Ctrl-V          # (yes, press control-v) this prints ksh version
    

    试试:

    set -o emacs
    bind "^I=complete"      # tab completion
    

    我不记得你是按字面意思输入 caret-I 还是 control-I 来获得正确的绑定。

    【讨论】:

    • 我尝试了“绑定 ^I=complete”,但没有成功。失败并出现错误说绑定:未找到。我正在使用 ksh88。感谢您的帮助。
    • 太糟糕了,ksh88 没有这个功能。出于这个原因,我试图不惜一切代价避免它。如果我需要使用它,我会设置 -o vi 并使用 Esc-\ 和 Esc-= 键序列(即 escape-backslash 和 escape-equal)。
    【解决方案2】:

    这对我有用

    在 ~/.environ.ksh 中输入以下内容

    set -o tabcomplete  # Auto Tab complete
    set -o emacs        # History
    

    【讨论】:

      【解决方案3】:

      在我的版本 Version M-11/16/88f 使用 ksh 外壳而不是 ksh93 我使用两次 ESC 键运行它。也不是使用选项卡的正常方式,然后是两次 ESC 键。但是行为不一样,更简单的是,在普通 shell sh 或 bash 中,当您按下 TAB 键时,您将获得与您已有的字符串可能匹配的列表。使用此 shell 并按 ESC 键 2 次,当只有一个匹配的情况时,您将只获得一个自动完成。如果你想看看有多少情况可以使用“ESC + =”组合,然后继续写。

      简历:

      "ESC + ESC" => 只有匹配大小写时自动完成。

      "ESC + =" => 显示所有匹配的情况。

      【讨论】:

        【解决方案4】:

        只需在您的 .profile 文件末尾添加这两行即可解决此问题:

        SHELL=/bin/ksh # Correct it if your ksh is at different path
        exec $SHELL    # To fix autocomplete bug of standard ksh. It must be last line.
        

        【讨论】:

          【解决方案5】:

          使用 echo $0 检查你的 shell --> 如果这是 ksh 那么。 在 .profile 中输入:set -o vi

          1. 对于所有最后执行的命令,使用关键字 as:ESC+k(用于向后最后执行的命令)和 ESC+j(用于向前命令)
          2. 对于自动路径补全,使用命令作为 ESC+\

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-08-10
            • 1970-01-01
            • 2022-08-15
            • 1970-01-01
            • 1970-01-01
            • 2012-09-17
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多