| 
									
										
										
										
											2018-03-18 14:44:37 +01:00
										 |  |  | *if_ruby.txt*   For Vim version 8.0.  Last change: 2018 Mar 15 | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		  VIM REFERENCE MANUAL    by Shugo Maeda | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The Ruby Interface to Vim				*ruby* *Ruby* | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 1. Commands			|ruby-commands| | 
					
						
							| 
									
										
										
										
											2015-12-05 20:59:21 +01:00
										 |  |  | 2. The Vim module		|ruby-vim| | 
					
						
							|  |  |  | 3. Vim::Buffer objects		|ruby-buffer| | 
					
						
							|  |  |  | 4. Vim::Window objects		|ruby-window| | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 5. Global variables		|ruby-globals| | 
					
						
							| 
									
										
										
										
											2005-11-23 21:25:05 +00:00
										 |  |  | 6. Dynamic loading		|ruby-dynamic| | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | {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* | 
					
						
							| 
									
										
										
										
											2012-08-15 17:43:31 +02:00
										 |  |  | :rub[y] {cmd}		Execute Ruby command {cmd}.  A command to try it out: > | 
					
						
							|  |  |  | 				:ruby print "Hello" | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | :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 '.' | 
					
						
							| 
									
										
										
										
											2005-04-15 21:00:38 +00:00
										 |  |  | 			like for the |:append| and |:insert| commands.  This | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 			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) | 
					
						
							| 
									
										
										
										
											2015-12-05 20:59:21 +01:00
										 |  |  | 			@buffer = Vim::Buffer.current | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 			vimputs(s) | 
					
						
							|  |  |  | 		end | 
					
						
							|  |  |  | 		def vimputs(s) | 
					
						
							|  |  |  | 			@buffer.append(@buffer.count,s) | 
					
						
							|  |  |  | 		end | 
					
						
							|  |  |  | 	end | 
					
						
							|  |  |  | 	gem = Garnet.new("pretty") | 
					
						
							|  |  |  | 	EOF | 
					
						
							|  |  |  | 	endfunction | 
					
						
							|  |  |  | < | 
					
						
							| 
									
										
										
										
											2016-09-08 22:22:43 +02:00
										 |  |  | To see what version of Ruby you have: > | 
					
						
							|  |  |  | 	:ruby print RUBY_VERSION | 
					
						
							|  |  |  | < | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 						*: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 | 
					
						
							| 
									
										
										
										
											2005-04-15 21:00:38 +00:00
										 |  |  | 			turn, without a trailing <EOL>.  Setting $_ will change | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 			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 | 
					
						
							| 
									
										
										
										
											2017-03-05 17:04:09 +01:00
										 |  |  | 			`:ruby load 'file'`, but allows file name completion. | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | Executing Ruby commands is not possible in the |sandbox|. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ============================================================================== | 
					
						
							| 
									
										
										
										
											2015-12-05 20:59:21 +01:00
										 |  |  | 2. The Vim module					*ruby-vim* | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-12-05 20:59:21 +01:00
										 |  |  | Ruby code gets all of its access to vim via the "Vim" module. | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-12-05 20:59:21 +01:00
										 |  |  | Overview: > | 
					
						
							| 
									
										
										
										
											2006-03-26 21:06:50 +00:00
										 |  |  | 	print "Hello"			      # displays a message | 
					
						
							| 
									
										
										
										
											2015-12-05 20:59:21 +01:00
										 |  |  | 	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 | 
					
						
							| 
									
										
										
										
											2006-03-26 21:06:50 +00:00
										 |  |  | 	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 | 
					
						
							| 
									
										
										
										
											2015-12-05 20:59:21 +01:00
										 |  |  | 	line = Vim::Buffer.current.line       # gets the current line | 
					
						
							|  |  |  | 	num = Vim::Buffer.current.line_number # gets the current line number | 
					
						
							|  |  |  | 	Vim::Buffer.current.line = "test"     # sets the current line number | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | < | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Module Functions: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 							*ruby-message* | 
					
						
							| 
									
										
										
										
											2015-12-05 20:59:21 +01:00
										 |  |  | Vim::message({msg}) | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 	Displays the message {msg}. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 							*ruby-set_option* | 
					
						
							| 
									
										
										
										
											2015-12-05 20:59:21 +01:00
										 |  |  | Vim::set_option({arg}) | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 	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* | 
					
						
							| 
									
										
										
										
											2015-12-05 20:59:21 +01:00
										 |  |  | Vim::command({cmd}) | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 	Executes Ex command {cmd}. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 							*ruby-evaluate* | 
					
						
							| 
									
										
										
										
											2015-12-05 20:59:21 +01:00
										 |  |  | Vim::evaluate({expr}) | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 	Evaluates {expr} using the vim internal expression evaluator (see | 
					
						
							| 
									
										
										
										
											2015-02-28 13:11:45 +01:00
										 |  |  | 	|expression|).  Returns the expression result as: | 
					
						
							|  |  |  | 	- a Integer if the Vim expression evaluates to a number | 
					
						
							|  |  |  | 	- a Float if the Vim expression evaluates to a float | 
					
						
							|  |  |  | 	- a String if the Vim expression evaluates to a string | 
					
						
							|  |  |  | 	- a Array if the Vim expression evaluates to a Vim list | 
					
						
							|  |  |  | 	- a Hash if the Vim expression evaluates to a Vim dictionary | 
					
						
							|  |  |  | 	Dictionaries and lists are recursively expanded. | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | ============================================================================== | 
					
						
							| 
									
										
										
										
											2015-12-05 20:59:21 +01:00
										 |  |  | 3. Vim::Buffer objects					*ruby-buffer* | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-12-05 20:59:21 +01:00
										 |  |  | Vim::Buffer objects represent vim buffers. | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | Class Methods: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | current		Returns the current buffer object. | 
					
						
							|  |  |  | count		Returns the number of buffers. | 
					
						
							| 
									
										
										
										
											2005-04-15 21:00:38 +00:00
										 |  |  | self[{n}]	Returns the buffer object for the number {n}.  The first number | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 		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}. | 
					
						
							| 
									
										
										
										
											2006-04-30 18:54:39 +00:00
										 |  |  | line		Returns the current line of the buffer if the buffer is | 
					
						
							| 
									
										
										
										
											2006-03-26 21:06:50 +00:00
										 |  |  | 		active. | 
					
						
							|  |  |  | line = {str}    Sets the current line of the buffer if the buffer is active. | 
					
						
							|  |  |  | line_number     Returns the number of the current line if the buffer is | 
					
						
							|  |  |  | 		active. | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | ============================================================================== | 
					
						
							| 
									
										
										
										
											2015-12-05 20:59:21 +01:00
										 |  |  | 4. Vim::Window objects					*ruby-window* | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-12-05 20:59:21 +01:00
										 |  |  | Vim::Window objects represent vim windows. | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | Class Methods: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | current		Returns the current window object. | 
					
						
							|  |  |  | count		Returns the number of windows. | 
					
						
							| 
									
										
										
										
											2005-04-15 21:00:38 +00:00
										 |  |  | self[{n}]	Returns the window object for the number {n}.  The first number | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 		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}. | 
					
						
							| 
									
										
										
										
											2005-09-01 20:46:49 +00:00
										 |  |  | width		Returns the width of the window. | 
					
						
							|  |  |  | width = {n}	Sets the window width to {n}. | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | cursor		Returns a [row, col] array for the cursor position. | 
					
						
							|  |  |  | cursor = [{row}, {col}] | 
					
						
							|  |  |  | 		Sets the cursor position to {row} and {col}. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ============================================================================== | 
					
						
							| 
									
										
										
										
											2005-11-23 21:25:05 +00:00
										 |  |  | 5. Global variables					*ruby-globals* | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | There are two global variables. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | $curwin		The current window object. | 
					
						
							|  |  |  | $curbuf		The current buffer object. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-11-23 21:25:05 +00:00
										 |  |  | ============================================================================== | 
					
						
							|  |  |  | 6. Dynamic loading					*ruby-dynamic* | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-10-27 18:34:44 +02:00
										 |  |  | On MS-Windows and Unix the Ruby library can be loaded dynamically.  The | 
					
						
							|  |  |  | |:version| output then includes |+ruby/dyn|. | 
					
						
							| 
									
										
										
										
											2005-11-23 21:25:05 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-10-27 18:34:44 +02:00
										 |  |  | This means that Vim will search for the Ruby DLL file or shared library only | 
					
						
							|  |  |  | when needed.  When you don't use the Ruby interface you don't need it, thus | 
					
						
							|  |  |  | you can use Vim even though this library file is not on your system. | 
					
						
							| 
									
										
										
										
											2005-11-23 21:25:05 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-03-20 21:08:34 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-11-02 15:28:18 +01:00
										 |  |  | MS-Windows ~ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-07-18 21:42:34 +02:00
										 |  |  | You need to install the right version of Ruby for this to work.  You can find | 
					
						
							|  |  |  | the package to download from: | 
					
						
							| 
									
										
										
										
											2016-10-01 14:47:05 +02:00
										 |  |  | http://rubyinstaller.org/downloads/ | 
					
						
							|  |  |  | Currently that is rubyinstaller-2.2.5.exe | 
					
						
							| 
									
										
										
										
											2010-07-18 21:42:34 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-11-23 21:25:05 +00:00
										 |  |  | To use the Ruby interface the Ruby DLL must be in your search path.  In a | 
					
						
							| 
									
										
										
										
											2016-03-20 21:08:34 +01:00
										 |  |  | console window type "path" to see what directories are used.  The 'rubydll' | 
					
						
							|  |  |  | option can be also used to specify the Ruby DLL. | 
					
						
							| 
									
										
										
										
											2005-11-23 21:25:05 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | The name of the DLL must match the Ruby version Vim was compiled with. | 
					
						
							| 
									
										
										
										
											2016-10-01 14:47:05 +02:00
										 |  |  | Currently the name is "msvcrt-ruby220.dll".  That is for Ruby 2.2.X.  To know | 
					
						
							| 
									
										
										
										
											2010-07-18 21:42:34 +02:00
										 |  |  | for sure edit "gvim.exe" and search for "ruby\d*.dll\c". | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-01 14:47:05 +02:00
										 |  |  | If you want to build Vim with RubyInstaller 1.9 or 2.X using MSVC, you need | 
					
						
							|  |  |  | some tricks.  See the src/INSTALLpc.txt for detail. | 
					
						
							| 
									
										
										
										
											2005-11-23 21:25:05 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-18 14:44:37 +01:00
										 |  |  | If Vim is built with RubyInstaller 2.4 or later, you may also need to add | 
					
						
							|  |  |  | "C:\Ruby<version>\bin\ruby_builtin_dlls" to the PATH environment variable. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-03-20 21:08:34 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-11-02 15:28:18 +01:00
										 |  |  | Unix ~ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The 'rubydll' option can be used to specify the Ruby shared library file | 
					
						
							|  |  |  | instead of DYNAMIC_RUBY_DLL file what was specified at compile time.  The | 
					
						
							|  |  |  | version of the shared library must match the Ruby version Vim was compiled | 
					
						
							|  |  |  | with. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | ============================================================================== | 
					
						
							|  |  |  |  vim:tw=78:ts=8:ft=help:norl: |