Changeset 33550

Show
Ignore:
Timestamp:
05/25/09 12:19:36 (4 years ago)
Author:
from_kyushu
Message:

update VimShell?

Location:
dotfiles/vim/from_kyushu/.vim
Files:
2 added
6 modified
1 copied

Legend:

Unmodified
Added
Removed
  • dotfiles/vim/from_kyushu/.vim/autoload/vimshell/internal/bg.vim

    r33323 r33550  
    22" FILE: bg.vim 
    33" AUTHOR: Shougo Matsushita <Shougo.Matsu@gmail.com> 
    4 " Last Modified: 29 Apr 2009 
     4" Last Modified: 22 May 2009 
    55" Usage: Just source this file. 
    66" License: MIT license  {{{ 
     
    2424"     SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 
    2525" }}} 
    26 " Version: 1.0, for Vim 7.0 
     26" Version: 1.2, for Vim 7.0 
    2727"----------------------------------------------------------------------------- 
    2828" ChangeLog: "{{{ 
     29"   1.2: 
     30"     - Use vimproc. 
     31"   1.1: 
     32"     - Fixed in *nix. 
    2933"   1.0: 
    3034"     - Initial version. 
     
    3842""}}} 
    3943"============================================================================= 
     44 
     45let s:background_programs = 0 
     46augroup VimShellBg 
     47    autocmd! 
     48augroup END 
    4049 
    4150function! vimshell#internal#bg#execute(program, args, fd, other_info) 
     
    6473        let l:other_info.is_background = 1 
    6574        return vimshell#internal#iexe#execute(a:args[0], a:args[1:], a:fd, l:other_info) 
    66     elseif has('win32') || has('win64') 
    67         if g:VimShell_UseCkw 
    68             " Use ckw. 
    69             silent execute printf('!start ckw -e %s %s %s', &shell, &shellcmdflag, join(a:args)) 
    70         else 
    71             silent execute printf('!start %s', join(a:args)) 
    72         endif 
     75    elseif globpath(&runtimepath, 'autoload/proc.vim') != '' 
     76        " Background execute. 
     77        return s:init_bg(a:args, a:other_info.is_interactive) 
    7378    else 
    74         " For *nix. 
    75  
    76         let l:tmpfile = tempname() 
    77         " Background execute. 
    78         execute printf('!%s & > %s', join(a:args), l:tmpfile) 
    79  
    80         " Edit redirect file. 
    81         split 
    82         edit `=l:tmpfile` 
    83         setlocal autoread 
    84         wincmd w 
     79        " Execute in screen. 
     80        return vimshell#internal#screen#execute(a:args[0], a:args[1:], a:fd, l:other_info) 
    8581    endif"}}} 
    8682endfunction 
     83 
     84function! vimshell#internal#bg#vimshell_bg(args)"{{{ 
     85    " Interactive execute command. 
     86    if empty(globpath(&runtimepath, 'autoload/proc.vim')) 
     87        " Error. 
     88        echohl WarningMsg | echo "Must have vimproc plugin." | echohl None 
     89        return 
     90    endif 
     91 
     92    call s:init_bg(a:args, 0) 
     93endfunction"}}} 
     94 
     95function! s:init_bg(args, is_interactive)"{{{ 
     96    if a:args[0] !~ '^[./]' 
     97        if has('win32') || has('win64') 
     98            let l:path = substitute($PATH, ';', ',', 'g') 
     99        else 
     100            let l:path = substitute($PATH, ':', ',', 'g') 
     101        endif 
     102 
     103        let l:args = insert(a:args[1:], globpath(l:path, a:args[0])) 
     104    else 
     105        let l:args = a:args 
     106    endif 
     107 
     108    let l:proc = proc#import() 
     109 
     110    try 
     111        if has('win32') || has('win64') 
     112            let l:sub = l:proc.popen2(a:args) 
     113        else 
     114            let l:sub = l:proc.ptyopen(l:args) 
     115        endif 
     116    catch 
     117        if a:is_interactive 
     118            call vimshell#error_line('File not found.') 
     119        else 
     120            echohl WarningMsg | echo "File not found." | echohl None 
     121        endif 
     122        return 
     123    endtry 
     124 
     125    " Init buffer. 
     126    if a:is_interactive 
     127        call vimshell#print_prompt() 
     128    endif 
     129    split 
     130    edit `=join(a:args).'&'.(bufnr('$')+1)` 
     131    setlocal buftype=nofile 
     132    setlocal noswapfile 
     133 
     134    " Set variables. 
     135    let b:proc = l:proc 
     136    let b:sub = l:sub 
     137 
     138    if s:background_programs <= 0 
     139        autocmd VimShellBg CursorHold * call s:check_bg() 
     140    endif 
     141    let s:background_programs += 1 
     142    autocmd BufDelete <buffer>       call s:bg_exit() 
     143    nnoremap <buffer><silent><C-c>       :<C-u>call <SID>bg_exit()<CR> 
     144    inoremap <buffer><silent><C-c>       <ESC>:<C-u>call <SID>bg_exit()<CR> 
     145 
     146    call s:execute_bg() 
     147 
     148    return 1 
     149endfunction"}}} 
     150 
     151function! s:check_bg()"{{{ 
     152    let l:save_cursor = getpos('.') 
     153    let l:bufnumber = 1 
     154    let l:current_buf = bufnr('%') 
     155    while l:bufnumber <= bufnr('$') 
     156        if buflisted(l:bufnumber) && string(getbufvar(l:bufnumber, 'sub')) != '' 
     157            execute 'buffer ' . l:bufnumber 
     158            call s:execute_bg() 
     159        endif 
     160        let l:bufnumber += 1 
     161    endwhile 
     162    execute 'buffer ' . l:current_buf 
     163    call setpos('.', l:save_cursor) 
     164endfunction"}}} 
     165 
     166function! s:execute_bg()"{{{ 
     167    if !exists('b:sub') 
     168        return 
     169    endif 
     170 
     171    if has('win32') || has('win64') 
     172        if !b:sub.stdout.eof 
     173            for line in split(b:sub.stdout.read(-1, 0), '\r\n\|\r\|\n') 
     174                call vimshell#print_line(line) 
     175            endfor 
     176            redraw 
     177        endif 
     178 
     179        if b:sub.stdout.eof 
     180            call s:bg_exit() 
     181        endif 
     182    else 
     183        if !b:sub.eof 
     184            for line in split(b:sub.read(-1, 2000), '\r\n\|\r\|\n') 
     185                call vimshell#print_line(line) 
     186            endfor 
     187            redraw 
     188        endif 
     189 
     190        if b:sub.eof 
     191            call s:bg_exit() 
     192        endif 
     193    endif 
     194endfunction"}}} 
     195 
     196function! s:bg_exit()"{{{ 
     197    if !exists('b:sub') 
     198        return 
     199    endif 
     200 
     201    let [l:cond, l:status] = b:proc.api.vp_waitpid(b:sub.pid) 
     202    call append(line('$'), '*Exit*') 
     203    redraw 
     204    normal! G 
     205 
     206    unlet b:sub 
     207    unlet b:proc 
     208    setlocal nomodifiable 
     209 
     210    let s:background_programs -= 1 
     211    if s:background_programs == 0 
     212        autocmd VimShellBg CursorHold ! 
     213    endif 
     214endfunction"}}} 
  • dotfiles/vim/from_kyushu/.vim/autoload/vimshell/internal/ev.vim

    r32603 r33550  
    22" FILE: ev.vim 
    33" AUTHOR: Shougo Matsushita <Shougo.Matsu@gmail.com>(Modified) 
    4 " Last Modified: 31 Mar 2009 
     4" Last Modified: 11 May 2009 
    55" Usage: Just source this file. 
    66" License: MIT license  {{{ 
     
    2424"     SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 
    2525" }}} 
    26 " Version: 1.1, for Vim 7.0 
     26" Version: 1.2, for Vim 7.0 
    2727"----------------------------------------------------------------------------- 
    2828" ChangeLog: "{{{ 
     29"   1.2: 
     30"     - Save result. 
    2931"   1.1: 
    3032"     - Supported vimshell Ver.3.2. 
     
    4345function! vimshell#internal#ev#execute(program, args, fd, other_info) 
    4446    " Evaluate arguments. 
    45     call vimshell#print_line(string(eval(join(a:args, ' ')))) 
     47    if !exists('s:ev_result') 
     48        let s:ev_result = 0 
     49    endif 
     50    let s:ev_result = eval(substitute(join(a:args), '\$\$', s:ev_result, 'g')) 
     51    call vimshell#print_line(string(s:ev_result)) 
    4652endfunction 
  • dotfiles/vim/from_kyushu/.vim/autoload/vimshell/internal/let.vim

    r32603 r33550  
    11"============================================================================= 
    2 " FILE: ev.vim 
     2" FILE: let.vim 
    33" AUTHOR: Shougo Matsushita <Shougo.Matsu@gmail.com>(Modified) 
    4 " Last Modified: 31 Mar 2009 
     4" Last Modified: 11 May 2009 
    55" Usage: Just source this file. 
    66" License: MIT license  {{{ 
     
    2424"     SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 
    2525" }}} 
    26 " Version: 1.1, for Vim 7.0 
     26" Version: 1.0, for Vim 7.0 
    2727"----------------------------------------------------------------------------- 
    2828" ChangeLog: "{{{ 
    29 "   1.1: 
    30 "     - Supported vimshell Ver.3.2. 
    3129"   1.0: 
    3230"     - Initial version. 
     
    4139"============================================================================= 
    4240 
    43 function! vimshell#internal#ev#execute(program, args, fd, other_info) 
    44     " Evaluate arguments. 
    45     call vimshell#print_line(string(eval(join(a:args, ' ')))) 
     41function! vimshell#internal#let#execute(program, args, fd, other_info) 
     42    if len(a:args) < 1 
     43        call vimshell#error_line('Arguments required.') 
     44        return 
     45    endif 
     46 
     47    let l:result = matchlist(join(a:args), '^\(\$\?\h\w*\)\s*=\s*\(.*\)$') 
     48    if empty(l:result) || l:result[1] == '' 
     49        call vimshell#error_line('Wrong variable name.') 
     50        return 
     51    endif 
     52    let l:var_name = l:result[1] 
     53    let l:val = l:result[2] 
     54    execute printf('let %s = %s', l:var_name, l:val) 
    4655endfunction 
  • dotfiles/vim/from_kyushu/.vim/autoload/vimshell/internal/screen.vim

    r33323 r33550  
    22" FILE: screen.vim 
    33" AUTHOR: Shougo Matsushita <Shougo.Matsu@gmail.com> 
    4 " Last Modified: 29 Apr 2009 
     4" Last Modified: 07 May 2009 
    55" Usage: Just source this file. 
    66" License: MIT license  {{{ 
     
    2424"     SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 
    2525" }}} 
    26 " Version: 1.0, for Vim 7.0 
     26" Version: 1.1, for Vim 7.0 
    2727"----------------------------------------------------------------------------- 
    2828" ChangeLog: "{{{ 
     29"   1.1: 
     30"     - Fixed error. 
    2931"   1.0: 
    3032"     - Initial version. 
     
    4244    " Execute program in screen. 
    4345    if &term =~ "^screen" 
    44         silent execute printf('!screen %s', substitute(l:line, '&\s*$', '', '')) 
     46        silent execute printf('!screen %s', join(a:args)) 
     47    elseif has('win32') || has('win64') 
     48        if g:VimShell_UseCkw 
     49            " Use ckw. 
     50            silent execute printf('!start ckw -e %s %s %s', &shell, &shellcmdflag, join(a:args)) 
     51        else 
     52            silent execute printf('!start %s', join(a:args)) 
     53        endif 
    4554    else 
    46         " Error. 
    47         call vimshell#error_line('Not in screen.') 
     55        " For *nix. 
     56 
     57        " Background execute. 
     58        call system(join(a:args) . '&') 
    4859    endif 
    4960endfunction 
  • dotfiles/vim/from_kyushu/.vim/ftplugin/vimshell.vim

    r33323 r33550  
    1010 
    1111" Filename completion. 
    12 inoremap <buffer><expr><TAB>  pumvisible() ? "\<C-n>" : "\<C-x>\<C-f>" 
     12inoremap <buffer><expr><TAB>  pumvisible() ? "\<C-n>" : exists(':NeoComplCacheDisable') && exists('*neocomplcache#manual_filename_complete') ?  
     13            \ neocomplcache#manual_filename_complete() : "\<C-x>\<C-f>" 
     14 
  • dotfiles/vim/from_kyushu/.vim/plugin/vimshell.vim

    r33323 r33550  
    33" AUTHOR: Janakiraman .S <prince@india.ti.com>(Original) 
    44"         Shougo Matsushita <Shougo.Matsu@gmail.com>(Modified) 
    5 " Last Modified: 29 Apr 2009 
     5" Last Modified: 23 May 2009 
    66" Usage: Just source this file. 
    77" License: MIT license  {{{ 
     
    2525"     SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 
    2626" }}} 
    27 " Version: 5.7, for Vim 7.0 
     27" Version: 5.11, for Vim 7.0 
    2828"----------------------------------------------------------------------------- 
    2929" ChangeLog: "{{{ 
     30"   5.11: 
     31"     - Added VimShellExecute and VimShellInteractive commands. 
     32"   5.10: 
     33"     - Implemented iexe. 
     34"     - Improved bg. 
     35"     - Improved print_prompt(). 
     36"     - Use neocomplcache#manual_filename_complete(). 
     37"   5.9: 
     38"     - Fixed background execution. 
     39"     - Fixed auto_cd bug. 
     40"     - Fixed error in screen command. 
    3041"   5.8: 
    3142"     - Fixed !! error. 
     
    240251 
    241252command! -nargs=0 VimShell call vimshell#switch_shell(0) 
     253command! -nargs=+ -complete=shellcmd VimShellExecute call vimshell#internal#bg#vimshell_bg(split(<q-args>)) 
     254command! -nargs=+ -complete=shellcmd VimShellInteractive call vimshell#internal#iexe#vimshell_iexe(split(<q-args>)) 
    242255 
    243256let g:loaded_vimshell = 1 
  • dotfiles/vim/from_kyushu/.vim/presen/vimshell.txt

    r33323 r33550  
    55 
    66-------------------------------- 
    7 まずは自己紹介 
    8  
    9 Shougo 
    10 Vim歴4年目。だが、本格的にVimに目覚めたのはごく最近のこと。 
    11 Vimを使い始めたのは、Vimは多数の言語に対してsyntaxハイライトができたから。 
    12 最近までneocomplcacheの開発に忙しかったが、 
    13 まだまだvimshellもやることがいっぱいあって現実逃避中。 
    14  
    15 -------------------------------- 
    16 代表作 
    17 ・bufstatus 
    18 http://github.com/Shougo/shougo-s-github/blob/a1a9d5d0a9a4a53fedec52f7d1be0c9c9341f787/vim/plugin/bufstatus.vim 
    19 ・vimshell 
    20 https://github.com/Shougo/vimshell/tree 
    21 ・neocomplcache 
    22 https://github.com/Shougo/neocomplcache/tree 
    23  
    24 今回は、みんながお待ちかねのvimshellについて話をします。 
    25  
    26 -------------------------------- 
    277vimshellとは? 
    288 
    299VimScriptによって実装された究極のシェル。 
    30 略してvshell。ただし、eshellとは違ってまだまだです。 
     10略してvshell。ただし、eshellとは違ってまだまだ未完成です。 
    3111一番の特徴としては、Vimのプラグインと連携ができること。 
    32 Windowsはシェルがしょぼいので、使用していてイライラしますが、 
    33 vimshellはWindowsでも動作するので安心です。 
    34 しかも、他のシェルの便利な機能を多数取り込んでいます。 
     12特にWindowsはシェルが貧弱なので、使用していてイライラしますが、vimshellはWindowsでも動作するので安心です。 
     13ただしWindows上では一部の機能が制限されます。 
     14加えて、他のシェルの便利な機能を多数取り込んでいます。 
    3515設定して当たり前の機能は標準的に使えるため、zshと比べて設定の手間もありません。 
     16 
     17-------------------------------- 
     18入手方法 
     19 
     20http://github.com/Shougo/vimshell/tree/master (毎週更新) 
     21 
     22ちゃんとしたドキュメントができたらwww.vim.orgにも登録したいです。 
     23しかし仕様が安定していないこともあり、登録はまだまだ先になるでしょう。 
     24 
     25-------------------------------- 
     26使い方 
    3627 
    3728-------------------------------- 
     
    4637-------------------------------- 
    4738vimsh.vimの良いところ 
    48 ・インタラクティブなシェルが起動できる 
     39・インタラクティブなシェルが起動できる(Windows以外) 
    4940・Vimから独立している 
    5041 
    5142vimsh.vimの悪いところ 
    5243・Pythonインタフェースが必要 
    53 ・バグ多い 
     44・バグ多い 
    5445・必要なくても勝手に起動する 
    5546 
     
    6253Shell.vimの悪いところ 
    6354・もう長い間更新されてない 
    64 ・インタラクティブなプログラムを起動するとフリーズ 
     55・インタラクティブなプログラムを起動するとフリーズしてしまう 
    6556 
    6657-------------------------------- 
    6758Vim-Shellプロジェクトの良いところ 
    68 完全なシェルを動作させることができる 
    69 色分けもできる 
     59内部で完全なシェルを動作させることができる 
     60エスケープシーケンスを解釈するので、色分けもできる 
    7061 
    7162Vim-Shellプロジェクトの悪いところ 
    7263・あまりに巨大なパッチなので、本家に取り込まれることはない 
    7364・Vimのバージョンごとの互換性がない 
    74 ・しかも更新頻度が遅い 
     65・しかも更新頻度が遅い(Vim7.2には未対応) 
    7566 
    7667-------------------------------- 
     
    8071・cursesも動作する(ansi-term.elを使った方がよい) 
    8172・色分けもできる 
    82 ・情報多い 
     73・情報多い 
    8374 
    8475eshell.elの悪いところ 
    8576・Emacsen専用 
    86 ・起動が 
     77・起動が 
    8778 
    8879-------------------------------- 
     
    10091・完全にVim内で動作する 
    10192・色分けもできる 
    102 ・開発早い 
    103 他のプラグインと連携できる 
     93・開発早い 
     94Vimのプラグインと連携ができる 
    10495・ワンライナー対応 
    10596・実験的ながら、非同期実行をサポート 
    10697・自動ディレクトリスタックや、auto_cdなど、zshの機能を取り込んでいる 
     98・内部コマンドを簡単に追加可能 
    10799 
    108100vimshell.vimの悪いところ 
    109 ・入力を必要とする非同期実行はサポートされない 
    110 ・まだ内部コマンドのリダイレクトやパイプラインは実現できてない 
    111 ・制御構造がない 
    112 ・情報少ない 
     101・まだ内部コマンドのリダイレクトやパイプラインは実現できていない 
     102・制御構造がないので、スクリプト機能が貧弱 
     103・情報が少ない 
     104・マニュアルがない 
     105・仕様が頻繁に変わる 
    113106 
    114107-------------------------------- 
     
    160153色分け 
    161154 
    162 vimshellバッファ上で、.ファイルやディレクトリ、実行ファイル等を認識し、 
    163 見やすいように色分けをします。 
    164  
    165 ちなみに、vimshのToDoにも色分けのことは書いてあったので、 
    166 vimshellのほうが先に実装したことになります。 
     155vimshellバッファ上で、.ファイルやディレクトリ、実行ファイル等を認識し、見やすいように色分けをします。 
     156 
     157ちなみに、vimshのToDoにも色分けのことは書いてあったので、vimshellのほうが先に実装したことになります。 
     158今後はエスケープシーケンスも認識したいです。 
    167159 
    168160-------------------------------- 
     
    171163私はものぐさなので、ヒストリ機能には力を注いでいます。 
    172164ヒストリ一覧はhistoryコマンドで参照できます。 
    173 入力時にオムニ補完すると、ヒストリ補完になります。 
     165入力時にオムニ補完を起動すると、ヒストリ補完になります。 
    174166これは非常に便利なので、是非お使いください。 
    175167今まで入力したコマンドラインの上で<CR>してもヒストリ実行できます。 
     
    177169 
    178170ヒストリに記録したくないときは、コマンドの先頭に空白文字を入れます。 
    179 連続したコマンドはヒストリに記録しません。 
     171zshのように、連続したコマンドはヒストリに記録しません。 
    180172 
    181173-------------------------------- 
    182174他のプラグインとの連携 
    183175 
    184 vimshellはほぼ100% Vimの機能を使って実装されているので、 
    185 他のプラグインと連携させることができます。 
     176vimshellはほぼ100% Vimの機能を使って実装されているので、他のプラグインと連携させることができます。 
    186177というより、これがなかったら私もvimshellは使ってないと思います。 
     178編集はVimの機能をそのまま使えますし、キーマッピングも自由自在です。 
    187179 
    188180例えばneocomplcacheと連携させることで、ヒストリからの引数補完や、自動ディレクトリ補完が実現できます。 
    189 vimshellのバッファをたどればヒストリ実行もできます。 
    190181 
    191182-------------------------------- 
     
    194185bashやzshのように、ディレクトリスタックを当然完備。 
    195186しかも何も設定せずにauto_pushdしてくれるので、pushdコマンドはありません(!) 
    196 ディレクトリスタックを参照するにはdirsコマンド、 
    197 ディレクトリスタックからcdするにはpopdコマンドを使います。 
     187ディレクトリスタックを参照するにはdirsコマンド、ディレクトリスタックからcdするにはpopdコマンドを使います。 
    198188 
    199189-------------------------------- 
    200190シェル呼び出し 
    201191 
    202 非同期実行など、vimshellではできない用途にも対応するため、 
    203 shコマンドでシェルを一時的に呼び出せるようになってます。 
     192非同期実行など、vimshellでは対応できない用途にも対応するため、 
     193shellコマンドでシェルを一時的に呼び出せるようになっています。 
     194shell&とすると、バックグラウンドでシェルを実行します。 
    204195 
    205196-------------------------------- 
    206197screen実行 
    207198 
    208 screen コマンド名 で、screen分割して実行できます。 
    209 irbなどの非同期実行に便利です。ただしWindowsでは使えません 
     199screen コマンド名 で、コマンドをscreen上で実行できます。 
     200irbなどの非同期実行に便利です。ただしscreen上のターミナルでないと、シェルのバックグラウンド実行になります 
    210201 
    211202-------------------------------- 
    212203バックグラウンド実行 
    213204 
    214 プログラム名の最後に&をつけると、バックグラウンドで呼び出します。 
    215 非同期実行に便利ですが、出力は取れません。 
     205プログラム名の最後に&をつけると、プログラムをバックグラウンドで実行します。 
     206プログラムの出力もバッファで確認できるので、非同期実行に便利です。 
     207vimprocがないと、通常のシェルを使ったバックグラウンド実行になります。 
     208iexeと組み合わせると、別バッファで簡単にインタプリタを実行できます。 
     209強制終了したいときは、<C-c>です。 
     210 
     211"iexe コマンド名&"と"コマンド名&"の違いは、 
     212"iexe"の場合はプログラムにキーボードからの入力を送りますが、"コマンド名&"の場合はプログラムに一切入力を与えないことです。 
    216213 
    217214-------------------------------- 
     
    220217ディレクトリ名で実行すると、そのディレクトリに移動します。 
    221218zshの機能を移植しました。 
    222 例えば、..で上のディレクトリへ移動できます。 
    223 これはLife Changing! 
     219例えば、..で上のディレクトリへ移動できます。これはまさにLife Changingな機能です。 
    224220 
    225221-------------------------------- 
     
    227223 
    228224vimshコマンドの引数にスクリプトファイルを指定することで、 
    229 スクリプトファイルコマンドを入力として、実行を行います。 
     225スクリプトファイルに書かれたコマンドを入力として、実行を行います。 
    230226ただし、まだ制御構造が実装されていないため、不完全です。 
    231227 
     
    236232ワンライナー対応 
    237233 
    238 Windowsで、ワンライナーが動作しないのに腹を立てて、実験的に実装 
    239 具体的には、一時ファイルに書き出して、それを実行させてます。 
     234Windowsではワンライナーが正常に動作しないのに腹を立てて、実験的に実装しました 
     235具体的には、一時ファイルに書き出して、それを実行させてます。 
    240236Perl, Ruby, Python, Awk, sedに対応。 
    241237 
     
    243239簡易電卓 
    244240 
    245 evコマンドを使用すると、引数をVimScriptとして評価するため、 
    246 簡易的な電卓として使えます。 
     241evコマンドを使用すると、引数をVimScriptとして評価するため、簡易的な電卓として使えます。 
     242Vim7.2以降ならば、少数を使用した計算にも対応しています。 
    247243 
    248244例: 
     
    253249プラグインによる機能拡張 
    254250 
    255 vimshellの内部コマンドはautoload/internal/にある*.vimファイルを 
    256 使用するため、自分でそこにプラグインファイルを追加することで、 
    257 簡単にコマンドが追加できます。 
     251vimshellの内部コマンドとして、autoload/internal/にある*.vimファイルを読み込むため、 
     252自分でそこにプラグインファイルを追加することで、簡単にコマンドが追加できます。 
    258253今後、プラグイン作成のためのマニュアルを作る予定です。 
    259254 
     
    261256aliasコマンド 
    262257 
    263 コマンドにaliasをつけることができます。 
    264 コマンドの簡略化に便利。ちゃんと引数も認識します。 
     258コマンドにaliasをつけることができます。 
     259コマンドの簡略化に便利。ちゃんと引数やパイプも認識します。 
    265260 
    266261例: 
     
    276271非同期実行(実験的機能) 
    277272 
    278 vimprocを使って実装中です。 
    279 一応動くのですが、まだ非同期実行になってません。 
    280 誰か分かる人がいたら、やり方を教えてください。 
     273vimprocを使って実装中です。ようやくLinuxでは動作するようになりました。 
     274"iexe コマンド名"で動作します。 
     275しかしWindowsではパイプを使った処理となるため、インタプリタの動作が異なります。 
     276どうやらAPIがサポートされてないらしく、諦めるほかありません。 
     277出力を取るためにはEnterを押す必要があったりと、若干癖がありますが、 
     278Vimから様々なインタプリタを動作させることができるのは驚きです。 
    281279 
    282280-------------------------------- 
     
    284282 
    285283vimshellはVimのカレントディレクトリとは別に独自のカレントディレクトリを持っていて、 
    286 カレントディレクトリの復元を自動で行います。 
     284カレントディレクトリの保存や復元を自動で行います。 
    287285 
    288286-------------------------------- 
    289287vimコマンド 
    290288 
    291 vim ファイル名 というコマンドを実行することで、 
    292 指定したファイルをvimで開きます。 
    293 view ファイル名 とすると、読み込み専用で開きます 
    294 ちょっと中身を確認したいときに便利 
     289"vim ファイル名"というコマンドを実行することで、指定したファイルをvimで開きます。 
     290"view ファイル名"とすると、読み込み専用で開きます。 
     291ちょっとファイルの中身を確認したいときに便利 
     292neocomplcacheと併用するとファイル名補完が自動でできるので、":edit"で補完するより早いです 
    295293 
    296294-------------------------------- 
    297295コマンドラインスタック 
    298296 
    299 コマンド入力中に<C-z>を押すと、一度コマンドラインがクリアされ、 
    300 次に<CR>を押したとき、復元されます。 
     297コマンド入力中に<C-z>を押すと、一度コマンドラインがクリアされ、次に<CR>を押したときに復元されます。 
    301298スタックになっているので、連続して行うこともできます。 
    302299この機能はzshからインスパイアされました。 
     
    307304g:VimShell_ExecuteFileListにプログラムが登録されていたら、 
    308305実行時にプログラムを呼び出すようにしました。 
    309 Windowsでいう関連づけになります。zshにも似たような機能がありました。 
     306Windowsでいうファイルの関連づけになります。zshにも似たような機能がありました。 
    310307 
    311308例えば let g:VimShell_ExecuteFileList['rb'] = 'ruby' としておくと、 
     
    317314 
    318315Normal modeで<C-p>, <C-n>を押すと、プロンプトを移動できます。 
    319 履歴を参照するときに便利です。 
     316コマンドの履歴を参照するときに便利です。 
    320317 
    321318-------------------------------- 
     
    351348プロンプトをユーザ名にしているだけで、後は凝った設定はしてないです。 
    352349neocomplcacheでは、ヒストリファイルを辞書として使用してます。 
    353 これはなかなか便利 
     350これはなかなか便利です 
    354351g:VimShell_ExecuteFileListによる関連づけも設定しています。 
    355352 
     
    360357http://d.hatena.ne.jp/taku-o/20090126 
    361358 
    362 -------------------------------- 
    363 入手方法 
    364  
    365 http://github.com/Shougo/vimshell/tree/master (毎週更新) 
    366  
    367 ちゃんとしたドキュメントができたらwww.vim.orgにも登録したいです。 
    368  
    369 -------------------------------- 
    370 使い方 
    371  
    372 -------------------------------- 
    373 サポート 
    374  
    375 何か問題があれば、http://www.lingr.com/room/vim-users.jpまで!(宣伝) 
     359pcmasterさんによる紹介 
     360http://d.hatena.ne.jp/pcmaster/20090505/p1 
     361最近はてなブックマークがものすごいことになってます。 
     362やはり皆さん、今までのシェルには不満を持っているようですね。 
     363 
     364-------------------------------- 
     365今後の予定 
     366 
     367vimshellの歴史は以外と古く、neocomplcacheより前から作り始めていました。 
     368最近ではneocomplcacheの開発に忙しく、vimshellの機能追加はおざなりになっています。 
     369しかしneocomplcacheが安定し、ようやく余裕が出てきたので、今後は貧弱なスクリプト機能を改善する予定です。 
     370非同期実行もさらに安定させなければなりません。 
    376371 
    377372-------------------------------- 
    378373まとめ 
    379374 
    380 せっかく作ったので、皆さん使ってみてください。 
    381 夢は「名無しのVim使い」で紹介されること。 
    382  
    383 -------------------------------- 
    384 次回はどうしようかな……。 
    385  
    386 続く? 
     375機能追加の要望やバグ、質問等があれば、githubのIssuesに書いてください。 
     376http://github.com/Shougo/vimshell/issues 
     377まめにチェックをしているので、皆さんのブログに書いていただいてもかまいません。 
     378 
     379Twitterやブログもやってます。 
     380http://vinarian.blogspot.com/ 
     381http://twitter.com/ShougoMatsu 
     382更新情報は主にブログに、重要な情報はTwitterでもアナウンスする予定です。 
     383 
     384夢はシェルに戻らなくても、ほとんどの作業をvimshell内で完結できるようにすることです。 
     385皆さんの手で、最強のシェルを手に入れましょう。 
    387386 
    388387-------------------------------- 
    389388更新履歴 
    390389 
    391 2009/05/7      Ver.5.8に対応。 
    392 2009/03/7      やっつけで作成。 
    393 -------------------------------- 
     3902009/05/23      Ver.5.11に対応。 
     3912009/05/7       Ver.5.8に対応。 
     3922009/03/7       やっつけで作成。 
     393--------------------------------