[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: bind -x and multiple prompt/command lines
From: |
Jesper Nygårds |
Subject: |
Re: bind -x and multiple prompt/command lines |
Date: |
Tue, 22 Apr 2014 13:34:48 +0200 |
Here are simplified versions of two functions that I have written. Both are
inspired by similar functions floating around on the zsh mailing lists. The
first copies the previous word on the command line, and the second one
converts three consecutive dots (...) into ../.., and you can then keep
adding levels by typing . repeatedly.
Note that I am by no means an expert in Bash programming, so I'm sure the
same thing could be done more elegantly.
bind -x '".":_rationalise-dot'
bind -x '"\e:":_copy-previous-word'
_copy-previous-word () {
local -a words
eval words=($READLINE_LINE)
#NOTE: copies quoted words correctly, but does not insert with the
escape intact
READLINE_LINE+=${words[${#words[@]}-1]}
READLINE_POINT=${#READLINE_LINE}
}
_rationalise-dot () {
if [[ ${READLINE_LINE:0:$READLINE_POINT} == *\.\. ]]; then
READLINE_LINE="${READLINE_LINE:0:$READLINE_POINT}/..${READLINE_LINE:$READLINE_POINT}"
((READLINE_POINT+=3))
else
READLINE_LINE="${READLINE_LINE:0:$READLINE_POINT}.${READLINE_LINE:$READLINE_POINT}"
((READLINE_POINT++))
fi
}
On Fri, Apr 18, 2014 at 3:13 PM, Chet Ramey <chet.ramey@case.edu> wrote:
> On 4/15/14, 11:22 AM, Jesper Nygårds wrote:
> > I don't have any solution to offer, but I would like to second the wish
> for
> > this to work better, and for the same reason: I have written several very
> > useful functions for rewriting the command line, binding them with bind
> -x.
> > Like Rob, I have concluded that it does not work well with a multi-line
> > prompt, as the visual effect of the prompt moving further and further
> down
> > is rather unpleasant.
>
> Can you send me one or two so I can play around with them and see what the
> options are?
>
> Chet
>
> --
> ``The lyf so short, the craft so long to lerne.'' - Chaucer
> ``Ars longa, vita brevis'' - Hippocrates
> Chet Ramey, ITS, CWRU chet@case.edu
> http://cnswww.cns.cwru.edu/~chet/
>