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

2012/10/13

OS X 10.8.2: open -a

Ruby で書いたものの中から、
MacVim.app を呼び出しファイルを開けと命令し、
それが成功してもしなくても Ruby を終了する。
を実現する為に

begin
ensure
end

の中で

1) /usr/bin/osascript を使う
2) OS X の open コマンドを使う

のどちらかを使ってきたが
OS X 10.8 になっていよいよ 1) と 2) の時間的ひらきが決定的になったようなので、
# 1) は驚くほど遅い。10秒程かかった。OS X 10.6 でもこんなに遅いことはなかった。
OS X 10.8 では open コマンドを使うことに...。
# github.com/midore/xdiary.git

念のため

% man open

すると...

-e  Causes the file to be opened with /Applications/TextEdit

TextEdit.app は優遇されてる。

-t  Causes the file to be opened with the default text editor, as determined via LaunchServices


open コマンドが使うデフォルトの Editor は TextEdit.appだが、
デフォルトエディターを変更すれば open -t で好きなエディターが使えるようになるの
かと、試しに

export EDITOR='/usr/bin/vim'

を .bashrc に書いて

% source ~/.bashrc
% open -t like-vim.txt

してみたら...

わたしの予想に反し TextEdit.app が素早くファイルを開いた。

2011/02/16

vim noplugins

半年以上前だしメモを残さなかったので素晴らしく参考になったsiteが正確にはどこだったか分からなくなってしまった。

確かなことは...
kaoriya 様の日本語ヘルプドキュメントと
github.com に公開されていた達人の方々の .vimrc と
Google にて vim noplugins や vim shebang
とか検索した結果のいくつかのサイト

などを参考にさせていただきました。

" --------------------

/usr/bin/vim (OS X に最初から入ってるvim) を起動する際、自動的にロードされてしまう標準プラグインを "ロードしない" ようにした上で実現したいこと...大きくわけて2つ。

mission 1 :)

% vim aaa.rb で新しいファイルを作ると

#!/usr/bin/ruby
# coding: utf-8

この2行が予め記入され、入力するとインデントかかり、class とか def とかそういった文字に色がつく。

インデントかかるっていうのは例えば...

def a [return-key] if [return-key] end

とキーボードを打つと自動的に

  4 def a
  5   if
  6   end

になったり

begin [return-key] a [return-key] rescue

とキーボードをたたくと自動的に

  5 begin
  6   a
  7 rescue

こうなるっ。

mission 2 :)

% vim aaa.txt で開いたテキストファイルを編集する際
# を入力すると以降の文字列(改行まで)は青色になり
-- で始まる行はシアン色?に。
http や https で始まる行もシアンに。
行中にある <http://...> や <https://...> もシアンになるっ。


% cat test.vimrc

set nocompatible
set number
set backspace=indent,eol,start

" -------------------- Status
set laststatus=2
set statusline=%n\:%y%F\ \|%{(&fenc!=''?&fenc:&enc).'\|'.&ff.'\|'}%m%r%=<%-10(%3l,%02c%03V%)>

" -------------------- HighLight
highlight StatusLine term=NONE cterm=NONE ctermfg=gray ctermbg=darkcyan
highlight IncSearch ctermfg=gray ctermbg=cyan
highlight Search ctermfg=yellow ctermbg=darkcyan

highlight LineNr ctermfg=lightcyan ctermbg=NONE
highlight Visual term=NONE cterm=NONE ctermfg=NONE ctermbg=gray
highlight ModeMsg ctermfg=lightcyan ctermbg=NONE

" -------------------- tab
set shiftwidth=2
set tabstop=2
set expandtab
set ts=2 sw=2 expandtab

" -------------------- Plugins
" :help noloadplugins
set noloadplugins

" :help :filetype-off, :filetype-overview
filetype off

" :help :filetype-plugin-off
filetype plugin off

" :help :filetype-indent-on
filetype indent on

" /usr/share/vim/vim72/syntax/syntax.vim
syntax enable
" syntax on

" debag
" set verbose=9
autocmd! filetypedetect
" autocmd! BufWrite

if has("autocmd")
  "echo 'Hello!01'
  augroup MyVim
      autocmd!
      autocmd BufRead,BufNewFile *.txt           setlocal filetype=txt
      autocmd BufRead,BufNewFile *.rb            setlocal filetype=ruby
      autocmd BufRead,BufNewFile *.vimrc         setlocal filetype=vim
      "autocmd BufRead,BufNewFile *.vim           setlocal filetype=vim
      "autocmd BufRead,BufNewFile *.py            setlocal filetype=python
      "autocmd BufRead,BufNewFile *.sh            setlocal filetype=sh
      "autocmd BufRead,BufNewFile *.html          setlocal filetype=html
      autocmd FileType txt  syn match Comment /\#.*/
  augroup content
    autocmd!
    autocmd BufNewFile *.rb
          \ 0put = '#!/usr/bin/ruby'    |
          \ 1put = '# coding: utf-8'   |
    autocmd FileType txt
          \ :highlight MyGroup ctermfg=darkcyan ctermbg=NONE  |
          \ :match MyGroup /^\--.*\|<http.*>\|^http.*/        |
"    autocmd BufNewFile *.py
"        \ 0put = '#!/usr/bin/python'       |
"        \ 1put = '#-*- coding: utf-8 -*-'  |
"        \ $put = '' |
"        \ $put = '' |
  augroup END
endif

" -------------------- Last
" http://github.com/kana/config/
set secure  " must be written at the last.  see :help 'secure'.


テストファイルを指定して vim 起動

vim -i "NONE" -u test.vimrc aaa.rb


vim のコマンド結果

:filetype
# =>
filetype detection:ON  plugin:OFF  indent:ON

:autocmd
# =>
--- Auto-Commands ---
MyVim  BufNewFile
    *.txt     setlocal filetype=txt
    *.rb      setlocal filetype=ruby
    *.vimrc   setlocal filetype=vim
content  BufNewFile
    *.rb      0put = '#!/usr/bin/ruby'      | 1put = '# coding\: utf-8'     |
MyVim  BufRead
    *.txt     setlocal filetype=txt
    *.rb      setlocal filetype=ruby
    *.vimrc   setlocal filetype=vim
filetypeindent  FileType
    *         call s:LoadIndent()
syntaxset  FileType
    *         exe "set syntax=" . expand("<amatch>")
MyVim  FileType
    txt       syn match Comment /\#.*/
content  FileType
    txt       :highlight MyGroup ctermfg=darkcyan ctermbg=NONE  | :match MyGroup /^\--.*\|<http.*>\|^http.*/        |
Syntax
    *         call s:SynSet()
    cpp       if (exists('b:load_doxygen_syntax') && b:load_doxygen_syntax)^I|| (exists('g:load_doxygen_syntax') && g:load_doxygen_syntax)   | runtime! syntax/doxygen
.vim | endif
    c         if (exists('b:load_doxygen_syntax') && b:load_doxygen_syntax)^I|| (exists('g:load_doxygen_syntax') && g:load_doxygen_syntax)   | runtime! syntax/doxygen
.vim | endif
    idl       if (exists('b:load_doxygen_syntax') && b:load_doxygen_syntax)^I|| (exists('g:load_doxygen_syntax') && g:load_doxygen_syntax)   | runtime! syntax/doxygen
.vim | endif
Press ENTER or type command to continue



# 現在の vim バージョン(OS X 10.6.6)
% vim --version
VIM - Vi IMproved 7.2 (2008 Aug 9, compiled Aug 10 2010 22:09:22)
...

[memo]
python のインデントはこのままだとうまくいかない。

[2011-02-19]
'# coding\: utf-8'
になってた。
'# coding: utf-8'
に修正

2010/07/01

safari.scpt

インターネットでなにかをみていると、これは!と思うことがあります。ふとみれば vim が立ち上がっている。今開いているファイルにこのURL をメモしておきたいと思ったらどうしたらいいんだろ...

昔(OS 9 の頃か?)今みているブラウザのURL とタイトルをクリップボードにコピーするAppleScript をどなたかが公開していた思うのですが、それに近いことを vim 内でできないかな?って試みです。

vim から osascript を呼び出せると最近知りましたので使ってみました。

# home に戻ります。
$ cd
# テキストファイルを作ります。
$ vim 01.txt
# .applescript でも .txt でもどっちでもいいみたい。

$ 01.txt

tell application "Safari"
  tell current tab of window 1
    set str to "-- 
" & name & "
" & URL
  end tell
  return str
end tell


# コンパイルしてみます。# この時 Safari が起動します。(起動していなかった場合)
$ osacompile -o ~/01.scpt 01.txt

$ vim memo.txt
# vim で memo などしています。と思いきやインターネットもみているとします。

# !!と思ったら
:r !osascript ~/01.scpt


--
Apple - Support - Discussions - Forum Home
http://discussions.apple.com/index.jspa


# ↑こんな感じに title とulr が書き込まれます。
# でも
# Safari の window を開いない時に誤って :r! osascript ... したとすると
... Can’t make name of «class cTab» of window 1 of application "Safari" ....
# ↑このようになっちゃいます。これを修正しつつあらたまった風情にしてみます。

$ cat 02.applescript

script get_title_url
  to main()
    set n to ASCII character (10)
    tell application "Safari"
      try
        tell current tab of window 1
          set str to "--" & n & name & n & URL & n & "<a href='" & URL & "'>" & name & "</a>"
          if URL is "" then return
          return str
        end tell
      end try
    end tell
  end main
end script

on run
  tell get_title_url
    return main()
  end tell
end run


$ osacompile -o ~/safari.scpt 02.applescript
# test
:r !osascript ~/safari.scpt


--
Mac OS X clipboard sharing - Vim Tips Wiki
http://vim.wikia.com/wiki/VimTip687
<a href='http://vim.wikia.com/wiki/VimTip687'>Mac OS X clipboard sharing - Vim Tips Wiki</a>


# うまくいきました。
# -- INSERT -- で \safari と打つとタイトルとURL とリンク形式文字列が埋め込まれるようにしてみる?
# inoremap <Leader>safari <ESC>:<C-u>read !osascript ~/safari.scpt<CR>kkkddjjA

osascript から受け取る文字列の行頭には \n が混入されている為(\n--\n になる)受け取った後にvim側で kkkdd とかしてます。osascript 側からこれを制御できればいいけどどうしてもわりませんでした。

+++

もっと他の方法(or 適切なのはこうだよ or coolなのあるよ or ふつうこうだよ or plug-in あるよ)などをご存知の方は教えてくださいませ。どのようなコメントも大歓迎です。

[2010-07-08]
fileencodings=utf-8 以外を設定しているとおかしなことになるかもしれません。 アマゾンの本のトップページをsafariで開き、上記の safari.scpt をvim 経由で動かすと下記のようになります。 こうならない場合は :set fileencodings? あたりをみてみてください。

# アマゾンの本トップページ
--
Amazon.co.jp: 本 (和書) 
http://www.amazon.co.jp/%E6%9C%AC-%E5%92%8C%E6%9B%B8/b/ref=sa_menu_jb0/377-9481435-0601213?ie=UTF8&node=465392
109 
<a href='http://www.amazon.co.jp/%E6%9C%AC-%E5%92%8C%E6%9B%B8/b/ref=sa_menu_jb0/377-9481435-0601213?ie=UTF8&node=465392'>Amazon.co.jp : 本 (和書)</a>

# 日本語の本を一冊選んだ場合
--
Amazon.co.jp: 床下の小人たち (岩波少年文庫): メアリー ノートン, ダイアナ・スタンレー, Mary Norton, 林 容吉: 本
http://www.amazon.co.jp/%E5%BA%8A%E4%B8%8B%E3%81%AE%E5%B0%8F%E4%BA%BA%E3%81%9F%E3%81%A1-%E5%B2%A9%E6%B3%A2%E5%B0%91%E5%B9%B4%E6%96%87%E5%BA%AB-%E3%83%A1%E3%82%A2%E3%83%AA%E3%83%BC-%E3%83%8E%E3%83%BC%E3%83%88%E3%83%B3/dp/4001140624/ref=pd_ts_zgc_b_526266_1/377-9481435-0601213?_encoding=UTF8&s=books&pf_rd_m=AN1VRQENFRJN5&pf_rd_s=right-4&pf_rd_r=0EK1B90C9XBKZFDFK6AT&pf_rd_t=1401&pf_rd_p=95969149&pf_rd_i=3077031496
<a href='http://www.amazon.co.jp/%E5%BA%8A%E4%B8%8B%E3%81%AE%E5%B0%8F%E4%BA%BA%E3%81%9F%E3%81%A1-%E5%B2%A9%E6%B3%A2%E5%B0%91%E5%B9%B4%E6%96%87%E5%BA%AB-%E3%83%A1%E3%82%A2%E3%83%AA%E3%83%BC-%E3%83%8E%E3%83%BC%E3%83%88%E3%83%B3/dp/4001140624/ref=pd_ts_zgc_b_526266_1/377-9481435-0601213?_encoding=UTF8&s=books&pf_rd_m=AN1VRQENFRJN5&pf_rd_s=right-4&pf_rd_r=0EK1B90C9XBKZFDFK6AT&pf_rd_t=1401&pf_rd_p=95969149&pf_rd_i=3077031496'>Amazon.co.jp: 床下の小人たち (岩波少年文庫): メアリー ノートン, ダイアナ・スタンレー, Mary Norton, 林 容吉: 本</a>