zsh-workers
 help / color / mirror / code / Atom feed
From: Bart Schaefer <schaefer@brasslantern.com>
To: Jason Spiro <jasonspiro4@gmail.com>, zsh-workers@zsh.org
Subject: Re: Fwd: In Vi mode, show whether "insert" or "command" state is active
Date: Wed, 17 Dec 2014 00:23:22 -0800	[thread overview]
Message-ID: <141217002322.ZM32216@torch.brasslantern.com> (raw)
In-Reply-To: <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.


  parent reply	other threads:[~2014-12-17  8:23 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-12-17  7:13 Jason Spiro
2014-12-17  7:58 ` Nathan Schwarz
2014-12-17 16:55   ` Bart Schaefer
2014-12-17 18:27     ` Oliver Kiddle
2014-12-17  8:23 ` Bart Schaefer [this message]
2014-12-22  0:07 Jason Spiro
2014-12-22  1:57 ` Bart Schaefer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=141217002322.ZM32216@torch.brasslantern.com \
    --to=schaefer@brasslantern.com \
    --cc=jasonspiro4@gmail.com \
    --cc=zsh-workers@zsh.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).