*if_ruby.txt* For Vim version 6.2. Last change: 2001 Oct 25
VIM REFERENCE MANUAL by Shugo Maeda
The Ruby Interface to Vim *ruby* *Ruby*
1. Commands |ruby-commands|
2. The VIM module |ruby-vim|
3. VIM::Buffer objects |ruby-buffer|
4. VIM::Window objects |ruby-window|
5. Global variables |ruby-globals|
{Vi does not have any of these commands}
*E266* *E267* *E268* *E269* *E270* *E271* *E272* *E273*
The Ruby interface only works when Vim was compiled with the |+ruby| feature.
For MS-Windows you might find a Ruby library here:
http://www.dm4lab.to/~usa/ruby_en.html
1. Commands *ruby-commands* *:ruby* *:rub* :rub[y]{cmd}
Execute Ruby command{cmd}
. :rub[y] <<{endpattern}
{script}
{endpattern}
Execute Ruby script{script}
.{endpattern}
must NOT be preceded by any white space. If{endpattern}
is omitted, it defaults to a dot '.' like for the |:append| and |:insert| commands. This form of the |:ruby| command is mainly useful for including ruby code in vim scripts.Note:
This command doesn't work when the Ruby feature wasn't compiled in. To avoid errors, see |script-here|. Example Vim script:
function! RedGem()
ruby << EOF
class Garnet
def initialize(s)
@buffer = VIM::Buffer.current
vimputs(s)
end
def vimputs(s)
@buffer.append(@buffer.count,s)
end
end
gem = Garnet.new("pretty")
EOF
endfunction
*:rubydo* *:rubyd* *E265* :[range]
rubyd[o]{cmd}
Evaluate Ruby command{cmd}
for each line in the[range]
, with $_ being set to the text of each line in turn, without a trailing<EOL>
. Setting $_ will change the text, butnote
that it is not possible to add or delete lines using this command. The default for[range]
is the whole file: "1,$". *:rubyfile* *:rubyf* :rubyf[ile]{file}
Execute the Ruby script in{file}
. This is the same as ":ruby load 'file'", but allows file name completion. Executing Ruby commands is not possible in the |sandbox|.
2. The VIM module *ruby-vim* Ruby code gets all of its access to vim via the "VIM" module. Overviewprint "Hello" # displays a message
VIM.command(cmd) # execute an ex command
num = VIM::Window.count # gets the number of windows
w = VIM::Window[n] # gets window "n"
cw = VIM::Window.current # gets the current window
num = VIM::Buffer.count # gets the number of buffers
b = VIM::Buffer[n] # gets buffer "n"
cb = VIM::Buffer.current # gets the current buffer
w.height = lines # sets the window height
w.cursor = [row, col] # sets the window cursor position
pos = w.cursor # gets an array [row, col]
name = b.name # gets the buffer file name
line = b[n] # gets a line from the buffer
num = b.count # gets the number of lines
b[n] = str # sets a line in the buffer
b.delete(n) # deletes a line
b.append(n, str) # appends a line after n
Module Functions: *ruby-message* VIM::message({msg}
) Displays the message{msg}
. *ruby-set_option* VIM::set_option({arg}
) Sets a vim option.{arg}
can be any argument that the ":set" command accepts.Note
that this means that no spaces are allowed in the argument! See |:set|. *ruby-command* VIM::command({cmd}
) Executes Ex command{cmd}
. *ruby-evaluate* VIM::evaluate({expr}
) Evaluates{expr}
using the vim internal expression evaluator (see |expression|). Returns the expression result as a string.
3. VIM::Buffer objects *ruby-buffer* VIM::Buffer objects represent vim buffers. Class Methods: current Returns the current buffer object. count Returns the number of buffers. self[{n}
] Returns the buffer object for the number{n}
. The first number is 0. Methods: name Returns the name of the buffer. number Returns the number of the buffer. count Returns the number of lines. length Returns the number of lines. self[{n}
] Returns a line from the buffer.{n}
is the line number. self[{n}
] ={str}
Sets a line in the buffer.{n}
is the line number. delete({n}
) Deletes a line from the buffer.{n}
is the line number. append({n}
,{str}
) Appends a line after the line{n}
.
4. VIM::Window objects *ruby-window* VIM::Window objects represent vim windows. Class Methods: current Returns the current window object. count Returns the number of windows. self[{n}
] Returns the window object for the number{n}
. The first number is 0. Methods: buffer Returns the buffer displayed in the window. height Returns the height of the window. height ={n}
Sets the window height to{n}
. cursor Returns a [row, col] array for the cursor position. cursor = [{row}
,{col}
] Sets the cursor position to{row}
and{col}
.
4. Global variables *ruby-globals* There are two global variables. $curwin The current window object. $curbuf The current buffer object.
vim:tw=78:ts=8:ft=help:norl:
Generated by vim2html on Thu Jun 17 12:17:02 CEST 2004