2009年7月23日木曜日

vimshell Ver.5.26, neocomplcache Ver.2.63 Released!

最近忙しく、ブログの更新はおざなりになってました。
vimshellの開発は進んでいます。neocomplcacheの更新もやってますが、vimshellで使いやすくするために変更したものが多いです。

ざっと変更点を挙げておきます。

vimshell Ver.5.26
・g:VimShellEnableInteractive=0でないと、プログラムの実行がエラーになるバグを修正
・iexeで補完ができるようになった
・iexe &でヒストリを参照できるようになった
・iexe &で<C-t>を押すことにより、プログラムの補完を呼び出せるようになった。
・バックグラウンド実行したプロセスのバッファにfiletypeを設定、neocomplcacheで補完できるようになった。
・vimshellバッファのシンタックスハイライトを改善した

neocomplcache Ver.2.63
・ERBのスニペットを改善した
・vimshellでのキーワードパターンを改善した
・Railsで使いやすいように、ERBはrubyのバッファからキーワードを参照できるようになった
・ファイル名補完の動作を改善、長いファイル名でも見やすくなった

Windowsユーザーでvimshellを使う場合、
cdのパスは/を使ってください。
\はエスケープシーケンスになっているので使えません。

5 件のコメント:

  1. さっそく vimshell 5.26 を入れてみたのですが
    cd ..\folder
    といった「\」を使ったディレクトリ移動時にエラーが出るようですが、いかがでしょうか?
    windows XP です。

    function vimshell#process_enter..vimshell#parser#eval_script..<SNR>52_split_statements の処理中にエラーが検出されました
    E121: 未定義の変数です: l:script

    いちおう、こんな感じでエラーは出なくなりましたが・・・

    diff --git a/autoload/vimshell/parser.vim b/autoload/vimshell/parser.vim
    index 28ebd0c..d7cbfce 100644
    --- a/autoload/vimshell/parser.vim
    +++ b/autoload/vimshell/parser.vim
    @@ -29,7 +29,8 @@
    function! vimshell#parser#eval_script(script, other_info)"{{{
    let l:skip_prompt = 0
    " Split statements.
    - for l:statement in s:split_statements(a:script)
    + let l:rscript = substitute(a:script,'\\','/','g')
    + for l:statement in s:split_statements(l:script)
    " Get program.
    let l:program = matchstr(l:statement, '^\s*\zs[^[:blank:]]*')
    let l:script = substitute(l:statement, '^\s*'.l:program, '', '')

    返信削除
  2. \はエスケープシーケンスになるので使えません。Windowsの環境であっても/を使ってください。エラーが出る問題はバグです。修正します。

    返信削除
  3. エラーは修正しました。
    http://github.com/Shougo/vimshell/tree/87d16259190c4a3612a9f2ae2460d94437644ae1

    neocomplcacheでも\->/になるように対応。
    http://github.com/Shougo/neocomplcache/tree/536ccb0bc6102356678a1ef48bbc7e96cf2fdf2b

    返信削除
  4. たとえば
    cd ../
    とうったあとに Tab を使って補完すると
    cd ..\folder
    といった具合に勝手に \ に変わっちゃいます。
    / を指定できる設定があるのであれば僕の勉強不足なだけなんですが(^^;

    返信削除
  5. set shellslashすると、ファイル名補完時にパス名の\は/に変換されます。ただし、最新版のneocomplcacheのファイル名補完では\を/に変換する処理を入れています。
    http://github.com/Shougo/neocomplcache/tree/536ccb0bc6102356678a1ef48bbc7e96cf2fdf2b
    こちらを使用するならset shellslashを設定する必要はありません。

    返信削除