Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: New user questions



Andrew Morton wrote:
>prompt> cd /usr/src/li^R
>linux/                  linux-2.2.9/            linux-2.3.99-pre3/
>linux-akpm/
>
>So typing ^R in a command line produces a diectory listing of matching
>files and allows you to continue typing.

The widget list-choices does this.  Well, actually it produces a list
of possible completions, which are often context dependent (e.g., with
the new completion mechanism enabled, after "kill -" it'll give a list
of signal names).  If you actually want strictly a file listing, you'll
have to write your own widget.

list-choices is by default bound to ^D in the vi insert mode keymap, ^D
and = in vi command mode, and ESC ^D in Emacs mode.  delete-char-or-list
(^D in Emacs mode) behaves like list-choices when at the end of the line.

>pwold011:~> /sbin/shutdown
>shutdown: must be root.
>pwold011:~> sudo ^W
>
>Here, typing ^W will insert _all_ of the previous line at the prompt.
>(I'd expected get-line to do this, but it just beeps...)

You'll have to write your own widget if you want to do it that way.
Personally I use history expansion to do this.  "sudo !!" would
interpolate the previous command.  "sudo !!<TAB>" will expand it in
place, while the command is being edited.  With magic-space, "sudo !! "
will implicitly expand it when the trailing space is inserted.

>prompt> cp /foo/bar /zot/bop
>prompt> ls /fo^C
>
>Here, ^C will search back through the word history and insert
>'/foo/bar'.  If I immediately hit ^C again, it will rub out the 'o/bar'
>and search further back in history, so one can just keep hitting ^C.

_history_complete_word is supposed to do something like this, but I
don't know enough about it.

>This normally generates interrupt.  Is there a way of making it
>available to the interactive editor without globally sttying it? (The
>shell would need to restore the intr char when it leaves editing mode).

No.  You could temporarily stty it in precmd/preexec, but that has all
sorts of drawbacks.

>I would like to do something similar, but have it walk back through all
>the previous words, not just the final ones on each line:
>
>prompt> echo aaa bbb ccc ddd
>prompt> echo ^O        # Expands to echo ddd
>prompt> echo ^O^O      # Expands to echo ccc

Again, this is most easily done with history expansion.  In the above,
"!:1" will expand to "aaa", "!:2" to "bbb", and so on; "!$" expands to
the last word on the previous line.

>Is there a widget which deletes from the cursor to the end of line?

kill-line does the Emacs thing (delete up to, but not including, NL,
unless that's nothing, in which case it deletes the NL).  vi-kill-eol
deletes up to, but not including, NL.  Both are bound by default in the
appropriate editing modes.

>All the editor commands define a word separator as a space.  Is there a
>way of changing zsh's idea of word separators?  I would prefer that it
>consider '/' to be a separator as well.

Look at the parameter WORDCHARS.

>If asynchronous output mucks up the editor output, how to redraw it? 
>'clear-screen' will do the job, but I'd prefer it not clear the screen.

redisplay.

-zefram



Messages sorted by: Reverse Date, Date, Thread, Author