here i type
:r !echo arg1 arg2
which says
read in the output of 'echo arg1 arg2'
yielding
arg1 arg2
into my file. if you don't want output you can do things like
:! cp % %.bak
which makes a backup of the current file
lastly, you can write nifty 'filters' that read stdin. my favourite is this
one
harp:~ > cat ~/bin/columnize
#!/usr/bin/env ruby
n = Integer((ARGV.shift || 1))
while((line = STDIN.gets))
line.strip!
fields = line.split(%r/\s+/)
rows =
while not fields.empty?
rows << (row = )
n.times do
field = fields.shift
row << field if field
end
end
rows.each{|row| puts row.join(' ')}
end
now, given a bunch of words like these
foo bar foobar barfoo a b c
i can highlight them using 'shift-v movement keys (hjkl)', which hightlights
by line. then, while highlighted, i type ':!columnize' which turns the words
into this
foo
bar
foobar
barfoo
a
b
c
if, instead, i type, ':!columnize 2', the output is
foo bar
foobar barfoo
a b
c
hope that gives you some ideas. btw. there is probably a way to do all that
in vim, writing little ruby scripts let's me use them from the shell too, as
in
cat list | columnize 3
and it's easy to do anyhow.
cheers.
-a
···
On Mon, 21 Aug 2006, Tim Pease wrote:
This is for all the Rubyists out there who can really rock the Vim.
How do you invoke a shell command and pass arguments to said command?
function Put(computer)
!rsync -v -rulptzCF string(getcwd()) . "/" string(a:computer) . ":"
. string(getcwd()) . "/"
endfunction
The idea here is that I want a Put function that takes a computer name
as an argument. This function will use rsync to copy all modified
files from the current working directory to the same directory on the
remote computer.
The reason for this is that I'm developing on Windows but my code
needs to run on Linux and Solaris. Pushing code to the machines where
autotest will run it is the desired outcome. I don't want to have to
drop out of vim and into a shell prompt each time I do this.
The function I gave above is total crap, but hopefully it conveys the
idea I want to accomplish. Any help or thoughts? A simple example,
maybe?
TwP
--
to foster inner awareness, introspection, and reasoning is more efficient than
meditation and prayer.
- h.h. the 14th dali lama