まだプログラマーですが何か?

プログラマーネタ中心。たまに作成したウェブサービス関連の話も https://twitter.com/dotnsf

タグ:vi

恥ずかしながら、今回紹介する Linux の sc コマンドの存在を全くしりませんでした。。


sc(spreadsheet calculator) コマンドは UNIX/Linux のコンソールから使える表計算アプリケーションです。X Window で動作する GUI アプリではなく、あくまで CUI のコンソール上で動く表計算アプリケーションです。オッサン的には DOS 時代の Lotus 1-2-3 を彷彿とさせる画面に胸騒ぎを禁じえません:
2018042900


インストール方法はソースからビルドするものも含めて数通りありますが、Debian ベースの Ubuntu や Raspberry Pi であれば、apt-get コマンドを使って普通に導入できます:
$ sudo apt-get install sc

このコマンドを実行するだけで導入できます。私のラズパイで実行した時の様子がこちら↓です。コマンド実行前のライブラリの導入状況も含めた環境にも依存するとは思いますが、私の環境ではアプリケーション全体で 369 キロバイト( 0.37 メガバイト)しか使いませんでした。超軽量アプリです:
2018042901


インストール後、プロンプトで "sc" を実行すると起動します:
2018042902
 (↑ DOS 版 Lotus 1-2-3 を知っていると、この時点で感動の涙モノ)


起動後の使い方は '?' キーを入力することで参照できますが、ざっと調べた限りでカーソル移動を含めた主なものはこちらです。いわゆる vi エディタのコマンドに近い操作体系になっているので、vi 派であればすぐに使えるようになると思っています:

操作キー解説
カーソル移動(上下左右)方向キーまたは kjhlvi キーバインド
数値入力カーソル位置で = を入力してから数値を入力
文字入力カーソル位置で > を入力してから文字を入力
値の削除カーソル位置で x を入力vi キーバインド
足し算・引き算などカーソル位置で = を入力してからセルを指定して A0 + A1 のような式を入力
終了q


機能的に Excel と比較するようなレベルのものではありませんが、むかーし 1-2-3 の製品開発に関わっていた自分的にはノスタルジックを越えた何かを感じるツールです。

自分はコーディング時のエディタを使い分けています。具体的には Java の場合は Eclipse 、それ以外は vi/vim を使うことが多いです。他がどうとかいうつもりはありませんが、指がショートカットを覚えているので生産性がいいと思っています。個人的にはこれらの使い分けで戸惑うことはありませんでした。

そんな時に Vrapper という Eclipse プラグインの存在を知りました。Eclipse 内のコーディングキーバインドを vi 風にする、というものです:
2017012801


そんなものが存在していてもおかしくはないだろうな、と思っていましたが、具体的なものを知ったのは初めてでした。試しに最新バージョンの 0.70.0 を使ってみました。

Vrapper を使う前提として、Eclipse は 4.0 以上である必要があるとのことでした。というわけで Juno (4.2)以降の Eclipse 環境を用意する必要があるのですが、今回は Eclipse Neon(4.6) 環境を用意して導入してみました。以下、その時の様子を紹介します:

Vrapper の導入方法は他の Eclipse プラグインと同様です。 まずはメニューの Help - Install New Software を選択:
2017012801


プラグインの Updatesite を指定します。このページによると同プラグインの安定版の Updatesite は http://vrapper.sourceforge.net/update-site/stable らしいので、この URL を指定します。するとインストール可能なプラグインの一覧が表示されるので、必要なもの(特定の言語依存のプラグインを導入しないのであれば) "Vrapper" 本体と "Optional Vimscript Plugins")にチェックを入れて先に進みます:
2017012802


インストール中の様子です。しばらく待ちます・・・:
2017012803


このようなダイアログが出たら Eclipse を再起動します。再起動後に Vrapper が有効になります:
2017012804


Eclipse 再起動後に、どんな感じが試すために1つプロジェクトを作ってみました:
2017012805


Java プロジェクトを作って、その中に MySample01.java というファイルを新規に追加しています:
2017012806


すると(静止画像では伝わりにくいのですが・・・)テキストファイル内のカーソル移動、編集モードへの移行(i)、ビューモードへの移行(ESC)など、キーバインドが vi/vim 風に切り替わっています。おお、なんか変な感じ(笑)!:
2017012807


":" を押してコマンドモードに移動する操作も再現できています。vi/vim では ":sp (ファイル名)" で画面を分割して2つのファイルを同時に編集することができますが、同じことをやってみます:
2017012808


Eclipse の2ファイル同時編集モードが上下にタイル分割されて実行されました!すげー、元の機能をうまいこと使って融合できているようです:
2017012809


もちろん ":q" で終了できます:
2017012810


はい、元の1画面モードに戻りました:
2017012811


というわけで、vi/vim の基本的なキーバインドは再現できているようです。これで Eclipse 内でも vi/vim のキー操作が使えるようになって超便利・・・なのかどうかはまだよくわかりません(苦笑)が、面白いプラグインであることは間違いなさげ。

CentOS に限りませんが、本当にまだあまり IT スキルの高くないユーザーが Linux/UNIX の勉強を始めようとすると、最初につまづくものの1つが「テキストエディタ」だと思っています。

Windows であれば「メモ帳」、Mac OS X なら「SimpleText」など、ちょっとしたメモを残す程度の用途で使う簡易テキストエディタが標準で用意されていますが、UNIX の場合、この標準エディタに相当するのが "vi" です。

vi は「慣れてしまえば」片手をホームポジションに置いたまま "J" キーと "K" キーで上下スクロールできるし、単語まとめて置換とか、正規表現で検索したりとか、カスタマイズで柔軟に設定できるとか、便利なエディタだと思うのですが、いかんせん「編集モード」と「閲覧モード」の切り替えという、他のエディタにない特徴(というか「クセ」)があるので、Linux 初心者がつまづきやすいと感じています。

Linux でも GUI 環境であれば GNOME の標準エディタである gEdit など、メモ帳に相当するエディタがないわけではありません。ただ一般的なクラウドで Linux を選択した時など、初めから GUI が提供されていることは滅多にないし、サーバー用途だったりすると GUI 導入そのものが認められないことも考えられるので、結局はテキストベース環境でも Linux を操作できるスキルが必要になります。


というわけで、「UNIX の CUI 環境でもメモ帳感覚で使える軽量テキストエディタ」を探してみました。そして現時点では今回紹介する ee(EasyEditor) が有力候補かな、と感じています。
2014100201

ee はテキストターミナル画面内で起動することができ、また画面内上部には最低限必要な操作メニューが常時表示されています。例えば「メニューを開く」は Ctrl + [ で、検索は Ctrl + e で、終了は ESC > Enter で、ファイル保存は Ctrl + [ > c > c で、といった具合です。一応、これだけ覚えておけば設定ファイルの編集くらいはできるかな、と。

この ee は yum では提供されていないようなので、インストール時はソースファイルをビルドする必要があります。ネットワークに接続された状態から以下を実行します:
# cd /usr/local/src
# wget ftp://ftp.uwsg.indiana.edu/linux/gentoo/distfiles/ee-1.5.2.src.tgz
# tar xzvf ee-1.5.2.src.tgz
# cd easyedit-1.5.2
# make
# make install

で、以下のコマンドで ee が導入できているかどうかを確認できます:
# which ee
/usr/local/bin/ee ←こう表示されれば成功

これでコマンドラインから ee コマンドが使えます。パラメータなしで "ee" とだけ実行すれば新規ファイルを、ファイル名を指定して実行すればそのファイルを読み込んで(なければそのファイルを新規作成して)開きます。
# ee /etc/hosts (/etc/hosts を ee で開く場合のコマンド)


・・・んー、でも vi 使えない人だと、そもそもビルドするまでの手順が結構厳しかったりするのかな?? 本当は vi を覚えるべきだと思いますが、それまでの間のつなぎとして。



 

このページのトップヘ