2012年2月28日火曜日

Vimのウィンドウ操作

日常的にVimを使っていながら、意外とウィンドウ操作は把握していなかったので、あんちょこ的にまとめてみる。
開く操作
CTRL-W sカレントウィンドウを横分割
CTRL-W vカレントウィンドウを縦分割
CTRL-W nカレントウィンドウを横分割しながら新規無名ファイルを開く
:sp[lit] {file}カレントウィンドウを横分割しながら指定ファイルを開く
:vs[plit] {file}カレントウィンドウを縦分割しながら指定ファイルを開く
閉じる操作
CTRL-W qカレントウィンドウを閉じる(ラスト1つならVim終了)
CTRL-W cカレントウィンドウを閉じる(ラスト1つなら閉じない)
CTRL-W oカレント以外のウィンドウを全て閉じる
別のウィンドウへ移動する操作
CTRL-W h左のウィンドウに移動
CTRL-W j上のウィンドウに移動
CTRL-W k上のウィンドウに移動
CTRL-W l右のウィンドウに移動
CTRL-W w下/右のウィンドウに移動
CTRL-W W上/左のウィンドウに移動
CTRL-W t最も左上のウィンドウに移動
CTRL-W b最も右下のウィンドウに移動
CTRL-W p直前にいたウィンドウに戻る
ウィンドウ自身を移動させる操作
CTRL-W rカレントを含むウィンドウのロウ/カラムを下/右回りにローテーション
CTRL-W Rカレントを含むウィンドウのロウ/カラム上/左回りにローテーション
CTRL-W xカレントと次(無ければ前)のウィンドウをスワップ
CTRL-W Hカレントウィンドウを無理矢理一番左にする
CTRL-W Jカレントウィンドウを無理矢理一番上にする
CTRL-W Kカレントウィンドウを無理矢理一番下にする
CTRL-W Lカレントウィンドウを無理矢理一番右にする
ウィンドウのサイズ変更
CTRL-W =全てのウィンドウのサイズを均等に調整
CTRL-W -カレントウィンドウの高さを減らす
CTRL-W +カレントウィンドウを高さを増やす
CTRL-W <カレントウィンドウを幅を減らす
CTRL-W >カレントウィンドウを幅を増やす

2012年2月27日月曜日

Tシャツやセーターを前後逆に着ない10の方法

30年以上生きてきて、割と最近気づいたこと。

洗濯方法のタグが左側に来るようにして頭を通せば、百発百中!
…これで完璧なんだから、残りの9個なんてどうでもいいじゃない?

2012年2月26日日曜日

ドラゴンロールZ


  1. 薄切りの豚肉に醤油と酒で下味を付ける
  2. 針生姜を用意する
  3. 縦1/4に切った茄子に片栗粉をまぶす
  4. 豚肉の上に針生姜を敷いて、針生姜ごと豚肉を茄子に巻き付ける
  5. 茄子&豚肉全体に片栗粉をまぶす
  6. 油で揚げる

するとこうなる。

要は、肉き式変形田揚げ。Z? こまけぇこたぁいいんだよ!!

2012年2月25日土曜日

卵焼き器はもう少し評価されてもいいと思う

鉄の卵焼き器。攻撃力+5。
言わずもがな、こいつの本来の用途は、卵を焼くこと。だし巻き卵ウマー。焼きたての半熟卵を味わえる自炊最高。
が、当たり前なのに意外と見逃されがちな話、卵焼き器は卵以外も焼くことが出来るのだ。
ウィンナーを炒めるなり、餃子を焼くなり、一人分のちょっとした調理に結構使える。食パンの断面より大きなサイズなら、
大きなフライパンを引っ張り出さずにフレンチトーストを作れるのだ。
ちなみにフレンチトーストは、Gigazineでも紹介されていた焼く前に牛乳+卵に浸しながらレンジにかける方法が良し。

2012年2月24日金曜日

zsh補完の小ネタ


小文字で入力しても、適宜大文字にしてくれる。
…だけではなく、'-'を適宜'_'にしてくれるzshの補完設定。
zstyle ':completion:*' matcher-list 'm:{-a-z}={_A-Z}'
かなりShiftを押さなくても済むようになる。英語キーボード派にオススメ。

2012年2月23日木曜日

ジョージアと呼んでくれ

ちょっと前にスラドで知ったんだが、グルジアというのはロシア語読みなので、ロシアと仲が悪いグルジア(と呼ばれている国)は、グルジアと呼ばれるのが面白くないそうだ。
http://mainichi.jp/select/opinion/yuraku/news/20120218k0000e070158000c.html
会社が確認もせずに刷りやがった名刺上の、自分の名前のアルファベット表記が気に入らないワタクシ的には、気持ちは分からないこともないので、なるべくジョージア、サカルトヴェロと呼ぶことにしよう。
…と思ったものの、サカルトヴェロというのがなかなか覚えられない。サマルトリアとごっちゃになる。そこで、多少なりとも意味が分かれば頭に入りやすいだろうと、ちょっと調べてみたところ、wikipediaに面白い話があったので、以下引用。

グルジア語は非常に柔軟性のある派生語生成システムを有している。それは1つの語根接頭辞接尾辞などを付着してたくさんの派生語を生成することを意味している。以下はその例である。
語根 -Kart- からの派生語
派生語意味
Kart-veliグルジア人
Kart-uliグルジア語
Sa-kart-veloグルジア国
カタカナで呪文のようにサカルトヴェロと書くよりも、 Sa-kart-veloの方が覚えやすいね。

2012年2月22日水曜日

いい加減、テレビを捨てよう

16年近く前に購入した、14インチのブラウン管テレビ。当然、デジタル放送のデコードなんてできるはずもない。

購入価格は税抜き80円。問題視され始めた頃の行き過ぎた値引き合戦で、手に入れた戦利品。
段ボールの中で震えながら並んだ思い出と、購入価格を遥かに上回る処分費用が、もう使わないテレビをなかなか捨てさせてくれなかったのだが、いい加減、8割方捨てる決心がついた。
…これだけだとチラシの裏で十分な話なので、宅急便で処分業者に送ろうと採寸した結果を公開。

  • 幅38cm x 高さ35cm x 奥行き41cm
  • 重さ9.6kg

クロネコヤマトだと、ぎりぎり120サイズに収まる。
http://www.kuronekoyamato.co.jp/estimate/kanto.html
近所のコンビニに直接持ち込めば、関東内で1,270円か。

2012年2月21日火曜日

getoptsとシェルの選択


シェルついでにgetopsの話。getoptsを使うと、こんな感じでオプションのパーサを楽に書ける。
opt_a=
opt_b=
opt_c=
opt_d=
while getopts ‘abc:d:’ opt; do
  case $opt in
    a|b)
      eval “opt_$opt=1”;;
    c|d)
      eval “opt_$opt=’$OPTARG’”;;
  esac
done
shift `expr $OPTIND - 1`
上の例だと-aと-bが引数なし、-cと-dが引数ありのオプション。-abc ARGのように、複数のオプションをまとめて指定しても、きちんと解釈してくれる。引数ありのオプションは、-d ARGでも-dARGでもOK。
そんな便利なgetoptsの最大の弱点は、標準で備わっている保証がないこと。ただbashならgetoptsはbuilt-in化されているので、多少の可搬性を犠牲にしてでもgetoptsを使いたいときはshebangで
#!/bin/bash
と明示している。
ashでもbuilt-in化できることはできるが、ビルド時に無効にもできるので、ashならgetoptsが使えるという保証はできない。PCならともかく、組み込みだと切られているケースもあるかも。

2012年2月20日月曜日

Bシェル系の拡張変数展開とシェル選択



アンチcshとしては、Bシェル系でもcshの${var:e}みたいなことを条件付きでできることを示さざるを得ない。
  • ${var#pattern}は、varの先頭からpatternに最短一致した部分を取り除いた文字列
  • ${var##pattern}は、varの先頭からpatternに最長一致した部分を取り除いた文字列
  • ${var%pattern}は、varの末尾からpatternに最短一致した部分を取り除いた文字列
  • ${var%%pattern}は、varの末尾からpatternに最長一致した部分を取り除いた文字列

例えば

% var=foo/bar/baz.tar.gz
% echo ${var#*/}
bar/baz/tar.gz
% echo ${var##*/}
baz.tar.gz
% echo ${var%.*}
foo/bar/baz.tar
% echo ${var%%.*}
foo/bar/baz
% watch_out=foo.bar/baz.tar.gz
% echo ${watch_out%%.*}
foo
こんな感じ。
これはてっきりbashの拡張機能だと思っていたので、多少の可搬性を犠牲にしてでも楽をしたいときのみshebangで

#!/bin/bash
と指定して使っていた。が、実は割と初期のashで既に拡張されていたらしい。
http://www.in-ulm.de/~mascheck/various/ash/
手元のash/dashでは確かに#, %を使えた。ashは拡張されていないイメージだったので、意外。
まあashでも通ると言うだけで、Solarisの/bin/shとかだとやっぱり駄目なので、この機能を使うときはbashという選択で、引き続き問題ないかな。

2012年2月19日日曜日

Macでzsh補完時の色設定

.zshrc等をMacに持ってきて、真っ先に怒られたのがlsの色。dircolorがない。…というか、そもそもGNUのlsじゃないからLS_COLORSを設定しても効かないし、lsに色を付けるオプションも異なる。調べてみると
  1. 環境変数LSCOLORSを設定
  2. GNUのCoreutilsを入れてしまう
という手があるようだが、せっかくなので郷に従い前者を選択。詳細はmanに譲って、とりあえず好みの設定をメモ。
export LSCOLORS=gxcxfxbxdxegedabagacad
さて、これで大体OKかと思いきや、zshの補完リストに色が付かない。が、それもそのはず。
zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}
とLS_COLORSを元に設定している。このまま無色なのは寂しいので、LSCOLORSからzsh式に変換するスクリプトを書いた。

#!/usr/bin/ruby
DefaultColors = 'exfxcxdxbxegedabagacad'
Attrs = %w(di ln so pi ex bd cd su sg tw ow)
lscolors = ENV['LSCOLORS'] || DefaultColors
codes = lscolors.scan(/../).map do |fb|
  cd = []
  cd << '01' if fb =~ /[A-H]/ # bold
  f, b = fb.downcase.scan(/./).map do |c|
    'abcdefgh'.index(c)
  end
  cd << '3%d' % f if f  # foreground
  cd << '4%d' % b if b  # background
  cd
end
zcolors = codes.zip(Attrs).map do |cd, at|
  "#{at}=#{cd.join(';')}" unless cd.empty?
end
print zcolors.compact.join(' '), "\n"
これをPATHの通った場所にzcolorという名前で置いて、
zstyle ':completion:*' list-colors $(zcolor)
と.zshrcあたりで実行しておけば、zshの補完リストにLSCOLORSと同じ色が付く。厳密にはboldの扱いがちょっと違うけど。