2016年6月30日木曜日

emacs:ターミナルがちゃんと色が使える状態になっているのか。

emacsをターミナルでつかいはじめたので色が気になる……

なんちゃってemacs(emacs互換のあれこれ)から、本物に少しだけ移行をはじめました。
最初の疑問。――256色ちゃんと使えているのだろうか?!

使えています。



新規にターミナル(端末)を開きます。ubuntu系は以下を同時押し。CTRL+ALT+T

8色以上がつかえているかどうかを検査するプログラムをダウンロードします。Perlのスクリプトです。256色のチェックです。

wget ftp://ftp.fau.de/netbsd/NetBSD-release-6/xsrc/external/mit/xterm/dist/vttests/256colors2.pl
 
githubのほうがいいかも。 
wget https://github.com/zhengkai/config/raw/master/script/256colors2.pl
実行します。上の見本キャプチャのようになればOKです。
perl ./256colors2.pl

ターミナル上のemacsでの確認 : スクロールしたら最後が256番。

emacs -nw

M-x list-colors-display

ubuntu/Linux固有ではありません。

2016年6月15日水曜日

Gnomeのキー操作をグローバルにEmacs風にする

キーバインド研究シリーズ

Gnomeのキー操作をグローバルにEmacs風にする。

https://askubuntu.com/questions/124815/how-do-i-enable-emacs-keybindings-in-apps-such-as-google-chrome/233539

デスクトップ環境全体をemacs 風味にするキーバインディング
当方にはちょっと使いにくいかも。適用と戻し方を記述します。

CTRL+ALT+T

gnome
gsettings set org.gnome.desktop.interface gtk-key-theme "Emacs"

#デフォルトに戻す。
gsettings set org.gnome.desktop.interface gtk-key-theme "Default"


一部のCinnamon(mint本家)ではこれだった?!みたい。
gsettings set org.cinnamon.desktop.interface gtk-key-theme "Emacs"
# use emacs Emacs風にする。

gsettings set org.cinnamon.desktop.interface gtk-key-theme "Default"
# use default デフォルトに戻す

想像するに MATEはこうなるはず。
gsettings set org.mate.desktop.interface gtk-key-theme "Emacs"
# use emacs Emacs風にする。

gsettings set org.mate.desktop.interface gtk-key-theme "Default"
# use default デフォルトに戻す


結局戻しました。emacs好きすぎる人にはいいかもしれません。
スクショのキーまで変わってしまうのはいまさらきついです。 想定外でした。


gedit のキーバインドのカストマイズだけにとどめておきます。

http://d.hatena.ne.jp/msh_trumpet/20061217/1166366465

2016年6月12日日曜日

Perl5からPerl6に移行。たまにマルチバイト文字

Perl5からPerl6に既存資産を移行しようとしてはまったところ。

既存資産といってもへなちょこ、へっぽこスクリプトの類です。

echo あいうえお | perl6 -ne 's/^(.**0..3).*$/$0/, print $0 '
#3文字分行頭から取得 substrのほうが楽ですね。そういう話じゃなくて。
#
これに限らず、これまで{1,9}みたいに指定し量指定子を書くと、「..」にしろとかいろいろ怒られるので、そうしますが、まさか、{}そのものを使わない書き方とは思ってもみなかったです。
長年にわたって、(.{1,5})みたいにしていたので。

まとめると、短いperl5スクリプトでも影響は大きいですね。

1)後方参照の番号が変わった。これまで$1としていたのは、$0になる。ずれます。
2)範囲指定はだいたい[..]みたい。[A-Z]が[A..Z]になる。他でも同様に、「..」になった。たぶん一律。
3)これまでと同じ正規表現では通らないことがあるので、新しい仕様は読むべき。(読まないけど)
4)量指定子を使う時、{}は使えない。使わない。Perl6は別物と考えたほうがいいと実感する。

※perl5で文字数カウントを間違えないようするには(自分の場合UTF-8文字で数えるためには)、入力文字がUTF-8だよと教える必要があった。
Perl6は無自覚に使ってもUTF-8で扱ってくれる。つまりデフォルトで3バイトの1文字を3つに分解しようとして自滅したりはしない。たぶん空気のようにUTF-8の文字列が扱える(自分の使っている範囲。たぶんですよ)。

導入バージョン rakudo
This is perl6 version 2015.11 built on MoarVM version 2015.11

ls | perl6 -ne 's/^(.**0..7).*$/$0/, say $0 '

デスクトップあたりで端末開いて、上の一行を実行してみるといいかも。何もファイルは変更しません。
下記はperl5でマルチバイト(日本語)含めて数える場合

ls | perl -Mutf8::all -ne 's/^(.{0,7}).*$/$1/, print "$1\n" '

perl5でマルチバイト文字を扱う場合の劇的推奨。

このモジュールに全幅の信頼をおいています。なんか日本人でこれに言及しているのは自分だけの気がするんですけどね。笑) 便利ですよ。組み込むのも簡単だし。メリットは構文が簡素になるので、さくっと使い捨
てが書けます。「perl "utf8::all"」で検索しても2000件しかないし、ディストリのパッケージそのもののダウンロードだったりするので、ほとんど知られていないのかもしれません。わたしは、数年前UTF-8というキーワードでひっかるcpanパッケージは全部(ほんとうに全部)チェックしたので見つけました。以来ハッピーです。
現在、ubuntuの標準パッケージに含まれています。

以下ディスっているわけではありません!! 職業プログラマーが集まるサイトなどで、えんこーどして、でこーどして、ばいんもーどにして。。。とかよく見かけるんですが。うーん。ややこしいから仕事で間違えているんじゃないの?!

単純にUTF-8の入出力だけするのなら簡単です。その文字列を、区切る、数える、置換する、抜き出すなどなら、このモジュールひとつで、簡素に書けます。ほんとにびっくりです。大好きです。めんどくさいことは大嫌いです。