• Stars
    star
    152
  • Rank 244,685 (Top 5 %)
  • Language
    Ruby
  • License
    MIT License
  • Created about 11 years ago
  • Updated almost 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Ruby on Files & Directories

rfd (Ruby on Files & Directories)

rfd is a terminal-based filesystem explorer, inspired by the legendary freesoft MS-DOS filer, "FD".

Installation

% gem install rfd

Requirements

  • Ruby 2.0, Ruby 2.1
  • NCurses

Tested environments

Mac OS X Mountain Lion, Mac OS X Lion, Ubuntu 13.04

Screenshot

screenshot

Start Me Up

Open up your terminal and type:

% rfd

You can also pass in a starting directory name, which defaults to ..

% rfd ~/src/rails

Commands

You can send commands to rfd by pressing some chars on your keyboard, just like Vim. If you're unfamiliar with this sort of command system, I recommend you to play with vimtutor before you go any further.

All available commands in rfd are defined as Ruby methods here. https://github.com/amatsuda/rfd/tree/master/lib/rfd/commands.rb

Changing the current directory

  • <Enter>: cd into the directory where the cursor is on.
  • <Delete> (or <Backspace> on your keyboard, probably?): Go up to the upper directory (cd ..).
  • -: Get back to where you once belonged (popd).
  • @: cd to a directory given via the command-line window.

Moving the cursor

  • j: Move down.
  • k: Move up.
  • h: Move left. At the leftmost column, move to the right end column at the previous page.
  • l: Move right. At the rightmost column, move to the left end column at the next page.

The {count} parameter

Some commands such as j or k take a number parameter called {count}. For passing a {count} parameter, just type in a number prior to the command. For example, 3j moves the cursor to 3 lines below, and 999k will take your cursor to 999 lines above.

Jumping the cursor

  • H: Move to the top of the current page.
  • M: Move to the middle of the current page.
  • L: Move to the bottom of the current page.

Switching the page

  • ctrl-n, ctrl-f: Move to the top of the next page.
  • ctrl-p, ctrl-b: Move to the top of the previous page.
  • g: Move to the top of the first page.
  • G: Move to the bottom of the last page.

Finding a file / directory

You can find a file by typing the first letter of it immediately after the find commands.

  • f{char}: Move to the next file / directory of which name starts with the given char.
  • F{char}: Move to the previous file / directory of which name starts with the given char.
  • n: Repeat the last f or F.

Searching, sorting

For commands like these that require a parameter string, type the parameter in the command line at the bottom of the screen, and press <Enter>.

  • /: Grep the current directory with the given parameter. The parameter will be interpreted as Ruby Regexp (e.g. .*\.rb$).
  • s: Sort files / directories in the current directory in the given order.
    • (none): by name
    • r : reverse order by name
    • s, S : order by file size
    • sr, Sr: reverse order by file size
    • t : order by mtime
    • tr : reverse order by mtime
    • c : order by ctime
    • cr : reverse order by ctime
    • u : order by atime
    • ur : reverse order by atime
    • e : order by extname
    • er : reverse order by extname

Marking files / directories

You can send a command to the file / directory on which the cursor is on. Or, you can send a command to multiple files / directories at once by marking them first. The mark is drawn as a * char on the left of each file / directory name.

  • <Space>: Mark / unmark current file / directory.
  • ctrl-a: Mark / unmark all file / directories in the current directory.

Manipulating files / directories

As stated above, you can send a command to one or more files / directories. In this document, the term "selected items" means "(the marked files / directories) || (the file / directory on which the cursor is on)".

  • c: Copy selected items (cp).
  • m: Move selected items (mv).
  • d: Move selected items into the Trash.
  • D: Delete selected items.
  • r: Rename selected items. This command takes a sed-like argument separated by a /. For example, changing all .html files' extension to .html.erb could be done by \.html$/.html.erb.

Yank and Paste

y & p works just like Windows-c & Windows-v on explorer.exe.

  • y: Yank selected items.
  • p: Paste yanked items into the directory on which the cursor is, or into the current directory.

Creating files / directories

  • t: Create a new file (touch).
  • K: Creat a new directory (mkdir).
  • S: Create new symlink to the current file / directory (ln -s).

Attributes

  • a: Change permission of selected items (chmod). Takes chmod-like argument such as g+w, 755.
  • w: Change the owner of of selected items (chown). Takes chown-like argument such as alice, nobody:nobody.

Viewing, Editing, Opening

  • <Enter>: View current file with the system $VIEWER such as less.
  • v: View current file with the system $VIEWER such as less.
  • e: Edit current file with the system $EDITOR such as vim.
  • o: Send the open command.

Manipulating archives

  • u: Unarchive .zip, .gz, or .tar.gz file into the current directory.
  • z: Archive selected items into a .zip file with the given name.

Handling .zip files

You can cd into a .zip file as if it's just a directory, then unarchive selected items, view files in it, and even create new files or edit files in the archive.

Splitting columns

  • ctrl-w: Change the window split size to the {count} value (e.g. 4<C-w> to split the window into 4 columns). The default number of columns is 2.

Using mouse

Mouse is available if your terminal supports it. You can move the cursor by clicking on a file / directory. Double clicking on a file / directory is equivalent to pressing <Enter> on it.

Misc

  • ctrl-l: Refresh the whole screen.
  • C: Copy selected items' paths to the clipboard.
  • O: Open a new terminal window at the current directory.
  • !: Execute a shell command.
  • q: Quit the app.

How to manually execute a command, or how the commands are executed

By pressing :, you can enter the command-line mode. Any string given in the command line after : will be executed as Ruby method call in the Controller instance. For instance, :j brings your cursor down, :mkdir foo makes a directory named "foo". And :q! of course works as you might expect, since q! method is implemented so.

Contributing

Send me your pull requests here. https://github.com/amatsuda/rfd

More Repositories

1

jb

A simple and fast JSON API template engine for Ruby on Rails
Ruby
1,235
star
2

active_decorator

ORM agnostic truly Object-Oriented view helper for Rails 4, 5, 6, and 7
Ruby
1,051
star
3

traceroute

A Rake task gem that helps you find the unused routes and controller actions for your Rails 3+ app
Ruby
877
star
4

heavens_door

Capybara test scenario recorder for Rails
JavaScript
863
star
5

database_rewinder

minimalist's tiny and ultra-fast database cleaner
Ruby
807
star
6

stateful_enum

A very simple state machine plugin built on top of ActiveRecord::Enum
Ruby
606
star
7

kaminari_themes

HTML
354
star
8

erd

A Rails engine for drawing your app's ER diagram
Ruby
332
star
9

html5_validators

A gem/plugin for Rails 3, Rails 4, Rails 5, and Rails 6 that enables client-side validation using ActiveModel + HTML5 Form Validation
Ruby
304
star
10

i18n_generators

A pack of Rails generators gem plugin that generates Rails 3 and Rails 2 I18n locale files for almost every known locale.
Ruby
285
star
11

himl

HTML-based Indented Markup Language for Ruby
Ruby
235
star
12

still_life

Rails upgrade's best friend
Ruby
216
star
13

gem-src

Gem.post_install { `git clone gem_source src` }
Ruby
208
star
14

motorhead

A Rails Engine framework that helps safe and rapid feature prototyping
Ruby
181
star
15

nested_scaffold

Nested scaffold generator for Rails 4.2 and 5
Ruby
176
star
16

roundabout

A Rails Engine that generates a page transition diagram for your Rails app from request specs
Ruby
153
star
17

routes_lazy_routes

A boot time booster for Ruby on Rails that defers loading the whole bloody routes so the app can spin up quickly 🤘
Ruby
141
star
18

string_template

A template engine for Rails, focusing on speed, using Ruby's String interpolation syntax
Ruby
125
star
19

kawaii_validation

An ActiveRecord extension that adds more kawaii validation syntax
Ruby
117
star
20

interactive_rspec

RSpec on IRB
Ruby
86
star
21

hocus_pocus

A magical isolated engine gem for Rails 3.1+
Ruby
80
star
22

ljax_rails

render :partial lazy-loader for Rails
Ruby
66
star
23

everywhere

Hash condition syntax for AR query everywhere!
Ruby
58
star
24

kaminari_example

A tutorial project for the basic and advanced usage of Kaminari paginator
Ruby
45
star
25

async_partial

Ruby
33
star
26

turbo_partial

Ruby
27
star
27

future_records

Ruby
25
star
28

lightweight_attributes

Ruby
24
star
29

more_optimized_resolver

Ruby
23
star
30

turbo_urls

Ruby
22
star
31

teriyaki

Automatically imports *_path definitions from config/routes.rb for acceptance testing
Ruby
22
star
32

kawaii_association

An ActiveRecord DSL extension that provides kawaii association syntax
Ruby
21
star
33

arel_ruby

ARel Ruby visitor
Ruby
20
star
34

activerecord-refinements

ActiveRecord + Ruby 2.0 refinements
Ruby
20
star
35

polymorphic_url_cache

Ruby
17
star
36

gem_i

A RubyGems plugin that explicitly aliases `gem i` to `gem install` to avoid ambiguity
Ruby
17
star
37

speed_king

Ruby
14
star
38

nested_layouts

The only fork of "nested_layouts" Rails plugin in Github that correctly bug fixed for Rails 2.3
Ruby
13
star
39

rspec-refinements

RSpec + Ruby 2.0 refinements
Ruby
10
star
40

arenai

Ruby
8
star
41

activecalendar

Rails 2.2.2 ready javascript calendar date renderer
JavaScript
8
star
42

bundler-squash

Ruby
8
star
43

rbenv-gem-shared

Ruby
8
star
44

tatsuzine

Live coded app at Rails勉強会@東京#59
Ruby
8
star
45

bot_for_ruby-lang

Ruby
7
star
46

factory_factory

a script that transfers existing AR models into factories for factory_girl
Shell
6
star
47

automagic

Ruby
6
star
48

snowman_meltdown

A simple middleware for Rails 3 to vanish _snowman parameter☃☃☃
Ruby
5
star
49

activesupport-refinements

Ruby
4
star
50

webdb073_tutorial

WEB+DB Press Vol. 73 特集2「詳解Rails 4」のチュートリアルのサンプルコード
Ruby
4
star
51

gitrockets

Ruby
3
star
52

rails3_hands_on

東京Ruby会議03のワークショップ「Rails 3ハンズオン」のサンプルアプリケーション
Ruby
3
star
53

prsnt

prsnt prttyp
3
star
54

git_commands

3
star
55

internationalization

Ruby
3
star
56

qwik

qwik
2
star
57

hfrails

hfrails
2
star
58

atode_yomu

A gem plugin that cleverly installs rdoc and ri for the latest versions of already installed gems
Ruby
2
star
59

gem-diet

Ruby
2
star
60

action_args_with_rbs

Ruby
1
star