2011/06/22

MacVim in Dock

Google ChromeをAppleScriptで操作する - DiaryException
こちらを拝見し

nnoremap u2 <ESC>:<C-u>read !osascript -e 'tell application "Google Chrome" to get copy selection of active tab of window 1' ; pbpaste

を .vimrc に記入したところ、とっても便利になりました。(MacOS X の /usr/bin/vim ver 7.2.108)
# Chrome で閲覧している Webpage 中の文字列を選択し、vim 側で <ESC> u2 すると選択した文字列がコピペされる。

ところが Application MacVim version 7.3 (code.google.com/p/macvim/) で試したみたら文字化けされてペーストされてしまった。

$ man pbpaste

をみてもわからないので...

nnoremap u2  <ESC>:<C-u>read !osascript -e ' tell application "Google Chrome" to (get copy selection of active tab of window 1)' -e 'the clipboard'

/usr/bin/pbpaste の代わりに StandardEdition の the clipboard を使ってみたら文字化けがなおった。
/usr/bin/vim からもOK。と思ったのもつかのま、今度は改行がおかしくなった。改行が<0d><0d>になっている様子。

# 翌日。
どうにもお手上げなので、元の(pbpaste使用) nnoremap に戻して再度 MacVim から試すと、なんと!文字化けしないし改行もおかしくない。なんの問題もない。
この間、スリープはしたけどログアウトはしていない。
~/.MacOSX/environment.plist , ~/.inputrc は配置していない。.bashrc , .gvimrc は変更していないし .vimrc は件の nnoremap 行以外の行を触っていない。一体なんだったんだろう...。

# さらに後日。
MacVim 付属の mvim 使ってファイルを開いたり、Dock にある MacVim アイコンをクリックし ⌘+O でファイルを開いたり...両方使ってたかも?と気づいてハッとした。
Dock にある MacVim アイコンをクリックし MacVim 起動。 Chrome で文字列を選択しu2 すると、文字化けがみごと再現した。
ターミナルから mvim または /usr/bin/vim 使った場合。 No problem .

一般ユーザーも7月には自分のマシンにインストールできるようになる。価格は$29で、Mac App Storeからのみ購入できる。

Ferericchiはフルスクリーン・アプリ、マルチタッチ、Airdropなどの機能を紹介した。

引用元: Mac OS X Lionの新機能トップ10
http://jp.techcrunch.com/archives/20110606top-10-new-mac-ox-lion-desktop-features/

つまり、件のワンライナーは、ターミナルから mvim を通して MacVim を起動した場合と、/usr/bin/vim で使う場合においては全く問題なし。
ドックにおいたMacVimアイコンをクリックし起動した場合は問題あり、のようだ。
# ちなみに:set fileencoding? を実行すると「いずれの場合」も
# =>
# fileencoding=utf-8
# になっている。

また、ターミナルから

% open -a MacVim testest.txt

した場合も問題なかった。

# さらにさらに後日。
% cat testing.rb

#!/usr/bin/ruby
path = ARGV[0]
exit unless File.exist?(path)
system("/usr/bin/osascript -e 'Tell application \"MacVim\" to open (POSIX file \"#{path}\") as string' -e 'return'")

% ruby testing.rb 001.txt
によって開いたファイルで u2 してみると...問題なかった。

感想。
# Dock から MacVim 起動してはいけないのだろうか?

0 件のコメント: