最近忙しく、ブログの更新はおざなりになってました。
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のパスは/を使ってください。
\はエスケープシーケンスになっているので使えません。
さっそく 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, '', '')
\はエスケープシーケンスになるので使えません。Windowsの環境であっても/を使ってください。エラーが出る問題はバグです。修正します。
返信削除エラーは修正しました。
返信削除http://github.com/Shougo/vimshell/tree/87d16259190c4a3612a9f2ae2460d94437644ae1
neocomplcacheでも\->/になるように対応。
http://github.com/Shougo/neocomplcache/tree/536ccb0bc6102356678a1ef48bbc7e96cf2fdf2b
たとえば
返信削除cd ../
とうったあとに Tab を使って補完すると
cd ..\folder
といった具合に勝手に \ に変わっちゃいます。
/ を指定できる設定があるのであれば僕の勉強不足なだけなんですが(^^;
set shellslashすると、ファイル名補完時にパス名の\は/に変換されます。ただし、最新版のneocomplcacheのファイル名補完では\を/に変換する処理を入れています。
返信削除http://github.com/Shougo/neocomplcache/tree/536ccb0bc6102356678a1ef48bbc7e96cf2fdf2b
こちらを使用するならset shellslashを設定する必要はありません。