In ZSH line editor, how to insert a new line?
Say I am editing a single line, with my cursor at the indicated position:
$ abc ꕯ def ghi
I would now like to split into two lines and continue editing (like hitting ENTER would do in a text editor):
$ abc
$ ꕯ def ghi
Is there a way to do this in ZSH?
In ZLE's emacs
mode:
… the Control+V character (ASCII SYN
) is bound to the quoted-insert
widget. So just enter Control+V then Control+J (ASCII LF
).
In ZLE's vi
mode:
… the Control+Q (ASCII DC1
) and Control+V characters are bound to the vi-quoted-insert
widget. So again, in insert mode, just enter Control+V, then Control+J.
Remember:
Newlines in the middle of command lines separate commands. (In the terminology of the zsh
manual: both newline and ;
terminate a list.) Quote the newline if you don't want that.
Use ⌥↩︎ (Option / Alt+ Return), or ⎋, ↩︎ (Esc then Return).
This will only work if you've called bindkey -e
previously or somewhere in your .zshrc.
Here is a "vimmer" way in ZLE vi-mode that does not involve ctrl
chords.
if your line looks like follows, and you are in normal mode: $ abc ꕯ def ghi
type this: DoESCp
total key presses: 4.
explanation:
`D` cuts from cursor to the end of the line and places cut string in register
`o`opens a new line places the cursor in it, and switches to insert mode
`<esc>` switches to normal pode
`p` paste register content.