How to set and determine the command-line editing mode of Bash?
How to set the vi
or emacs
command line editing mode the Bash AND how to determine which mode is currently set?
bash emacs vi
add a comment |
How to set the vi
or emacs
command line editing mode the Bash AND how to determine which mode is currently set?
bash emacs vi
add a comment |
How to set the vi
or emacs
command line editing mode the Bash AND how to determine which mode is currently set?
bash emacs vi
How to set the vi
or emacs
command line editing mode the Bash AND how to determine which mode is currently set?
bash emacs vi
bash emacs vi
edited Nov 30 at 6:13
bignose
22528
22528
asked Nov 29 at 19:02
Blcknx
1375
1375
add a comment |
add a comment |
3 Answers
3
active
oldest
votes
Since your question is specific about bash:
To set it permanently for every new session:
echo 'set -o vi' >> ~/.bashrc
or (recommended), add (or change) a line in ./inputrc:
set editing-mode vi
This will set the editing mode of readline which is used by several other programs beside bash.
It is easy to unset both options:
shopt -ou vi emacs
To set one, either:
set -o vi
Or
shopt -os vi
The same for emacs
. Setting vi
unsets emacs
and viceversa.
To list the state:
$ shopt -op emacs
set +o emacs
$ shopt -op vi
set -o vi
Or both at once:
$ shopt -op emacs vi
set +o emacs
set -o vi
To test if vi
is set:
shopt -oq vi && echo vi is set
Or (ksh syntax):
[[ -o vi ]] && echo vi is set
emacs:
shopt -oq emacs && echo emacs is set
Or:
[[ -o emacs ]] && echo emacs is set
or, to test that no option is set:
! ( shopt -oq emacs || shopt -oq vi ) && echo no option is set
add a comment |
To set
:
set -o vi
Or:
set -o emacs
(setting one unsets the other. You can do set -o vi +o vi
to unset both)
To check:
if [[ -o emacs ]]; then
echo emacs mode
elif [[ -o vi ]]; then
echo vi mode
else
echo neither
fi
That syntax comes from ksh
. The set -o vi
is POSIX. set -o emacs
is not (as Richard Stallman objected to the emacs
mode being specified by POSIX) but very common among shell implementations. Some shells support extra editing modes. [[ -o option ]]
is not POSIX, but supported by ksh, bash and zsh. [ -o option ]
is supported by bash
, ksh
and yash
(note that -o
is also a binary OR operator for [
).
It works and it is surprising, that it is that difficult to determine the mode.
– Blcknx
Nov 29 at 19:06
3
set -o | egrep -w '^emacs|vi'
will return whether emacs or vi is set.
– Stephen Harris
Nov 29 at 19:10
add a comment |
There is also bind -V | grep editing-mode
.
man bash
is huge but well worth reading in depth.
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "106"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f484997%2fhow-to-set-and-determine-the-command-line-editing-mode-of-bash%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
Since your question is specific about bash:
To set it permanently for every new session:
echo 'set -o vi' >> ~/.bashrc
or (recommended), add (or change) a line in ./inputrc:
set editing-mode vi
This will set the editing mode of readline which is used by several other programs beside bash.
It is easy to unset both options:
shopt -ou vi emacs
To set one, either:
set -o vi
Or
shopt -os vi
The same for emacs
. Setting vi
unsets emacs
and viceversa.
To list the state:
$ shopt -op emacs
set +o emacs
$ shopt -op vi
set -o vi
Or both at once:
$ shopt -op emacs vi
set +o emacs
set -o vi
To test if vi
is set:
shopt -oq vi && echo vi is set
Or (ksh syntax):
[[ -o vi ]] && echo vi is set
emacs:
shopt -oq emacs && echo emacs is set
Or:
[[ -o emacs ]] && echo emacs is set
or, to test that no option is set:
! ( shopt -oq emacs || shopt -oq vi ) && echo no option is set
add a comment |
Since your question is specific about bash:
To set it permanently for every new session:
echo 'set -o vi' >> ~/.bashrc
or (recommended), add (or change) a line in ./inputrc:
set editing-mode vi
This will set the editing mode of readline which is used by several other programs beside bash.
It is easy to unset both options:
shopt -ou vi emacs
To set one, either:
set -o vi
Or
shopt -os vi
The same for emacs
. Setting vi
unsets emacs
and viceversa.
To list the state:
$ shopt -op emacs
set +o emacs
$ shopt -op vi
set -o vi
Or both at once:
$ shopt -op emacs vi
set +o emacs
set -o vi
To test if vi
is set:
shopt -oq vi && echo vi is set
Or (ksh syntax):
[[ -o vi ]] && echo vi is set
emacs:
shopt -oq emacs && echo emacs is set
Or:
[[ -o emacs ]] && echo emacs is set
or, to test that no option is set:
! ( shopt -oq emacs || shopt -oq vi ) && echo no option is set
add a comment |
Since your question is specific about bash:
To set it permanently for every new session:
echo 'set -o vi' >> ~/.bashrc
or (recommended), add (or change) a line in ./inputrc:
set editing-mode vi
This will set the editing mode of readline which is used by several other programs beside bash.
It is easy to unset both options:
shopt -ou vi emacs
To set one, either:
set -o vi
Or
shopt -os vi
The same for emacs
. Setting vi
unsets emacs
and viceversa.
To list the state:
$ shopt -op emacs
set +o emacs
$ shopt -op vi
set -o vi
Or both at once:
$ shopt -op emacs vi
set +o emacs
set -o vi
To test if vi
is set:
shopt -oq vi && echo vi is set
Or (ksh syntax):
[[ -o vi ]] && echo vi is set
emacs:
shopt -oq emacs && echo emacs is set
Or:
[[ -o emacs ]] && echo emacs is set
or, to test that no option is set:
! ( shopt -oq emacs || shopt -oq vi ) && echo no option is set
Since your question is specific about bash:
To set it permanently for every new session:
echo 'set -o vi' >> ~/.bashrc
or (recommended), add (or change) a line in ./inputrc:
set editing-mode vi
This will set the editing mode of readline which is used by several other programs beside bash.
It is easy to unset both options:
shopt -ou vi emacs
To set one, either:
set -o vi
Or
shopt -os vi
The same for emacs
. Setting vi
unsets emacs
and viceversa.
To list the state:
$ shopt -op emacs
set +o emacs
$ shopt -op vi
set -o vi
Or both at once:
$ shopt -op emacs vi
set +o emacs
set -o vi
To test if vi
is set:
shopt -oq vi && echo vi is set
Or (ksh syntax):
[[ -o vi ]] && echo vi is set
emacs:
shopt -oq emacs && echo emacs is set
Or:
[[ -o emacs ]] && echo emacs is set
or, to test that no option is set:
! ( shopt -oq emacs || shopt -oq vi ) && echo no option is set
edited Nov 29 at 23:42
answered Nov 29 at 22:58
Isaac
11.1k11648
11.1k11648
add a comment |
add a comment |
To set
:
set -o vi
Or:
set -o emacs
(setting one unsets the other. You can do set -o vi +o vi
to unset both)
To check:
if [[ -o emacs ]]; then
echo emacs mode
elif [[ -o vi ]]; then
echo vi mode
else
echo neither
fi
That syntax comes from ksh
. The set -o vi
is POSIX. set -o emacs
is not (as Richard Stallman objected to the emacs
mode being specified by POSIX) but very common among shell implementations. Some shells support extra editing modes. [[ -o option ]]
is not POSIX, but supported by ksh, bash and zsh. [ -o option ]
is supported by bash
, ksh
and yash
(note that -o
is also a binary OR operator for [
).
It works and it is surprising, that it is that difficult to determine the mode.
– Blcknx
Nov 29 at 19:06
3
set -o | egrep -w '^emacs|vi'
will return whether emacs or vi is set.
– Stephen Harris
Nov 29 at 19:10
add a comment |
To set
:
set -o vi
Or:
set -o emacs
(setting one unsets the other. You can do set -o vi +o vi
to unset both)
To check:
if [[ -o emacs ]]; then
echo emacs mode
elif [[ -o vi ]]; then
echo vi mode
else
echo neither
fi
That syntax comes from ksh
. The set -o vi
is POSIX. set -o emacs
is not (as Richard Stallman objected to the emacs
mode being specified by POSIX) but very common among shell implementations. Some shells support extra editing modes. [[ -o option ]]
is not POSIX, but supported by ksh, bash and zsh. [ -o option ]
is supported by bash
, ksh
and yash
(note that -o
is also a binary OR operator for [
).
It works and it is surprising, that it is that difficult to determine the mode.
– Blcknx
Nov 29 at 19:06
3
set -o | egrep -w '^emacs|vi'
will return whether emacs or vi is set.
– Stephen Harris
Nov 29 at 19:10
add a comment |
To set
:
set -o vi
Or:
set -o emacs
(setting one unsets the other. You can do set -o vi +o vi
to unset both)
To check:
if [[ -o emacs ]]; then
echo emacs mode
elif [[ -o vi ]]; then
echo vi mode
else
echo neither
fi
That syntax comes from ksh
. The set -o vi
is POSIX. set -o emacs
is not (as Richard Stallman objected to the emacs
mode being specified by POSIX) but very common among shell implementations. Some shells support extra editing modes. [[ -o option ]]
is not POSIX, but supported by ksh, bash and zsh. [ -o option ]
is supported by bash
, ksh
and yash
(note that -o
is also a binary OR operator for [
).
To set
:
set -o vi
Or:
set -o emacs
(setting one unsets the other. You can do set -o vi +o vi
to unset both)
To check:
if [[ -o emacs ]]; then
echo emacs mode
elif [[ -o vi ]]; then
echo vi mode
else
echo neither
fi
That syntax comes from ksh
. The set -o vi
is POSIX. set -o emacs
is not (as Richard Stallman objected to the emacs
mode being specified by POSIX) but very common among shell implementations. Some shells support extra editing modes. [[ -o option ]]
is not POSIX, but supported by ksh, bash and zsh. [ -o option ]
is supported by bash
, ksh
and yash
(note that -o
is also a binary OR operator for [
).
edited Nov 29 at 19:14
answered Nov 29 at 19:05
Stéphane Chazelas
299k54564913
299k54564913
It works and it is surprising, that it is that difficult to determine the mode.
– Blcknx
Nov 29 at 19:06
3
set -o | egrep -w '^emacs|vi'
will return whether emacs or vi is set.
– Stephen Harris
Nov 29 at 19:10
add a comment |
It works and it is surprising, that it is that difficult to determine the mode.
– Blcknx
Nov 29 at 19:06
3
set -o | egrep -w '^emacs|vi'
will return whether emacs or vi is set.
– Stephen Harris
Nov 29 at 19:10
It works and it is surprising, that it is that difficult to determine the mode.
– Blcknx
Nov 29 at 19:06
It works and it is surprising, that it is that difficult to determine the mode.
– Blcknx
Nov 29 at 19:06
3
3
set -o | egrep -w '^emacs|vi'
will return whether emacs or vi is set.– Stephen Harris
Nov 29 at 19:10
set -o | egrep -w '^emacs|vi'
will return whether emacs or vi is set.– Stephen Harris
Nov 29 at 19:10
add a comment |
There is also bind -V | grep editing-mode
.
man bash
is huge but well worth reading in depth.
add a comment |
There is also bind -V | grep editing-mode
.
man bash
is huge but well worth reading in depth.
add a comment |
There is also bind -V | grep editing-mode
.
man bash
is huge but well worth reading in depth.
There is also bind -V | grep editing-mode
.
man bash
is huge but well worth reading in depth.
answered Nov 29 at 22:25
studog
26516
26516
add a comment |
add a comment |
Thanks for contributing an answer to Unix & Linux Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f484997%2fhow-to-set-and-determine-the-command-line-editing-mode-of-bash%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown