blob: 0a32d87851eba722404e41e45b3240ebdf4a6bca [file] [log] [blame]
Bram Moolenaar3b1db362013-08-10 15:00:24 +02001*if_ruby.txt* For Vim version 7.4. Last change: 2012 Aug 02
Bram Moolenaar071d4272004-06-13 20:20:40 +00002
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|
Bram Moolenaara5792f52005-11-23 21:25:05 +0000146. Dynamic loading |ruby-dynamic|
Bram Moolenaar071d4272004-06-13 20:20:40 +000015
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*
Bram Moolenaar9b451252012-08-15 17:43:31 +020028:rub[y] {cmd} Execute Ruby command {cmd}. A command to try it out: >
29 :ruby print "Hello"
Bram Moolenaar071d4272004-06-13 20:20:40 +000030
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 '.'
Bram Moolenaar402d2fe2005-04-15 21:00:38 +000037 like for the |:append| and |:insert| commands. This
Bram Moolenaar071d4272004-06-13 20:20:40 +000038 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
Bram Moolenaar402d2fe2005-04-15 21:00:38 +000065 turn, without a trailing <EOL>. Setting $_ will change
Bram Moolenaar071d4272004-06-13 20:20:40 +000066 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 >
Bram Moolenaar899dddf2006-03-26 21:06:50 +000082 print "Hello" # displays a message
Bram Moolenaar8f3f58f2010-01-06 20:52:26 +010083 VIM.command(cmd) # execute an Ex command
Bram Moolenaar899dddf2006-03-26 21:06:50 +000084 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
Bram Moolenaar071d4272004-06-13 20:20:40 +0000102<
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
Bram Moolenaar402d2fe2005-04-15 21:00:38 +0000123 |expression|). Returns the expression result as a string.
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000124 A |List| is turned into a string by joining the items and inserting
125 line breaks.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000126
127==============================================================================
1283. VIM::Buffer objects *ruby-buffer*
129
130VIM::Buffer objects represent vim buffers.
131
132Class Methods:
133
134current Returns the current buffer object.
135count Returns the number of buffers.
Bram Moolenaar402d2fe2005-04-15 21:00:38 +0000136self[{n}] Returns the buffer object for the number {n}. The first number
Bram Moolenaar071d4272004-06-13 20:20:40 +0000137 is 0.
138
139Methods:
140
141name Returns the name of the buffer.
142number Returns the number of the buffer.
143count Returns the number of lines.
144length Returns the number of lines.
145self[{n}] Returns a line from the buffer. {n} is the line number.
146self[{n}] = {str}
147 Sets a line in the buffer. {n} is the line number.
148delete({n}) Deletes a line from the buffer. {n} is the line number.
149append({n}, {str})
150 Appends a line after the line {n}.
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000151line Returns the current line of the buffer if the buffer is
Bram Moolenaar899dddf2006-03-26 21:06:50 +0000152 active.
153line = {str} Sets the current line of the buffer if the buffer is active.
154line_number Returns the number of the current line if the buffer is
155 active.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000156
157==============================================================================
1584. VIM::Window objects *ruby-window*
159
160VIM::Window objects represent vim windows.
161
162Class Methods:
163
164current Returns the current window object.
165count Returns the number of windows.
Bram Moolenaar402d2fe2005-04-15 21:00:38 +0000166self[{n}] Returns the window object for the number {n}. The first number
Bram Moolenaar071d4272004-06-13 20:20:40 +0000167 is 0.
168
169Methods:
170
171buffer Returns the buffer displayed in the window.
172height Returns the height of the window.
173height = {n} Sets the window height to {n}.
Bram Moolenaare344bea2005-09-01 20:46:49 +0000174width Returns the width of the window.
175width = {n} Sets the window width to {n}.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000176cursor Returns a [row, col] array for the cursor position.
177cursor = [{row}, {col}]
178 Sets the cursor position to {row} and {col}.
179
180==============================================================================
Bram Moolenaara5792f52005-11-23 21:25:05 +00001815. Global variables *ruby-globals*
Bram Moolenaar071d4272004-06-13 20:20:40 +0000182
183There are two global variables.
184
185$curwin The current window object.
186$curbuf The current buffer object.
187
188==============================================================================
Bram Moolenaara5792f52005-11-23 21:25:05 +00001896. Dynamic loading *ruby-dynamic*
190
Bram Moolenaar05365702010-10-27 18:34:44 +0200191On MS-Windows and Unix the Ruby library can be loaded dynamically. The
192|:version| output then includes |+ruby/dyn|.
Bram Moolenaara5792f52005-11-23 21:25:05 +0000193
Bram Moolenaar05365702010-10-27 18:34:44 +0200194This means that Vim will search for the Ruby DLL file or shared library only
195when needed. When you don't use the Ruby interface you don't need it, thus
196you can use Vim even though this library file is not on your system.
Bram Moolenaara5792f52005-11-23 21:25:05 +0000197
Bram Moolenaar69154f22010-07-18 21:42:34 +0200198You need to install the right version of Ruby for this to work. You can find
199the package to download from:
200http://www.garbagecollect.jp/ruby/mswin32/en/download/release.html
201Currently that is ruby-1.9.1-p429-i386-mswin32.zip
202
Bram Moolenaara5792f52005-11-23 21:25:05 +0000203To use the Ruby interface the Ruby DLL must be in your search path. In a
204console window type "path" to see what directories are used.
205
206The name of the DLL must match the Ruby version Vim was compiled with.
Bram Moolenaar69154f22010-07-18 21:42:34 +0200207Currently the name is "msvcrt-ruby191.dll". That is for Ruby 1.9.1. To know
208for sure edit "gvim.exe" and search for "ruby\d*.dll\c".
209
210If you want to build Vim with Ruby 1.9.1, you need to edit the config.h file
211and comment-out the check for _MSC_VER.
Bram Moolenaar9b451252012-08-15 17:43:31 +0200212You may also need to rename the include directory name to match the version,
213strangely for Ruby 1.9.3 the directory is called 1.9.1.
Bram Moolenaara5792f52005-11-23 21:25:05 +0000214
215==============================================================================
Bram Moolenaar071d4272004-06-13 20:20:40 +0000216 vim:tw=78:ts=8:ft=help:norl: