*if_ruby.txt* For Vim version 7.0aa. Last change: 2004 Mar 14 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. The home page for ruby is http://www.ruby-lang.org/. You can find links for downloading Ruby there. ============================================================================== 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 . Setting $_ will change the text, but note 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. Overview > print "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: