1*if_ruby.txt* For Vim version 7.4. Last change: 2015 Dec 03 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}. A command to try it out: > 29 :ruby print "Hello" 30 31:rub[y] << {endpattern} 32{script} 33{endpattern} 34 Execute Ruby script {script}. 35 {endpattern} must NOT be preceded by any white space. 36 If {endpattern} is omitted, it defaults to a dot '.' 37 like for the |:append| and |:insert| commands. This 38 form of the |:ruby| command is mainly useful for 39 including ruby code in vim scripts. 40 Note: This command doesn't work when the Ruby feature 41 wasn't compiled in. To avoid errors, see 42 |script-here|. 43 44Example Vim script: > 45 46 function! RedGem() 47 ruby << EOF 48 class Garnet 49 def initialize(s) 50 @buffer = Vim::Buffer.current 51 vimputs(s) 52 end 53 def vimputs(s) 54 @buffer.append(@buffer.count,s) 55 end 56 end 57 gem = Garnet.new("pretty") 58 EOF 59 endfunction 60< 61 62 *:rubydo* *:rubyd* *E265* 63:[range]rubyd[o] {cmd} Evaluate Ruby command {cmd} for each line in the 64 [range], with $_ being set to the text of each line in 65 turn, without a trailing <EOL>. Setting $_ will change 66 the text, but note that it is not possible to add or 67 delete lines using this command. 68 The default for [range] is the whole file: "1,$". 69 70 *:rubyfile* *:rubyf* 71:rubyf[ile] {file} Execute the Ruby script in {file}. This is the same as 72 ":ruby load 'file'", but allows file name completion. 73 74Executing Ruby commands is not possible in the |sandbox|. 75 76============================================================================== 772. The Vim module *ruby-vim* 78 79Ruby code gets all of its access to vim via the "Vim" module. 80 81Overview: > 82 print "Hello" # displays a message 83 Vim.command(cmd) # execute an Ex command 84 num = Vim::Window.count # gets the number of windows 85 w = Vim::Window[n] # gets window "n" 86 cw = Vim::Window.current # gets the current window 87 num = Vim::Buffer.count # gets the number of buffers 88 b = Vim::Buffer[n] # gets buffer "n" 89 cb = Vim::Buffer.current # gets the current buffer 90 w.height = lines # sets the window height 91 w.cursor = [row, col] # sets the window cursor position 92 pos = w.cursor # gets an array [row, col] 93 name = b.name # gets the buffer file name 94 line = b[n] # gets a line from the buffer 95 num = b.count # gets the number of lines 96 b[n] = str # sets a line in the buffer 97 b.delete(n) # deletes a line 98 b.append(n, str) # appends a line after n 99 line = Vim::Buffer.current.line # gets the current line 100 num = Vim::Buffer.current.line_number # gets the current line number 101 Vim::Buffer.current.line = "test" # sets the current line number 102< 103 104Module Functions: 105 106 *ruby-message* 107Vim::message({msg}) 108 Displays the message {msg}. 109 110 *ruby-set_option* 111Vim::set_option({arg}) 112 Sets a vim option. {arg} can be any argument that the ":set" command 113 accepts. Note that this means that no spaces are allowed in the 114 argument! See |:set|. 115 116 *ruby-command* 117Vim::command({cmd}) 118 Executes Ex command {cmd}. 119 120 *ruby-evaluate* 121Vim::evaluate({expr}) 122 Evaluates {expr} using the vim internal expression evaluator (see 123 |expression|). Returns the expression result as: 124 - a Integer if the Vim expression evaluates to a number 125 - a Float if the Vim expression evaluates to a float 126 - a String if the Vim expression evaluates to a string 127 - a Array if the Vim expression evaluates to a Vim list 128 - a Hash if the Vim expression evaluates to a Vim dictionary 129 Dictionaries and lists are recursively expanded. 130 131============================================================================== 1323. Vim::Buffer objects *ruby-buffer* 133 134Vim::Buffer objects represent vim buffers. 135 136Class Methods: 137 138current Returns the current buffer object. 139count Returns the number of buffers. 140self[{n}] Returns the buffer object for the number {n}. The first number 141 is 0. 142 143Methods: 144 145name Returns the name of the buffer. 146number Returns the number of the buffer. 147count Returns the number of lines. 148length Returns the number of lines. 149self[{n}] Returns a line from the buffer. {n} is the line number. 150self[{n}] = {str} 151 Sets a line in the buffer. {n} is the line number. 152delete({n}) Deletes a line from the buffer. {n} is the line number. 153append({n}, {str}) 154 Appends a line after the line {n}. 155line Returns the current line of the buffer if the buffer is 156 active. 157line = {str} Sets the current line of the buffer if the buffer is active. 158line_number Returns the number of the current line if the buffer is 159 active. 160 161============================================================================== 1624. Vim::Window objects *ruby-window* 163 164Vim::Window objects represent vim windows. 165 166Class Methods: 167 168current Returns the current window object. 169count Returns the number of windows. 170self[{n}] Returns the window object for the number {n}. The first number 171 is 0. 172 173Methods: 174 175buffer Returns the buffer displayed in the window. 176height Returns the height of the window. 177height = {n} Sets the window height to {n}. 178width Returns the width of the window. 179width = {n} Sets the window width to {n}. 180cursor Returns a [row, col] array for the cursor position. 181cursor = [{row}, {col}] 182 Sets the cursor position to {row} and {col}. 183 184============================================================================== 1855. Global variables *ruby-globals* 186 187There are two global variables. 188 189$curwin The current window object. 190$curbuf The current buffer object. 191 192============================================================================== 1936. Dynamic loading *ruby-dynamic* 194 195On MS-Windows and Unix the Ruby library can be loaded dynamically. The 196|:version| output then includes |+ruby/dyn|. 197 198This means that Vim will search for the Ruby DLL file or shared library only 199when needed. When you don't use the Ruby interface you don't need it, thus 200you can use Vim even though this library file is not on your system. 201 202 203MS-Windows ~ 204 205You need to install the right version of Ruby for this to work. You can find 206the package to download from: 207http://www.garbagecollect.jp/ruby/mswin32/en/download/release.html 208Currently that is ruby-1.9.1-p429-i386-mswin32.zip 209 210To use the Ruby interface the Ruby DLL must be in your search path. In a 211console window type "path" to see what directories are used. The 'rubydll' 212option can be also used to specify the Ruby DLL. 213 214The name of the DLL must match the Ruby version Vim was compiled with. 215Currently the name is "msvcrt-ruby191.dll". That is for Ruby 1.9.1. To know 216for sure edit "gvim.exe" and search for "ruby\d*.dll\c". 217 218If you want to build Vim with Ruby 1.9.1, you need to edit the config.h file 219and comment-out the check for _MSC_VER. 220You may also need to rename the include directory name to match the version, 221strangely for Ruby 1.9.3 the directory is called 1.9.1. 222 223 224Unix ~ 225 226The 'rubydll' option can be used to specify the Ruby shared library file 227instead of DYNAMIC_RUBY_DLL file what was specified at compile time. The 228version of the shared library must match the Ruby version Vim was compiled 229with. 230 231============================================================================== 232 vim:tw=78:ts=8:ft=help:norl: 233