Desktop-style, Intuitive, Commandline Editor in Ruby. "Better than nano, simpler than vim."
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
assets self host assets Dec 30, 2016
bin show file name in terminal title Oct 17, 2015
lib v0.3.0 Oct 17, 2015
playground use official textpow Aug 19, 2012
spec fix Feb 22, 2014
.gitignore Ignore the ruco.log file. May 12, 2011
.travis.yml bump ruby and dispel Feb 22, 2014
Gemfile update dispel Dec 23, 2013
Gemfile.lock v0.3.0 Oct 17, 2015
MIT-LICENSE.txt reduce number of shipped files Dec 14, 2013
Rakefile bump Feb 19, 2013 self host assets Dec 30, 2016
ruco.gemspec bump ruby and dispel Feb 22, 2014

Simple, extendable, test-driven commandline editor written in ruby, for Linux/Mac/Windows.


  • Desktop-like / intuitive interface
  • TextMate Syntax and Theme support
  • selecting via Shift + arrow-keys (only Linux or iTerm) or 'select mode' Ctrl+b + arrow-keys
  • move line up/down (Alt+Ctrl+up/down)
  • Tab -> indent / Shift+Tab -> unindent
  • keeps indentation (+ paste-detection e.g. via Cmd+v)
  • change (*) + writable (!) indicators
  • find / go to line / delete line / search & replace
  • configuration via ~/.ruco.rb in Ruby
  • Full clipboard support -> Ctrl+x/c/v
  • undo / redo -> Ctrl+z/y
  • stays at last position when reopening a file
  • opens file at line e.g. ruco foo/bar.rb:32
  • supports all newline formats
  • surrounds selection with quotes/braces (select abc + " --> "abc")
  • shortens long file names in the middle
  • (optional) remove trailing whitespace on save
  • (optional) blank line before eof on save
  • (optional) line numbers

ruco with railscasts theme
Colors in Ruby 1.8


gem install ruco


ruco file.rb
rvmsudo ruco /etc/hosts


# ~/.ruco.rb
Ruco.configure do
  # set options
  options.window_line_scroll_offset = 5 # default 1
  options.history_entries = 10          # default 100
  options.editor_remove_trailing_whitespace_on_save = true  # default false
  options.editor_blank_line_before_eof_on_save = true       # default false
  options.editor_line_numbers = true                        # default false

  # Use any Textmate theme e.g. from
  # use a url that points directly to the theme, e.g. github 'raw' urls
  options.color_theme = ""

  # bind a key
  # - you can use Integers and Symbols
  # - use "ruco --debug-keys foo" to see which keys are possible
  # - have a look at [keyboard.rb](
  bind(:"Ctrl+e") do
    ask('foo') do |response|
      if response == 'bar'
        editor.move(:to, 0,0)

  # bind an existing action
  puts @actions.keys

  bind :"Ctrl+x", :quit
  bind :"Ctrl+o", :save
  bind :"Ctrl+k", :delete_line
  bind :"Ctrl+a", :move_to_bol

  # create reusable actions
  action(:first_line){ editor.move(:to_column, 0) }
  bind :"Ctrl+u", :first_line


  • [Mac] arow-keys + Shift/Alt does not work in default terminal (use iTerm)
  • [Tabs] Ruco does not like tabs. Existing tabs are displayed as single space and pressing tab inserts 2*space
  • [RVM] alias r="rvm 1.9.2 exec ruco" and you only have to install ruco once
  • [Ruby1.9] Unicode support -> install libncursesw5-dev before installing ruby
  • [ssh vs clipboard] access your desktops clipboard by installing xauth on the server and then using ssh -X
  • [Alt key] if Alt does not work try your Meta/Win/Cmd key
  • [Curses] LoadError: cannot load such file -- curses --> rvm install 1.9.3 ----with-libcurses
### Colors in Ruby 1.8
# OSX via brew OR port
brew install oniguruma
port install oniguruma5

# Ubuntu
sudo apt-get -y install libonig-dev

gem install oniguruma


Ruco is basically a lot of String manipulation separated in HTML style elements. The only component dealing with the commandline interface are Screen and Keyboard. Therefore everything is very simple to build and test since it returns a string or a e.g. cursor position.

Writing/reading is done in a TextArea or a TextField (a TextArea with 1 line) which are placed in Form`s.

The Application consists of a StatusBar, Editor, CommandBar and delegates actions to the currently active element.

To build the commandline output Editor/CommandBar return:

  • view -- text that should be displayed on the screen (complete content cropped via Window)
  • style_map -- a big Array with style infos, e.g. 'on line 1 chars 5 to 7 are red'
  • cursor -- where to draw the cursor




Michael Grosser
License: MIT
Build Status