1*if_ruby.txt* For Vim version 7.0aa. Last change: 2005 Oct 14 2 3 4 VIM REFERENCE MANUAL by Shugo Maeda 5 6The Ruby Interface to Vim *ruby* *Ruby* 7 8 91. Commands |ruby-commands| 102. The VIM module |ruby-vim| 113. VIM::Buffer objects |ruby-buffer| 124. VIM::Window objects |ruby-window| 135. Global variables |ruby-globals| 146. Dynamic loading |ruby-dynamic| 15 16{Vi does not have any of these commands} 17 *E266* *E267* *E268* *E269* *E270* *E271* *E272* *E273* 18 19The Ruby interface only works when Vim was compiled with the |+ruby| feature. 20 21The home page for ruby is http://www.ruby-lang.org/. You can find links for 22downloading Ruby there. 23 24============================================================================== 251. Commands *ruby-commands* 26 27 *:ruby* *:rub* 28:rub[y] {cmd} Execute Ruby command {cmd}. 29 30:rub[y] << {endpattern} 31{script} 32{endpattern} 33 Execute Ruby script {script}. 34 {endpattern} must NOT be preceded by any white space. 35 If {endpattern} is omitted, it defaults to a dot '.' 36 like for the |:append| and |:insert| commands. This 37 form of the |:ruby| command is mainly useful for 38 including ruby code in vim scripts. 39 Note: This command doesn't work when the Ruby feature 40 wasn't compiled in. To avoid errors, see 41 |script-here|. 42 43Example Vim script: > 44 45 function! RedGem() 46 ruby << EOF 47 class Garnet 48 def initialize(s) 49 @buffer = VIM::Buffer.current 50 vimputs(s) 51 end 52 def vimputs(s) 53 @buffer.append(@buffer.count,s) 54 end 55 end 56 gem = Garnet.new("pretty") 57 EOF 58 endfunction 59< 60 61 *:rubydo* *:rubyd* *E265* 62:[range]rubyd[o] {cmd} Evaluate Ruby command {cmd} for each line in the 63 [range], with $_ being set to the text of each line in 64 turn, without a trailing <EOL>. Setting $_ will change 65 the text, but note that it is not possible to add or 66 delete lines using this command. 67 The default for [range] is the whole file: "1,$". 68 69 *:rubyfile* *:rubyf* 70:rubyf[ile] {file} Execute the Ruby script in {file}. This is the same as 71 ":ruby load 'file'", but allows file name completion. 72 73Executing Ruby commands is not possible in the |sandbox|. 74 75============================================================================== 762. The VIM module *ruby-vim* 77 78Ruby code gets all of its access to vim via the "VIM" module. 79 80Overview > 81 print "Hello" # displays a message 82 VIM.command(cmd) # execute an ex command 83 num = VIM::Window.count # gets the number of windows 84 w = VIM::Window[n] # gets window "n" 85 cw = VIM::Window.current # gets the current window 86 num = VIM::Buffer.count # gets the number of buffers 87 b = VIM::Buffer[n] # gets buffer "n" 88 cb = VIM::Buffer.current # gets the current buffer 89 w.height = lines # sets the window height 90 w.cursor = [row, col] # sets the window cursor position 91 pos = w.cursor # gets an array [row, col] 92 name = b.name # gets the buffer file name 93 line = b[n] # gets a line from the buffer 94 num = b.count # gets the number of lines 95 b[n] = str # sets a line in the buffer 96 b.delete(n) # deletes a line 97 b.append(n, str) # appends a line after n 98< 99 100Module Functions: 101 102 *ruby-message* 103VIM::message({msg}) 104 Displays the message {msg}. 105 106 *ruby-set_option* 107VIM::set_option({arg}) 108 Sets a vim option. {arg} can be any argument that the ":set" command 109 accepts. Note that this means that no spaces are allowed in the 110 argument! See |:set|. 111 112 *ruby-command* 113VIM::command({cmd}) 114 Executes Ex command {cmd}. 115 116 *ruby-evaluate* 117VIM::evaluate({expr}) 118 Evaluates {expr} using the vim internal expression evaluator (see 119 |expression|). Returns the expression result as a string. 120 121============================================================================== 1223. VIM::Buffer objects *ruby-buffer* 123 124VIM::Buffer objects represent vim buffers. 125 126Class Methods: 127 128current Returns the current buffer object. 129count Returns the number of buffers. 130self[{n}] Returns the buffer object for the number {n}. The first number 131 is 0. 132 133Methods: 134 135name Returns the name of the buffer. 136number Returns the number of the buffer. 137count Returns the number of lines. 138length Returns the number of lines. 139self[{n}] Returns a line from the buffer. {n} is the line number. 140self[{n}] = {str} 141 Sets a line in the buffer. {n} is the line number. 142delete({n}) Deletes a line from the buffer. {n} is the line number. 143append({n}, {str}) 144 Appends a line after the line {n}. 145 146============================================================================== 1474. VIM::Window objects *ruby-window* 148 149VIM::Window objects represent vim windows. 150 151Class Methods: 152 153current Returns the current window object. 154count Returns the number of windows. 155self[{n}] Returns the window object for the number {n}. The first number 156 is 0. 157 158Methods: 159 160buffer Returns the buffer displayed in the window. 161height Returns the height of the window. 162height = {n} Sets the window height to {n}. 163width Returns the width of the window. 164width = {n} Sets the window width to {n}. 165cursor Returns a [row, col] array for the cursor position. 166cursor = [{row}, {col}] 167 Sets the cursor position to {row} and {col}. 168 169============================================================================== 1705. Global variables *ruby-globals* 171 172There are two global variables. 173 174$curwin The current window object. 175$curbuf The current buffer object. 176 177============================================================================== 1786. Dynamic loading *ruby-dynamic* 179 180On MS-Windows the Ruby library can be loaded dynamically. The |:version| 181output then includes |+ruby/dyn|. 182 183This means that Vim will search for the Ruby DLL file only when needed. When 184you don't use the Ruby interface you don't need it, thus you can use Vim 185without this DLL file. 186 187To use the Ruby interface the Ruby DLL must be in your search path. In a 188console window type "path" to see what directories are used. 189 190The name of the DLL must match the Ruby version Vim was compiled with. 191Currently the name is "ruby18.dll". That is for Ruby 1.8. To know for sure 192edit "gvim.exe" and search for "ruby\d*.dll\c". 193 194============================================================================== 195 vim:tw=78:ts=8:ft=help:norl: 196