@kyanny's blog

My thoughts, my life. Views/opinions are my own.

csv-mode.el

Emacs の CSV 用メジャーモード。シンタックスハイライトだけでなく、 CSV 編集に便利な機能がいくつかある。マニュアルを読んでも使い方がよくわからなかったが、何度か試して理解できた。

特に csv-kill-fields は感動した。「CSV ファイルの特定の列のデータだけ抜き出したい」ということはよくあり、いつも AWK でがんばるか、 Excel/Open Office 等を経由するか、はたまた Perl/Ruby のワンライナーでやっつけるか、など多少の手間をかけてしまっていた。

  • C-c C-k のフィールド指定は "1 2" とか "1,3" とか "1-3" と入力する。ハイフン入りのときだけ range 指定扱い。
  • 特定の列だけ消したいときは C-c C-k で、逆に特定の列だけ取り出したいときは C-c C-k のあと C-c C-z で貼り付ければよい。
  • C-c C-a は見やすく整形用、 C-c C-u で戻せる。
  • C-c C-t は行列入れ替え。どういうとき役に立つかは思いつかないが。
  • C-M-f C-M-b で列単位で前後に移動。空白を含むデータがあるとき便利。 C-M-k で次の列のデータだけ kill できてこれも便利。 yank は普通にやればい。

感動したのと将来使い方を忘れたときのためにアニメーション GIF ムービーを撮っておこうかとも思ったが、面倒くさいのと結構練習したのでもう忘れないだろうと思いやめておく。

追記: やっぱりムービーを撮った。

blog.kyanny.me

存在を知ったきっかけはコマンドラインで CSV を整形するシンプルな方法は? — ありえるえりあを読んだからだった。このスクリプトのほぼ真似だが、 CSV ファイルの指定した列のデータだけを標準出力に表示する Emacs Lisp スクリプトを書いてみた。

csvcol

cua-set-rectangle-mark

先日同僚が Emacs で華麗に矩形領域をインタラクティブに移動させているのをみて、あれはなんだろうと気になったが聞きそびれたので試しにぐぐってみたらあっさり見つかった。

emacsの矩形選択モード紹介 | tech.kayac.com - KAYAC engineers' blog

Emacsで矩形編集(cua-mode) - Qiita

f:id:a666666:20150718041806g:plain

;; http://tech.kayac.com/archive/emacs-rectangle.html
;; http://qiita.com/yyamamot/items/7efcbfdcccdb5fa45ebe
(cua-mode t)
(setq cua-enable-cua-keys nil)
(define-key global-map (kbd "C-x SPC") 'cua-set-rectangle-mark)

Mac のメニューバーや Finder のアイコンが表示されなくなったりしたが OS X Yosemite 再インストールをしたらなおった

f:id:a666666:20150718012156p:plain

こんな風になってしまったり、 gulp を使ってる JavaScript プロジェクトでローカル開発環境を立ち上げようとすると意味不明なエラーが出たりして困っていたが、 OS X Yosemite を再インストールしたらなおった。

たぶん症状としてはこれに近い。

メニューバーの表示がおかしくなった | Apple サポートコミュニティ

別のマシンに Time Machine バックアップから復元したらどの不具合も再現せず。

要修理かと思いジーニアスバーに持ち込んでいろいろみてもらったところ、別ユーザーアカウントを作成してログインしたらメニューのアイコンは表示されていた。だがストレージの診断テストを実行したら Software Warning が出てしまっていた。

OS X 再インストールの方法は、電源を入れたらすぐ Cmd + R を押し、 Apple マークが表示されるまで押し続ける。そのうち特殊なメニュー画面が表示されるので、上から2番目を選ぶ。再インストールにはネットワーク接続が必要。