From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 3087 invoked from network); 30 Mar 2000 13:28:57 -0000 Received: from sunsite.auc.dk (130.225.51.30) by ns1.primenet.com.au with SMTP; 30 Mar 2000 13:28:57 -0000 Received: (qmail 2988 invoked by alias); 30 Mar 2000 13:28:00 -0000 Mailing-List: contact zsh-users-help@sunsite.auc.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 2994 Received: (qmail 2950 invoked from network); 30 Mar 2000 13:27:55 -0000 Subject: Re: New user questions In-Reply-To: <38E2C6AA.62D027CD@asiapacificm01.nt.com> from Andrew Morton at "Mar 30, 2000 03:14:50 am" To: Andrew Morton Date: Thu, 30 Mar 2000 14:27:37 +0100 (BST) CC: zsh-users@sunsite.auc.dk X-Mailer: ELM [version 2.4ME+ PL66 (25)] MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Message-Id: From: Zefram 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 !!" 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