Home Explore Blog CI



neovim

1st chunk of `runtime/doc/if_ruby.txt`
f126db74b3213c96edd390f26cb768328c7806bf50a771d50000000100000c01
*if_ruby.txt*          Nvim


		  VIM REFERENCE MANUAL    by Shugo Maeda

The Ruby Interface to Vim				*if_ruby* *ruby* *Ruby*

			*E266* *E267* *E268* *E269* *E270* *E271* *E272* *E273*

The home page for ruby is https://www.ruby-lang.org/.  You can find links for
downloading Ruby there.

                                      Type |gO| to see the table of contents.

==============================================================================
1. Commands						*ruby-commands*

							*:ruby* *:rub*
:rub[y] {cmd}		Execute Ruby command {cmd}.  A command to try it out: >
				:ruby print "Hello"

:rub[y] << [trim] [{endmarker}]
{script}
{endmarker}
			Execute Ruby script {script}.

			If [endmarker] is omitted, it defaults to a dot '.'
			like for the |:append| and |:insert| commands.  Refer
			to |:let-heredoc| for more information.


			This form of the |:ruby| command is mainly useful for
			including ruby code in vim scripts.

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
<
To see what version of Ruby you have: >
	:ruby print RUBY_VERSION
<

						*: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 <EOL>.  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
	line = VIM::Buffer.current.line       # gets the current line
	num = VIM::Buffer.current.line_number # gets the current line number
	VIM::Buffer.current.line =

Title: Ruby Interface to Vim: Commands and VIM Module
Summary
This section of the Vim reference manual describes the Ruby interface to Vim, including executing Ruby commands within Vim using commands like `:ruby`, `:rubydo`, and `:rubyfile`. It also details the `VIM` module, which provides Ruby code with access to Vim's functionalities, such as displaying messages, executing Ex commands, and manipulating windows and buffers. It also provides example code.