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

Re: Substituting grep (and other) output to open files in Vim

On Tue, 10 May 2011, Richard Hartmann wrote:

Hi all,

I would like to be able to do the following, but I am stuck. Every pair of lines is what I would execute and what it would be transferred to. I am assuming that every file "name" (i.e. including colons etc) I am running Vim on does not exist. If it exists, it should be opened instead of magic happening. "foo" exists while "foo:" etc do not.

vim foo:
vim foo

vim foo:bar
vim foo

vim foo:123
vim foo +123

vim foo:123:
vim foo +123

vim foo:123:bar
vim foo +123

Ideally, the same would happen for vimdiff. And yes, vimdiff heeds only one +n and the last one on the command line wins. That's fine.

I am pretty sure this is trivial to do in zsh, but as I said I am at a loss as to how..

I'm at a loss as to "why". :-)

What's the actual problem you're trying to solve? These don't seem like things you would want to type, so it looks like you're joining a bunch of parameters with colons only to want to separate them out to separate arguments later. If you keep them in an array in the first place, you don't have this problem. And maybe it'd be easier to get what you want.

e.g. (without handling the ':bar' portion since I don't know what it would be)

vimargs=( vim )
(( $+file )) && vimargs+=( $file )
(( $+line )) && vimargs+=( +$line )


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