set -o vi-tabcomplete
正在启用标签自动填充功能
和
set -o emacs
正在打开历史记录(上一个命令,下一个命令下来)
但是,如果我在〜/ .kshrc中设置它们,它只打开一个emacs(历史记录),我无法启用标签自动完成功能。我错过了什么吗?
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"
现在,只有历史才有用,而不是标签完整。
答案 0 :(得分:3)
选项vi和emacs是互斥的。
请检查您的ksh版本并更新您的问题:
set -o emacs
Ctrl-V # (yes, press control-v) this prints ksh version
尝试:
set -o emacs
bind "^I=complete" # tab completion
我不记得的是你是否输入字母插入符号-I或控制-I来获得正确的绑定。
答案 1 :(得分:2)
在我的版本版本M-11/16 / 88f 中使用 ksh shell而不是ksh93我使用两次ESC键运行它。而不是使用标签的正常方式,然后是ESC键的两倍。但是行为不一样,更简单的是,在普通的shell sh或bash中,当你预先选择TAB键时,你会得到一个可能与你已经拥有的字符串匹配的列表。使用此shell并按两次ESC键,只有一个匹配的情况下,您将只获得自动完成功能。如果你想查看有多少个案你可以使用“ESC + =”组合然后继续写作。
恢复:
“ESC + ESC”=>只有匹配大小写时自动完成。
“ESC + =”=>显示所有匹配案例。
答案 2 :(得分:1)
这对我有用
输入〜/ .environ.ksh以下
set -o tabcomplete # Auto Tab complete
set -o emacs # History
答案 3 :(得分:0)
最后在.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.
答案 4 :(得分:0)
使用echo $ 0->检查外壳程序,如果这是ksh。 在.profile中输入以下内容:set -o vi