Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: Fwd: In Vi mode, show whether "insert" or "command" state is active
- X-seq: zsh-workers 33989
- From: Bart Schaefer <schaefer@xxxxxxxxxxxxxxxx>
- To: Jason Spiro <jasonspiro4@xxxxxxxxx>, zsh-workers@xxxxxxx
- Subject: Re: Fwd: In Vi mode, show whether "insert" or "command" state is active
- Date: Wed, 17 Dec 2014 00:23:22 -0800
- In-reply-to: <CAN2X26=YUSe95T0aMHxTCccXAE7ZeZPBN2aR=4L_tssVxxJLSQ@mail.gmail.com>
- List-help: <mailto:zsh-workers-help@zsh.org>
- List-id: Zsh Workers List <zsh-workers.zsh.org>
- List-post: <mailto:zsh-workers@zsh.org>
- Mailing-list: contact zsh-workers-help@xxxxxxx; run by ezmlm
- References: <CAN2X26=YUSe95T0aMHxTCccXAE7ZeZPBN2aR=4L_tssVxxJLSQ@mail.gmail.com>
On Dec 17, 2:13am, Jason Spiro wrote:
}
} ---------- Forwarded message ----------
}
} Zsh's Vi emulation does not show the user which mode is active. This
} is frustrating and confusing. (It's like an electric oven with no
} indicator to show whether the oven is on or off.)
}
} It would be very good if zsh, too, would show the user which mode was
} active. You can do this any way you like. I would like it if you did
} this by setting the cursor style, just as gVim does.
Check out this thread:
http://www.zsh.org/mla/users/2013/msg00534.html
(Requires ZSH_VERSION > 5.0.3 to avoid an infinite loop bug.)
} Here is how to set the cursor style (in supported terminals):
}
} Set cursor to blinking bar: echo -en "\e[5 q"
} Set cursor to blinking block: echo -en "\e[1 q"
This should do it for you (note that I don't have a terminal that
supports the #5 cursor so this is only partly tested):
zle-keymap-select() {
case $KEYMAP in
(vicmd) print -nR $'\e[5 q';;
(viins) print -nR $'\e[1 q';;
(*) print -nR $'\e[2 q';;
esac
}
zle -N zle-keymap-select
You will also need to run zle-keymap-select from zle-line-init to
set up the cursor properly on entry to the editor.
} The above commands definitely work in recent versions of iTerm2 (for
} Mac OS) and xterm. I haven't tested them in any other terminal
} emulators. Surely some terminal emulators do nothing at all in
} response to the above control sequences.
Gnome-terminal displays garbage characters, so this is not something
one can do in general. As far as I can tell even gVim does not have
this feature built in, you have to supply some .vimrc coding.
Messages sorted by:
Reverse Date,
Date,
Thread,
Author