Ruby で実装した Vim ライクなターミナルエディタです。
Vim の操作感をベースに、Ruby ならではの、もしくは ko1 が欲しい拡張性と独自機能を加えています。
gr) — TSV / CSV / Markdown をテーブル整形して閲覧。CJK 幅を考慮したカラム揃えg/ 検索フィルタ — 検索にマッチする行だけを集めたバッファを作成。再帰的に絞り込み可能。ログ解析に便利ls -la | ruvim のようにパイプの出力をそのままバッファで閲覧・編集:run コマンド — :run make で外部プロセスを実行し、出力をリアルタイムにバッファへ表示。PTY 対応-f / :follow) — 外部ファイルを監視して変更を自動反映。tail -f 相当。inotify 対応:git blame, :git status, :git diff, :git log, :git branch, :git commit, :git grep をエディタ内で実行。:gh link で GitHub URL をクリップボードにコピー、:gh browse でブラウザで開く~/.config/ruvim/init.rb に Ruby で nmap, set, command を記述。Vim script 不要Regexp。Ruby ユーザーにそのまま馴染む:ruby eval — 実行中に任意の Ruby コードを評価。ctx.editor / ctx.buffer API でエディタを操作:w, :q, :e, :help, :set, :git, :gh など):vimgrep, :grep, :copen など):!cmd, :r !cmd, :w !cmd)Web で読みやすい形式のドキュメントは https://ko1.github.io/ruvim/ で公開しています。
| ドキュメント | 内容 |
|---|---|
| tutorial.md | 基本操作のチュートリアル。起動・移動・編集・保存の流れをひと通り学べます |
| RuVim 完全ガイド | 完全ガイド(チュートリアルブック)。基本から応用・カスタマイズまで全 26 章 + 付録で網羅 |
| ドキュメント | 内容 |
|---|---|
| command.md | コマンド一覧。Normal / Insert / Ex の全コマンドを分類ごとに掲載 |
| binding.md | キーバインディング一覧。モード別・レイヤー別に全バインドを掲載 |
| config.md | 設定リファレンス。init.rb の書き方と :set オプションの全項目 |
| plugin.md | 拡張の書き方。正式な plugin API はまだありませんが、init.rb でできることをまとめています |
| ドキュメント | 内容 |
|---|---|
| vim_diff.md | Vim との違い。RuVim 独自の機能や挙動の差分をまとめています |
| ドキュメント | 内容 |
|---|---|
| spec.md | 仕様書。アーキテクチャ・設計方針・各サブシステムの詳細 |
| RuVim 実装解説 | 実装解説。「Ruby でテキストエディタを作る」をテーマに内部設計を全 20 章で解説 |
| todo.md | TODO リスト。今後の開発予定と検討中の機能 |
| done.md | 完了項目。実装済みの機能をカテゴリ別に記録 |
起動:
ruvim
ファイルを開いて起動:
ruvim path/to/file.txt
主な CLI オプション:
ruvim --help
ruvim --version
ruvim --clean
ruvim -R file.txt
w を拒否)ruvim -M file.txt
ruvim -Z file.txt
:ruby 無効)ruvim -u /tmp/init.rb
ruvim -u NONE
ruvim --cmd 'set number' file.txt
ruvim -c 'set number' file.txt
ruvim +10 file.txt
ruvim + file.txt
ruvim -o a.rb b.rb
ruvim -O a.rb b.rb
ruvim -p a.rb b.rb
ruvim -f log.txt
tail -f 相当)で起動ruvim -d file.txt
ruvim -q errors.log
ruvim -S Session.vim
開発環境で gem 未インストールのまま試す場合:
ruby -Ilib exe/ruvim
h j k l, w b e, 0 ^ $, gg, G, f/F/t/T, %i, a, A, I, o, Ox, dd, d{motion}, c{motion}, yy, yw, p, P, r<char>iw, aw, i", a", i), a), ip, ap など/, ?, n, N, *, #, g*, g#v, V, Ctrl-v, y, du, Ctrl-rq{reg}, @{reg}, @@:w, :q, :e, :help, :set, :git, :ghCtrl-g で :git プリセット入力。blame / status / diff / log / branch / commit / grep:!cmd, :r !cmd(出力を挿入), :w !cmd(バッファをパイプ)詳しくは docs/tutorial.md を参照してください。
設定ファイルは Ruby DSL です。
$XDG_CONFIG_HOME/ruvim/init.rb~/.config/ruvim/init.rbfiletype ごとの設定:
$XDG_CONFIG_HOME/ruvim/ftplugin/<filetype>.rb~/.config/ruvim/ftplugin/<filetype>.rb--clean で user config / ftplugin を無効化できます。
詳しくは docs/config.md を参照してください。
テスト実行:
rake test
CI 相当(test + docs 整合チェック):
rake ci
lint / format 方針(現状):
rubocop / 自動 formatter は未導入rake test と必要に応じて ruby -c で構文確認rake docs:check(rake ci に含まれる)
```Regexp を使います