123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255 |
- *if_ruby.txt* For Vim version 9.0. Last change: 2019 Jul 21
- VIM REFERENCE MANUAL by Shugo Maeda
- The Ruby Interface to Vim *ruby* *Ruby*
- 1. Commands |ruby-commands|
- 2. The Vim module |ruby-vim|
- 3. Vim::Buffer objects |ruby-buffer|
- 4. Vim::Window objects |ruby-window|
- 5. Global variables |ruby-globals|
- 6. rubyeval() Vim function |ruby-rubyeval|
- 7. Dynamic loading |ruby-dynamic|
- *E266* *E267* *E268* *E269* *E270* *E271* *E272* *E273*
- {only available 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*
- :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.
- 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)
- @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 = "test" # sets the current line number
- <
- Module Functions:
- *ruby-message*
- Vim::message({msg})
- Displays the message {msg}.
- *ruby-blob*
- Vim::blob({arg})
- Return |Blob| literal string from {arg}.
- *ruby-set_option*
- Vim::set_option({arg})
- 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*
- Vim::command({cmd})
- Executes Ex command {cmd}.
- *ruby-evaluate*
- Vim::evaluate({expr})
- Evaluates {expr} using the vim internal expression evaluator (see
- |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.
- ==============================================================================
- 3. Vim::Buffer objects *ruby-buffer*
- Vim::Buffer objects represent vim buffers.
- Class Methods:
- current Returns the current buffer object.
- count Returns the number of buffers.
- self[{n}] Returns the buffer object for the number {n}. The first number
- is 0.
- Methods:
- name Returns the full 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}.
- line Returns the current line of the buffer if the buffer is
- 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.
- ==============================================================================
- 4. Vim::Window objects *ruby-window*
- Vim::Window objects represent vim windows.
- Class Methods:
- current Returns the current window object.
- count Returns the number of windows.
- self[{n}] Returns the window object for the number {n}. The first number
- 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}.
- width Returns the width of the window.
- width = {n} Sets the window width to {n}.
- cursor Returns a [row, col] array for the cursor position.
- First line number is 1 and first column number is 0.
- cursor = [{row}, {col}]
- Sets the cursor position to {row} and {col}.
- ==============================================================================
- 5. Global variables *ruby-globals*
- There are two global variables.
- $curwin The current window object.
- $curbuf The current buffer object.
- ==============================================================================
- 6. rubyeval() Vim function *ruby-rubyeval*
- To facilitate bi-directional interface, you can use |rubyeval()| function to
- evaluate Ruby expressions and pass their values to Vim script.
- The Ruby value "true", "false" and "nil" are converted to v:true, v:false and
- v:null, respectively.
- ==============================================================================
- 7. Dynamic loading *ruby-dynamic*
- On MS-Windows and Unix the Ruby library can be loaded dynamically. The
- |:version| output then includes |+ruby/dyn|.
- 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.
- MS-Windows ~
- You need to install the right version of Ruby for this to work. You can find
- the package to download from:
- http://rubyinstaller.org/downloads/
- Currently that is rubyinstaller-2.2.5.exe
- To use the Ruby interface the Ruby DLL must be in your search path. In a
- console window type "path" to see what directories are used. The 'rubydll'
- option can be also used to specify the Ruby DLL.
- The name of the DLL must match the Ruby version Vim was compiled with.
- Currently the name is "msvcrt-ruby220.dll". That is for Ruby 2.2.X. To know
- for sure edit "gvim.exe" and search for "ruby\d*.dll\c".
- 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.
- 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.
- 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.
- ==============================================================================
- vim:tw=78:ts=8:noet:ft=help:norl:
|