Sté*_*las 17
至set:
set -o vi
Run Code Online (Sandbox Code Playgroud)
或者:
set -o emacs
Run Code Online (Sandbox Code Playgroud)
(设置一个set -o vi +o vi会取消设置另一个。您可以同时取消设置)
去检查:
if [[ -o emacs ]]; then
echo emacs mode
elif [[ -o vi ]]; then
echo vi mode
else
echo neither
fi
Run Code Online (Sandbox Code Playgroud)
该语法来自ksh. 这set -o vi是POSIX。set -o emacs不是(因为 Richard Stallman 反对emacsPOSIX 指定的模式)但在 shell 实现中非常普遍。一些 shell 支持额外的编辑模式。[[ -o option ]]不是 POSIX,但受 ksh、bash 和 zsh 支持。[ -o option ]由bash, kshand支持yash(请注意,-o它也是 的二元 OR 运算符[)。
由于您的问题是关于 bash 的:
要为每个新会话永久设置它:
echo 'set -o vi' >> ~/.bashrc
Run Code Online (Sandbox Code Playgroud)
或(推荐),在 ./inputrc 中添加(或更改)一行:
set editing-mode vi
Run Code Online (Sandbox Code Playgroud)
这将设置 readline 的编辑模式,除了 bash 之外,它被其他几个程序使用。
很容易取消设置这两个选项:
shopt -ou vi emacs
Run Code Online (Sandbox Code Playgroud)
要设置一个,或者:
set -o vi
Run Code Online (Sandbox Code Playgroud)
或者
shopt -os vi
Run Code Online (Sandbox Code Playgroud)
对于emacs. 设置vi取消设置emacs,反之亦然。
列出状态:
$ shopt -op emacs
set +o emacs
$ shopt -op vi
set -o vi
Run Code Online (Sandbox Code Playgroud)
或者同时进行:
$ shopt -op emacs vi
set +o emacs
set -o vi
Run Code Online (Sandbox Code Playgroud)
测试是否vi设置:
shopt -oq vi && echo vi is set
Run Code Online (Sandbox Code Playgroud)
或(ksh 语法):
[[ -o vi ]] && echo vi is set
Run Code Online (Sandbox Code Playgroud)
电子邮件:
shopt -oq emacs && echo emacs is set
Run Code Online (Sandbox Code Playgroud)
或者:
[[ -o emacs ]] && echo emacs is set
Run Code Online (Sandbox Code Playgroud)
或者,要测试没有设置选项:
! ( shopt -oq emacs || shopt -oq vi ) && echo no option is set
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3446 次 |
| 最近记录: |