ラベル MacVim の投稿を表示しています。 すべての投稿を表示
ラベル MacVim の投稿を表示しています。 すべての投稿を表示

2014/03/08

OS X 10.9.2: MacVim

MacVim 7.4 をダウンロード して .vimrc の設定。

MacVim.app において...下記の設定をしていないと、

1, yank した内容が clipboard にコピーされない。
2, 日本語を入力しおわって esc した時、 IM が自動的に切り替わってくれない。:w する為に command + space で IM を切り替えしなくちゃいけなくなる。
3, ':' と ';' が入れ替わっていないといちいち shift key を押す必要にみまわれる。
4, 不思議なことに下記の設定がないと Visual mode にした時 Shift Key が思うように動かない。
(具体的に書くと、V して、複数の行を選択しようと Shift Key を押しながら ↓ Key を押すと
「自動的に最終行まで選択されてしまう」という残酷。2, 3 行だけ選択することができない。)

# .vimrc | .gvimrc

" MacVim.app に有効 (/usr/bin/vim には反映されない)

if has("gui_macvim")
  let macvim_hig_shift_movement = 1
endif
" http://vim-users.jp/2010/02/hack126/
" yank to clipbord
set clipboard=unnamed,autoselect

" http://yuroyoro.hatenablog.com
" insert モードを抜けると IM オフ
set noimdisable
set iminsert=0
set imsearch=0

inoremap :set iminsert=0
noremap :set iminsert=0

" 入れ替え
noremap ; :
noremap : ;

2011/11/08

org.vim.MacVim

mymvim.rb
http://midorex.blogspot.com/2011/11/mymvimrb.html
のその後。(いろいろ試してわかったこと)

自分で -g に設定していたものを削除。

% defaults delete -g NSQuitAlwaysKeepsWindows
% defaults delete -g ApplePersistenceIgnoreState

% su admin
$ sudo defaults delete /Library/Preferences/.GlobalPreferences NSQuitAlwaysKeepsWindows
$ sudo defaults delete /Library/Preferences/.GlobalPreferences ApplePersistenceIgnoreState
$


org.vim.MacVim からも追加したものを削除

% defaults delete org.vim.MacVim NSQuitAlwaysKeepsWindows


MacVim の環境設定
[Preference General]
Open untitled window: never
Open files from applications: with a tab for each file
After last window closes: Quit MacVim

% defaults read org.vim.MacVim
{
    MMAutosaveColumns = 150;
    MMAutosaveRows = 45;
    MMCurrentPreferencePane = General;
    MMLastWindowClosedBehavior = 2;
    MMNativeFullScreen = 0;
    MMOpenInCurrentWindow = 1;
    MMTopLeftPoint = "{516, 746}";
    MMUntitledWindow = 0;
    MMUseInlineIm = 0;
    NSNavLastRootDirectory = "~";
    NSNavPanelExpandedSizeForOpenMode = "{585, 418}";
    NSQuotedKeystrokeBinding = "";
    NSRepeatCountBinding = "";
    SUCheckAtStartup = 0;
}


これで、MacVim が起動していない時に、
MacVim 付属の mvim を動かしても shell が終了しないなんてことはなくなった。
mvim の exec は何も悪くなかった!。
せっかく作った mymvim.rb は残念だけど不要だった。

% syslog -w
をみていても変なメッセージはでてこなくなった。

MacVim 起動すると、
~/Library/Saved Application State/org.vim.MacVim.savedState
が生成されるけれど、MacVim を終了すると同時に自動的に消えてなくなってくれるようにもなった!。

感想。
今後 defaults -g に write するのはやめよう。

2011/11/04

mymvim.rb

MacVim 付属のmvim はshell で書かれている。
mvim で存在しないファイルを指定すると新規ファイルを作成する。
Lion で MacVim を起動していない時にうっかり mvim を動かすと
下記のようなエラーが残り shell 終了しない。

... MacVim[451:507] ApplePersistenceIgnoreState: Existing state will not be touched. New state will be written to ....

Ctr + C で終了するはめになる。

defaults write -g ApplePersistenceIgnoreState YES

を実行しているけれど
念のため org.vim.MacVim にも指定。

% defaults write org.vim.MacVim ApplePersistenceIgnoreState YES
% defaults read org.vim.MacVim
{
    ApplePersistenceIgnoreState = YES;
    MMAutosaveColumns = 150;
    MMAutosaveRows = 45;
    MMCurrentPreferencePane = General;
    MMLastWindowClosedBehavior = 1;
    MMNativeFullScreen = 0;
    MMOpenInCurrentWindow = 1;
    MMTopLeftPoint = "{208, 723}";
    MMUntitledWindow = 0;
    MMUseInlineIm = 0;
    NSQuotedKeystrokeBinding = "";
    NSRepeatCountBinding = "";
    SUCheckAtStartup = 0;
}

が...むなしく変化なく shell 終わらず。
そりゃそうかも。
mvim の最後の行あたり exec が怪しいのかも...

それで
Ruby 1.9.3 で mymvim.rb を作るいい口実ができた。
mymvim.rb は
MacVim が起動していなかったら、たぶん?正しく起動し、指定したファイルを開く。
存在しないファイルを指定してしまっても、何もおこらない。
おもったよりも早く動く。

ところが mymvim.rb を実行すると...

% ps aux  |grep task

=>
...(略) grep --color=auto task
...(略) /usr/libexec/taskgated -p -s

必ず /usr/libexec/taskgated が発生する。
数分すると自動的に消える。これは一体なんなのだろう。
Snow Leopard の時もあったような気もする...。

taskgated を sudo で kill しつつ
よくよく試してみると mymvim.rb だけでなく
MacVim 付属の mvim を実行したあとにも taskgated が発生していた。
ということは、
どのような方法で MacVim を起動したかってことは関係なくて、
MacVim を起動したこと、そのこと自体が taskgated を引き起こしている
ようだ。

MacVim をインストールしている ~/Application と
同じ階層にある他の Application を起動してみると...
taskgated が発生した。

dmg をダウンロードしてインストールした
/usr/local/git/bin/git
を動かしてみると、やはり発生した。

% ruby19 -e "puts \"hello\""
hello
% 

を実行しただけでも発生した。

しかし Lion にデフォルトで入っていた ruby 1.8 を動かしても発生しなかった。

% ruby  -e "puts \"hello\""
hello
% 


/Application にある Safari.app などを起動してみると
taskgated は発生しなかった。

つまり
Apple によって署名されていない Application やプログラムを起動すると
taskgated process が発生するってことかな。?

署名されたソフトウエアと、そうじゃないものの違い....

mymvim.rb

# coding: utf-8
# snapshot MacVim 7.3
# OS X Lion 10.7.2
# ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-darwin11.2.0]

module Mymvim
  class Mvim
    def initialize(f)
      @f = f
      @osa = '/usr/bin/osascript'
      macvim = "Tell application \"MacVim\""
      @s1 = "#{macvim} to open (POSIX file \"#{@f}\") as string"
      @s2 = "#{macvim} to activate"
    end
    def base
      run
    end
    def run
      begin
        e = system("#{@osa} -e '#{@s1}' -e '#{@s2}'")
        exit unless e
      ensure
        print "bye\n"
        exit
      end
    end
  end
end

f = ARGV[0]
 unless File.exist?(f)
  print "Not found : #{f}\n"
  exit
end
Mymvim::Mvim.new(f).base

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 起動してはいけないのだろうか?