Hatena::Groupvim

kei-os2007 no life, no Vim このページをアンテナに追加 RSSフィード

2008-09-20

Terminal.appで日本語をpbcopyできない件、fakeclipで解決したよ

14:39 | Terminal.appで日本語をpbcopyできない件、fakeclipで解決したよ - kei-os2007 no life, no Vim を含むブックマーク はてなブックマーク - Terminal.appで日本語をpbcopyできない件、fakeclipで解決したよ - kei-os2007 no life, no Vim Terminal.appで日本語をpbcopyできない件、fakeclipで解決したよ - kei-os2007 no life, no Vim のブックマークコメント


Mac OS Xの Terminal.appで Vimを動作させているときに

クリップボード(正確には pasteboardですが)を介して他アプリケーションとテキストデータを受け渡しするには

pbcopy, pbpasteを使えばよいことになっているのですが


あれ、全角入力した日本語がコピーできない様子。

なんでだろう。

更に調査が必要そうだ。


http://d.hatena.ne.jp/kei-os2007/20080714


と、日本語(非ASCIIな文字)がコピーできず、ながらく放置状態になっていました。


そこへ、Vimから「っfakeclip」という託をいただき、またたく間に解決することができました。


解決方法

1. fakeclip.vimプラグインを入れます。

http://www.vim.org/scripts/script.php?script_id=2098


2. 環境変数 __CF_USER_TEXT_ENCODINGを設定

自分は zshを使ってるので ~/.zshrcに以下のように追加しました。

export __CF_USER_TEXT_ENCODING="0x1F5:0x08000100:14"



作業メモ

Terminal.appの文字エンコーディング設定は UTF-8です。

UTF-8環境での注意点が、のブログに記録されていました。

いい加減Mac OS Xの端末内でコピペできないのが不便なったので直しました。UTF-8等を使う場合は:help fakeclip-bugsの(e)を参照。

http://vim.g.hatena.ne.jp/ka-nacht/20080717


というわけで、:help fakeclip-bugs して読んだところ

__CF_USER_TEXT_ENCODING環境変数について、注意書きが見つかります。

「この環境変数は :(コロン)で区切られた値で、2番目の値を 0x08000100にしないといけないんだぴょん、詳しくは Appleのドキュメントを読んでね」

ということだったので、↓を読みました。


http://developer.apple.com/documentation/CoreFoundation/Reference/CFStringRef/


そしたら、ありましたありました、UTF-8の値が。

Built-in String Encodings

enum CFStringBuiltInEncodings { 
    kCFStringEncodingMacRoman = 0, 
    kCFStringEncodingWindowsLatin1 = 0x0500, 
    kCFStringEncodingISOLatin1 = 0x0201, 
    kCFStringEncodingNextStepLatin = 0x0B01, 
    kCFStringEncodingASCII = 0x0600, 
    kCFStringEncodingUnicode = 0x0100, 
    kCFStringEncodingUTF8 = 0x08000100, 
    kCFStringEncodingNonLossyASCII = 0x0BFF, 
    kCFStringEncodingUTF16 = 0x0100, 
    kCFStringEncodingUTF16BE = 0x10000100, 
    kCFStringEncodingUTF16LE = 0x14000100, 
    kCFStringEncodingUTF32 = 0x0c000100, 
    kCFStringEncodingUTF32BE = 0x18000100, 
    kCFStringEncodingUTF32LE = 0x1c000100 
};

って定義されてありました。


しかし、環境変数 __CF_USER_TEXT_ENCODINGの詳細を把握できていないので、設定値を検討すべく

Vimから :echo $__CF_USER_TEXT_ENCODING を実行したところ

自分の環境では 0x1F5:1:14 が得られました。

他の機能に影響が出ないよう 2番目の値 1 を 0x08000100 に変更し

それ以外は元の値のままにしておこう、と決めて .zshrcで exportしました。


これで、無事、他アプリケーションとのテキストデータ受け渡しができるようになり

fakeclip.vimのおかげで pbcopyや pbpasteの存在を隠蔽した、軽快な操作ができるようになりました。

かなり LifeChangingでした。

ヤッタァ!


あとは、__CF_USER_TEXT_ENCODINGの 1番目、3番目の値が何を意味するのか気になるところではあります。

それから 2番目の値も、変更前は 1 だったのですが、CFStringBuiltInEncodingsに含まれていませんね。

気になります。

深追わないとつかめなさそうですね。


追記

__CF_USER_TEXT_ENCODING は String Comparison Flags, Built-in String Encodings, External String Encodings

の並びな気がしてきた。


さらに追記

__CF_USER_TEXT_ENCODING の追記はまったく根拠ないです><

ちゃんと調べて書かないと、です。

edvakfedvakf2008/11/24 08:35第一引数はUID (GID)です。id -g を十六進数にしたものです。
printf "%X" `id -g` #=> 1F5
てな具合で。

edvakfedvakf2008/11/24 09:00ちなみに第三引数の14はシステム言語が日本語という意味だそうです。
http://d.hatena.ne.jp/witchmakers/20080806/1218009965

kei-os2007kei-os20072008/11/24 10:52edvakfさん、コメントありがとうございます。
たしかに UIDになっていること、確認できました。
14というのもシステム言語のことだったのですね。スッキリです。

あと、コメントいただいてから edvakfさんの UTF-8で pbcopyを可能にするエントリーを拝見しました。
なるほどと参考になりましたので、リンクをはらせていただきます。
http://d.hatena.ne.jp/edvakf/20080929/1222657230

MelissaMelissa2011/11/25 14:34Tip top stuff. I'll eexpct more now.

quqfbfwyofquqfbfwyof2011/11/27 01:36Y29oM5 <a href="http://fupihrohpsqq.com/">fupihrohpsqq</a>

rzkjoterzkjote2011/12/01 19:06zDXxxt <a href="http://fjoixjfilozo.com/">fjoixjfilozo</a>

KeyannaKeyanna2016/04/30 06:46That's a sensible answer to a cheglanling question

PatchPatch2016/05/02 13:18I like them. They are quite useful. For example, if you have seen the Sasha Grey on the Tyra Banks show video, the annotations are very informative giving you great inftnmaoior! http://mfsbiseufw.com [url=http://kuqsurftw.com]kuqsurftw[/url] [link=http://cxacduzyr.com]cxacduzyr[/link]

JacobyJacoby2016/05/03 13:16I am experiencing ranking fluctuation for last one week. My rankings are vanishing and then am getting it, currently its vanished.I have done verification through webmaster tools that with www and without www its my website.Is this domain verification is the reason for my ranking fluctuation?my domain <a href="http://rsvvbalwgo.com">ww.ceravtlcenteruk.wo.uk</a>

TrudyTrudy2016/05/04 16:41For the love of God, keep writing these aretlcis.

2008-07-25

vimグループに参加しました

| 06:00 |  vimグループに参加しました - kei-os2007 no life, no Vim を含むブックマーク はてなブックマーク -  vimグループに参加しました - kei-os2007 no life, no Vim  vimグループに参加しました - kei-os2007 no life, no Vim のブックマークコメント


VimMを機に、vimグループに参加しました。

よろしくお願いします m(_ _)m

まずは、ご挨拶まで。

JustinJustin2012/03/28 11:19Now I'm like, well duh! Truly tahnfkul for your help.

gvvjsqaitggvvjsqaitg2012/03/30 01:01Rm5H38 <a href="http://uqhmqlqqwihi.com/">uqhmqlqqwihi</a>

abpufxabpufx2012/03/30 05:36gCgWxZ , [url=http://kaemrrckaslo.com/]kaemrrckaslo[/url], [link=http://ldchqrayfrmj.com/]ldchqrayfrmj[/link], http://czeemdnxieer.com/