show-all-if-ambiguous vs show-all-if-unmodified?
show-all-if-ambiguous vs show-all-if-unmodified?
我找不到关于 Readline 选项 show-all-if-ambiguous
和 show-all-if-unmodified
之间区别的明确解释,以及它们是否影响不同的事物或相互排斥。关于这个主题的官方文档很少。
默认情况下,如果有多个可能的完成,readline 将不会打印任何可能的完成。此外,如果所有可能的补全共享一个公共前缀,则插入该公共前缀。
讨论的两个选项改变了 readline 的行为:
show-all-if-ambiguous
将导致 readline 在第一次 Tab 按下后打印可能的完成,即使有多个.
show-all-if-unmodified
会做同样的事情,除了所有完成共享一个公共前缀的情况.
一个例子:
假设我们有两个可能的完成匹配项,并且它们共享一个公共前缀。例如,在一个空目录中,运行:
touch ___1 ___2
现在,输入 :SpaceTab
如果我们打开 show-all-if-ambiguous
,屏幕将如下所示:
$ :
___1 ___2
$ : ___
但如果我们只打开 show-all-if-unmodified
,屏幕将如下所示:
$ : ___
请注意,在这两种情况下,按 Tab 将触发可能的完成显示。但是,如果我们打开上述选项中的 两个 选项,则不会发生任何事情,我们将不得不再次按 Tab 以获取列表.
使用 man page
中的描述
show-all-if-unmodified
This alters the default behavior of the completion functions in a fashion similar to show-all-if-ambiguous. If set to ‘on’, words which have more than one possible completion without any possible partial completion (the possible completions don’t share a common prefix) cause the matches to be listed immediately instead of ringing the bell. The default value is ‘off’.
这意味着如果可以完成任何部分完成,那么它们将被填充,并且不会显示所有完成。
如果没有部分完成,则显示所有完成。
show-all-if-ambiguous
This alters the default behavior of the completion functions. If set to ‘on’, words which have more than one possible completion cause the matches to be listed immediately instead of ringing the bell. The default value is ‘off’.
这意味着单词将被部分完成直到有歧义的地方AND 将一步打印所有完成。
例子
假设我们有一个文件 abcd.txt
和 abce.txt
正在使用
show-all-if-unmodified
打字
$ls a<tab>
会显示
$ls abc
并再次按 Tab 键(因为没有部分完成)将导致
$ls abc
abcd.txt abce.txt
$ls abc
正在使用
show-all-if-ambiguous
打字
ls a<tab>
会显示
$ls a
abcd.txt abce.txt
$ls abc
所以两个动作一步到位。
还要注意 show-all-if-ambiguous 覆盖 show-all-if-unmodified 所以如果两者都设置为 on 然后行为将还是前者吧。
我找不到关于 Readline 选项 show-all-if-ambiguous
和 show-all-if-unmodified
之间区别的明确解释,以及它们是否影响不同的事物或相互排斥。关于这个主题的官方文档很少。
默认情况下,如果有多个可能的完成,readline 将不会打印任何可能的完成。此外,如果所有可能的补全共享一个公共前缀,则插入该公共前缀。
讨论的两个选项改变了 readline 的行为:
show-all-if-ambiguous
将导致 readline 在第一次 Tab 按下后打印可能的完成,即使有多个.show-all-if-unmodified
会做同样的事情,除了所有完成共享一个公共前缀的情况.
一个例子:
假设我们有两个可能的完成匹配项,并且它们共享一个公共前缀。例如,在一个空目录中,运行:
touch ___1 ___2
现在,输入 :SpaceTab
如果我们打开 show-all-if-ambiguous
,屏幕将如下所示:
$ :
___1 ___2
$ : ___
但如果我们只打开 show-all-if-unmodified
,屏幕将如下所示:
$ : ___
请注意,在这两种情况下,按 Tab 将触发可能的完成显示。但是,如果我们打开上述选项中的 两个 选项,则不会发生任何事情,我们将不得不再次按 Tab 以获取列表.
使用 man page
中的描述show-all-if-unmodified
This alters the default behavior of the completion functions in a fashion similar to show-all-if-ambiguous. If set to ‘on’, words which have more than one possible completion without any possible partial completion (the possible completions don’t share a common prefix) cause the matches to be listed immediately instead of ringing the bell. The default value is ‘off’.
这意味着如果可以完成任何部分完成,那么它们将被填充,并且不会显示所有完成。
如果没有部分完成,则显示所有完成。
show-all-if-ambiguous
This alters the default behavior of the completion functions. If set to ‘on’, words which have more than one possible completion cause the matches to be listed immediately instead of ringing the bell. The default value is ‘off’.
这意味着单词将被部分完成直到有歧义的地方AND 将一步打印所有完成。
例子
假设我们有一个文件 abcd.txt
和 abce.txt
正在使用
show-all-if-unmodified
打字
$ls a<tab>
会显示
$ls abc
并再次按 Tab 键(因为没有部分完成)将导致
$ls abc
abcd.txt abce.txt
$ls abc
正在使用
show-all-if-ambiguous
打字
ls a<tab>
会显示
$ls a
abcd.txt abce.txt
$ls abc
所以两个动作一步到位。
还要注意 show-all-if-ambiguous 覆盖 show-all-if-unmodified 所以如果两者都设置为 on 然后行为将还是前者吧。