There are many ways to do what you're asking for.
1) Don't bother because u = undo is that fast and copy the text manually
to a new buffer (c-w s then paste).
2) If you really need it that often that you want to write a script for
this is most simple:
map \doit :%! external-app > foo.txt<cr>u<c-w>s:r foo.txt<cr>
note that u undoes replacing the lines
now you may want to use a tempfile instead of foo.txt ...
Like this you can use <line1> and <line2> or such see :h command etc and
use system (which accepts input) which you can get by :h getline()
and join by :h join() (but \r\n may be replaced by \n then
thus byte count may differ)..
You can then paste the output of system to the new buffer by
puts=split(system("command", join(getline(lnum1,lnum2))))
or by using call append() or the like.
If you don't want to bother about all this lnum1 lnum2 stuff you can
also just yank to register by y and access that which would be shortest:
map \doit y<c-w>s:call append(split(system('command',@"),"\n"))<cr>
or such - but it pollutes your yank registers .. (you could use other
registers instead)
Marc Weber
--
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
No comments:
Post a Comment