zsh-users
 help / color / mirror / code / Atom feed
From: "Bart Schaefer" <schaefer@candle.brasslantern.com>
To: Raju K V <raju.kurunkad@wipro.com>, zsh-users@sunsite.auc.dk
Subject: Re: use vim to vi
Date: Tue, 9 May 2000 11:00:32 +0000	[thread overview]
Message-ID: <1000509110032.ZM18045@candle.brasslantern.com> (raw)
In-Reply-To: <0FUA009H4DMVBA@la-la.cambridgesiliconradio.com>

On May 9, 10:42am, Peter Stephenson wrote:
} Subject: Re: use vim to vi
}
} > also in vi mode, how can I open the command line in vi (like 'v' command in
} > ksh)?
} 
} - The traditional zsh way of doing this (needed for 3.0.x) would involve
} pushing the current input somewhere, then running a command which uses
} what's there.  Where is `somewhere', buffer stack or history?

Should be the buffer stack.

} [...] if I use the buffer stack it's hard to get a command to read it.

Eh?  You must mean, hard to get an external command to read it?

The difficult part in 3.0 is keeping the vi command itself out of the
history.  You need to setopt hist_ignore_space.

------------
setopt hist_ignore_space
function vihist() {
   local tmp=${TMPPREFIX}${$}hist
   read -Erz >| $tmp
   vi $tmp
   print -Rz - "$(<$tmp)"
}
bindkey -v
bindkey -a '\M-q' push-input		# replaces push-line in 3.0.x
bindkey -a -s v '\M-qi vihist\n'
------------

The push-line bindings in the vi cmd map have gone away in 3.1, along
with a number of other non-vi-ish bindings.

BTW, if I do the "bindkey -a ..." without first "bindkey -v" the new key
bindings go ... somewhere ... but seemingly not into the vi cmd map (in
3.0.x, I still mean).  Is the command map reinitialized at "bindkey -v"
time or something?

} - In 3.1.x you might hope you could run `fc -e vi' in an editing widget.
} This doesn't seem to work.  I don't think the history is set up right.

Yup, there's nothing in the history for the current line until after the
accept-line is executed.  I tried playing with hend()/hbegin() inside of
the `print -s' implementation but got nowhere.

} - Next attempt is to use the contents of $BUFFER (which certainly does work
} and is a better way of doing it in zsh), dump it to a file and run vi on
} that.  vi is doing something very strange.

I get "vim: input is not a terminal" or something like that when I run it
from inside an editor widget.  That's fairly bizarre; what has ZLE done
with standard input?  The snippet above works fine, though.

-- 
Bart Schaefer                                 Brass Lantern Enterprises
http://www.well.com/user/barts              http://www.brasslantern.com


      reply	other threads:[~2000-05-09 11:02 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2000-05-09  6:41 Raju K V
2000-05-09  9:42 ` Peter Stephenson
2000-05-09 11:00   ` Bart Schaefer [this message]

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=1000509110032.ZM18045@candle.brasslantern.com \
    --to=schaefer@candle.brasslantern.com \
    --cc=raju.kurunkad@wipro.com \
    --cc=zsh-users@sunsite.auc.dk \
    /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).