MacVim に vim-ref をちょっと難しかったけど入れる方法

vim-ref は phpmanual 等のリファレンスをvim上で見るためのプラグインです。ちなみにデフォルトでは phpmanual は見れませんので対応方法をまとめておきます。
thinca/vim-ref – GitHub

追記: 最終的には解決しております。一番最後に結果の .vimrc がありますのでご覧ください。

インストール手順

vim-ref を普通にインストール。その後、PHP: Download documentation より Many HTML files をダウンロードして好きな場所に置く。

多分中身にはたくさんのファイルが入っている状況です。そのディレクトリを .vimrc で以下のように指定します。私の環境では g:ref_phpmanual_cmd も設定しないと読み込まれませんでした。

1
2
let g:ref_phpmanual_path = '/path/php-chunked-xhtml/'
let g:ref_phpmanual_cmd = 'w3m -dump %s'

また w3m もインストールしておきます。

1
sudo port install w3m

これで調べたい関数の上で <S-k> (Shift 押しながら K を押す)するとウィンドウが分割されてマニュアルが見れるはずですが、私の場合はウィンドウが分割されて以下のようなテキストが表示されました。

1
2
com.examples.foreach
control_structures.foreach

非常に残念です。

1
w3m 'http://google.com/'

としたら正常に見れたところ w3g がおかしいわけではないようです。
ちなみに、以下のコマンドで処理の流れを見れるようですが意味わかりませんでした。

1
 :99verbose Ref phpmanual foreach

以下、vim-ref を設定する時に参考にさせて頂いた記事です。

追記: w3m はどうやら vim から使えない状態でした

人によるとは思いますが、普通にインストールしただけでは vim 経由で w3m を使えないようです。先ほどインストールしました w3m の場所を調べたところ /opt/local/bin にあるようです。そのためここにパスを通します。

Vim から PATH を変更したい場合は、let $PATH = $PATH . ‘:/opt/local/bin’ で追加できるというアドバイスを頂きました。ありがとうございます。これでなんとか vim 経由で w3m が使えるようになりました。

追記: vim-ref が使えるようになりました

thinca 様とsplhack 様にアドバイス頂き解決に至りました。ありがとうございます。主な作業や調査内容などは全てコメント欄にありますのでご覧ください。

結果的に .vimrc に必要だった設定は以下です。

1
2
let g:ref_phpmanual_path = '/path/php-chunked-xhtml/'
let $PATH = $PATH . ':/opt/local/bin'

thinca 様は vim-ref の作者様です

splhack 様は macvim-kaoriya を管理されてる方です

コメント

  1. thincaさんのコメント

    複数の候補がある場合は、候補の一覧を表示する仕様になっています。
    見たい候補の上で を押してみてください。

  2. webleさんのコメント

    アドバイスありがとうございます。候補の上で、return ですかね、押したら !man に飛んでしまいました。w3m しかインストールしていないんですが…これは諦めるしかない動作ですかね…。

  3. thincaさんのコメント

    すいませんが、候補の上で

    :call ref#jump(‘normal’)

    を実行するとどうなるでしょう?
    多分エラーが出ると思うので、エラーの内容を教えて頂けると助かります。

    また、

    > 私の環境では g:ref_phpmanual_cmd も設定しないと読み込まれませんでした。

    この件ですが、この変数は最初に :Ref コマンドを実行した際に設定されていなければ初期値が設定されます。Vim の起動直後には存在しません。
    それとも、実行後にも設定されなかった、と言うことでしょうか?

  4. thincaさんのコメント

    原因はわかりませんが、どうやら、b:ref_source が消えている感じですね。
    念のため確認ですが、候補の表示された ref バッファで

    :echo b:ref_source

    として値は表示されますか? また、ref バッファのバッファ名はどうなっていますか?

    :echo bufname(‘%’)

    > phpmanual が読み込まれなくなってしまいます。
    その時 g:ref_phpmanual_cmd の値はどうなっていますか?
    空になっている場合は、Vim が w3m を見つけられていません。
    w3m は Vim から見える形でインストールされていますか?

    :echo executable(‘w3m’)

    は 1 になりますか? ならない場合は、手動での設定が必要になります。

    • webleさんのコメント

      :echo b:ref_source とさせて頂きましたところ、結果は以下のようでした。

      E121: 未定義の変数です: b:ref_source
      E15: 無効な式です: b:ref_source

      また :echo bufname(‘%’) としたところ何も起こりませんでした。

      phpmanual が読み込まれなくっている件ですが、:echo g:ref_phpmanual_cmd ところ何も起こりませんでしたので、w3m は普通にインストールした後何か作業を行って vim から見れるようにする必要があったのでしょうか。

      確かに今 terminal から w3m ‘http://www.google.com’ とやったら見れたのに対し、vim で :!w3m ‘http://www.google.com’ とやっても見ることはできませんでした。こちらについても解決しなければいけません。

  5. thincaさんのコメント

    ref バッファがうまく作られてませんね…。
    試しに、ref.vim 以外のプラグインや設定を無効にして試してもらえないでしょうか?

    $ vim -u NONE -N

    で起動した後、pathogenなどを使用している場合は

    :set rtp+=~/.vim/bundle/vim-ref

    として、(pathogenを使ってない場合は無視してください)

    :runtime plugin/ref.vim

    で ref.vim のみをロードできます。
    あとは

    let g:ref_phpmanual_path = ‘/path/php-chunked-xhtml/’

    をして、この状態で使えるか試してください。もし使えた場合は、vimrc か他のプラグインが悪さをしている可能性があります。

    w3m については、環境変数 $PATH を確認してください。ターミナルで動くということは、ターミナルでの $PATH と Vim での $PATH が異なっている可能性が高いです。
    ターミナルでも Vim でも

    echo $PATH

    で確認できます。

    • webleさんのコメント

      このような無知な私にこれだけのアドバイスを頂き大変感謝しております。

      さっそくですが vim -u NONE -N と実行したところエラーが出て起動ができませんでした。vim とすれば通常通り vim は起動します。私の方は zsh と bash を使用しておりますが、何か特殊なコマンドなのでしょうか…申し訳ありません。

      また w3m は /opt/local/bin/ にあったのを確認しました、また echo $PATH をしたところこちらのディレクトリが登録されていなかったため、勝手が分からないのですが以下のようにしてみましたが、これでは追加ができないですね。

      let $PATH += ‘/opt/local/bin/’

      こうしたあと再び echo $PATH としても何も変化無しでした。
      問題を解決するための操作で問題が起こっており申し訳ないです。

  6. webleさんのコメント

    $PATH の変更は無事完了致しました。ご迷惑おかけしました。

  7. thincaさんのコメント

    > vim -u NONE -N と実行したところエラーが出て起動ができませんでした。
    おかしいですね。vim が実行できるならエラーが出るようなコマンドじゃないんですが…。
    エラーの内容を教えてください。

    • webleさんのコメント

      エラーというかヘルプ的なものが出てしまいます。

      open: invalid option — u
      Usage: open [-e] [-t] [-f] [-W] [-R] [-n] [-g] [-h] [-b ] [-a ] [filenames] [--args arguments]
      Help: Open opens files from a shell.
      By default, opens each file using the default application for that file.
      If the file is in the form of a URL, the file will be opened as a URL.
      Options:
      -a Opens with the specified application.
      -b Opens with the specified application bundle identifier.
      -e Opens with TextEdit.
      -t Opens with default text editor.
      -f Reads input from standard input and opens with TextEdit.
      -R, –reveal Selects in the Finder instead of opening.
      -W, –wait-apps Blocks until the used applications are closed (even if they were already running).
      –args All remaining arguments are passed in argv to the application’s main() function instead of opened.
      -n, –new Open a new instance of the application even if one is already running.
      -g, –background Does not bring the application to the foreground.
      -h, –header Searches header file locations for headers matching the given filenames, and opens them.

      のような感じとなっております。

  8. thincaさんのコメント

    vim を open に alias したりしてないでしょうか?

    • webleさんのコメント

      thinca 様
      splhack 様

      申し訳ありません。以前 vim を terminal から使いやすくするために以下のような物を入れていました。

      alias vim=”open -n -a /Applications/MacVim.app/”

      これを解除させて頂きまして thinca 様コメントを参考に vim-ref プラグインのみを読み込んだところ普通に動きました。

      しかし、この後普通に vim を起動したところ普通に :Ref phpmanual foreach でマニュアルを見ることができました!
      解決になった操作は分かりませんが、 alias が個人的には問題になっていたと思うのですがいかがでしょうか。

      後で記事にも追記しますが vim-ref の設定は以下を追加しただけの状態となっています。

      let g:ref_phpmanual_path = ‘/Users/weble/.vim/bundle/vim-ref/download/php-chunked-xhtml/’
      let $PATH = $PATH . ‘:/opt/local/bin’

      ここまでいろいろと解決までアドバイス頂き大変ありがとうございました!vim が今までよりも大好きになりました!それと自分勝手な alias はあまり入れず、なるべく vim なら vim で対応するように心がけます、alias が問題なのかどうか分からないのですが…。

  9. splhackさんのコメント

    $ /Applications/MacVim.app/Contents/MacOS/Vim -g -u NONE -N

    もしくは
    http://code.google.com/p/macvim-kaoriya/wiki/Readme#コンソールからの使用
    にあるmvimを使うと便利です。

    $ mvim -u NONE -N

  10. kwmksjさんのコメント

    which vimの実行結果が/usr/bin/vimになっていませんか?
    もしこうなっている場合はMacVimへのパスが通っておらず起動しているのはMacVimではないのだと思います。
    MacVimとMacに最初から入っているVimは別もので、
    MacVimのインストール先が、/Applications/MacVim.appなどである場合は、/Applications/MacVim.app/Contents/MacOsへパスを通す必要があったはずです(うろ覚え…)