Changeset 33550
- Timestamp:
- 05/25/09 12:19:36 (4 years ago)
- Location:
- dotfiles/vim/from_kyushu/.vim
- Files:
-
- 2 added
- 6 modified
- 1 copied
-
autoload/proc.vim (added)
-
autoload/vimshell/internal/bg.vim (modified) (4 diffs)
-
autoload/vimshell/internal/ev.vim (modified) (3 diffs)
-
autoload/vimshell/internal/iexe.vim (added)
-
autoload/vimshell/internal/let.vim (copied) (copied from dotfiles/vim/from_kyushu/.vim/autoload/vimshell/internal/ev.vim) (3 diffs)
-
autoload/vimshell/internal/screen.vim (modified) (3 diffs)
-
ftplugin/vimshell.vim (modified) (1 diff)
-
plugin/vimshell.vim (modified) (3 diffs)
-
presen/vimshell.txt (modified) (21 diffs)
Legend:
- Unmodified
- Added
- Removed
-
dotfiles/vim/from_kyushu/.vim/autoload/vimshell/internal/bg.vim
r33323 r33550 2 2 " FILE: bg.vim 3 3 " AUTHOR: Shougo Matsushita <Shougo.Matsu@gmail.com> 4 " Last Modified: 2 9 Apr20094 " Last Modified: 22 May 2009 5 5 " Usage: Just source this file. 6 6 " License: MIT license {{{ … … 24 24 " SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 25 25 " }}} 26 " Version: 1. 0, for Vim 7.026 " Version: 1.2, for Vim 7.0 27 27 "----------------------------------------------------------------------------- 28 28 " ChangeLog: "{{{ 29 " 1.2: 30 " - Use vimproc. 31 " 1.1: 32 " - Fixed in *nix. 29 33 " 1.0: 30 34 " - Initial version. … … 38 42 ""}}} 39 43 "============================================================================= 44 45 let s:background_programs = 0 46 augroup VimShellBg 47 autocmd! 48 augroup END 40 49 41 50 function! vimshell#internal#bg#execute(program, args, fd, other_info) … … 64 73 let l:other_info.is_background = 1 65 74 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) 73 78 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) 85 81 endif"}}} 86 82 endfunction 83 84 function! 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) 93 endfunction"}}} 94 95 function! 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 149 endfunction"}}} 150 151 function! 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) 164 endfunction"}}} 165 166 function! 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 194 endfunction"}}} 195 196 function! 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 214 endfunction"}}} -
dotfiles/vim/from_kyushu/.vim/autoload/vimshell/internal/ev.vim
r32603 r33550 2 2 " FILE: ev.vim 3 3 " AUTHOR: Shougo Matsushita <Shougo.Matsu@gmail.com>(Modified) 4 " Last Modified: 31 Mar20094 " Last Modified: 11 May 2009 5 5 " Usage: Just source this file. 6 6 " License: MIT license {{{ … … 24 24 " SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 25 25 " }}} 26 " Version: 1. 1, for Vim 7.026 " Version: 1.2, for Vim 7.0 27 27 "----------------------------------------------------------------------------- 28 28 " ChangeLog: "{{{ 29 " 1.2: 30 " - Save result. 29 31 " 1.1: 30 32 " - Supported vimshell Ver.3.2. … … 43 45 function! vimshell#internal#ev#execute(program, args, fd, other_info) 44 46 " 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)) 46 52 endfunction -
dotfiles/vim/from_kyushu/.vim/autoload/vimshell/internal/let.vim
r32603 r33550 1 1 "============================================================================= 2 " FILE: ev.vim2 " FILE: let.vim 3 3 " AUTHOR: Shougo Matsushita <Shougo.Matsu@gmail.com>(Modified) 4 " Last Modified: 31 Mar20094 " Last Modified: 11 May 2009 5 5 " Usage: Just source this file. 6 6 " License: MIT license {{{ … … 24 24 " SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 25 25 " }}} 26 " Version: 1. 1, for Vim 7.026 " Version: 1.0, for Vim 7.0 27 27 "----------------------------------------------------------------------------- 28 28 " ChangeLog: "{{{ 29 " 1.1:30 " - Supported vimshell Ver.3.2.31 29 " 1.0: 32 30 " - Initial version. … … 41 39 "============================================================================= 42 40 43 function! vimshell#internal#ev#execute(program, args, fd, other_info) 44 " Evaluate arguments. 45 call vimshell#print_line(string(eval(join(a:args, ' ')))) 41 function! 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) 46 55 endfunction -
dotfiles/vim/from_kyushu/.vim/autoload/vimshell/internal/screen.vim
r33323 r33550 2 2 " FILE: screen.vim 3 3 " AUTHOR: Shougo Matsushita <Shougo.Matsu@gmail.com> 4 " Last Modified: 29 Apr20094 " Last Modified: 07 May 2009 5 5 " Usage: Just source this file. 6 6 " License: MIT license {{{ … … 24 24 " SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 25 25 " }}} 26 " Version: 1. 0, for Vim 7.026 " Version: 1.1, for Vim 7.0 27 27 "----------------------------------------------------------------------------- 28 28 " ChangeLog: "{{{ 29 " 1.1: 30 " - Fixed error. 29 31 " 1.0: 30 32 " - Initial version. … … 42 44 " Execute program in screen. 43 45 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 45 54 else 46 " Error. 47 call vimshell#error_line('Not in screen.') 55 " For *nix. 56 57 " Background execute. 58 call system(join(a:args) . '&') 48 59 endif 49 60 endfunction -
dotfiles/vim/from_kyushu/.vim/ftplugin/vimshell.vim
r33323 r33550 10 10 11 11 " Filename completion. 12 inoremap <buffer><expr><TAB> pumvisible() ? "\<C-n>" : "\<C-x>\<C-f>" 12 inoremap <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 3 3 " AUTHOR: Janakiraman .S <prince@india.ti.com>(Original) 4 4 " Shougo Matsushita <Shougo.Matsu@gmail.com>(Modified) 5 " Last Modified: 2 9 Apr20095 " Last Modified: 23 May 2009 6 6 " Usage: Just source this file. 7 7 " License: MIT license {{{ … … 25 25 " SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 26 26 " }}} 27 " Version: 5. 7, for Vim 7.027 " Version: 5.11, for Vim 7.0 28 28 "----------------------------------------------------------------------------- 29 29 " 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. 30 41 " 5.8: 31 42 " - Fixed !! error. … … 240 251 241 252 command! -nargs=0 VimShell call vimshell#switch_shell(0) 253 command! -nargs=+ -complete=shellcmd VimShellExecute call vimshell#internal#bg#vimshell_bg(split(<q-args>)) 254 command! -nargs=+ -complete=shellcmd VimShellInteractive call vimshell#internal#iexe#vimshell_iexe(split(<q-args>)) 242 255 243 256 let g:loaded_vimshell = 1 -
dotfiles/vim/from_kyushu/.vim/presen/vimshell.txt
r33323 r33550 5 5 6 6 -------------------------------- 7 まずは自己紹介8 9 Shougo10 Vim歴4年目。だが、本格的にVimに目覚めたのはごく最近のこと。11 Vimを使い始めたのは、Vimは多数の言語に対してsyntaxハイライトができたから。12 最近までneocomplcacheの開発に忙しかったが、13 まだまだvimshellもやることがいっぱいあって現実逃避中。14 15 --------------------------------16 代表作17 ・bufstatus18 http://github.com/Shougo/shougo-s-github/blob/a1a9d5d0a9a4a53fedec52f7d1be0c9c9341f787/vim/plugin/bufstatus.vim19 ・vimshell20 https://github.com/Shougo/vimshell/tree21 ・neocomplcache22 https://github.com/Shougo/neocomplcache/tree23 24 今回は、みんながお待ちかねのvimshellについて話をします。25 26 --------------------------------27 7 vimshellとは? 28 8 29 9 VimScriptによって実装された究極のシェル。 30 略してvshell。ただし、eshellとは違ってまだまだ です。10 略してvshell。ただし、eshellとは違ってまだまだ未完成です。 31 11 一番の特徴としては、Vimのプラグインと連携ができること。 32 Windowsはシェルがしょぼいので、使用していてイライラしますが、 33 vimshellはWindowsでも動作するので安心です。34 しかも、他のシェルの便利な機能を多数取り込んでいます。12 特にWindowsはシェルが貧弱なので、使用していてイライラしますが、vimshellはWindowsでも動作するので安心です。 13 ただしWindows上では一部の機能が制限されます。 14 加えて、他のシェルの便利な機能を多数取り込んでいます。 35 15 設定して当たり前の機能は標準的に使えるため、zshと比べて設定の手間もありません。 16 17 -------------------------------- 18 入手方法 19 20 http://github.com/Shougo/vimshell/tree/master (毎週更新) 21 22 ちゃんとしたドキュメントができたらwww.vim.orgにも登録したいです。 23 しかし仕様が安定していないこともあり、登録はまだまだ先になるでしょう。 24 25 -------------------------------- 26 使い方 36 27 37 28 -------------------------------- … … 46 37 -------------------------------- 47 38 vimsh.vimの良いところ 48 ・インタラクティブなシェルが起動できる 39 ・インタラクティブなシェルが起動できる(Windows以外) 49 40 ・Vimから独立している 50 41 51 42 vimsh.vimの悪いところ 52 43 ・Pythonインタフェースが必要 53 ・バグ 多い44 ・バグが多い 54 45 ・必要なくても勝手に起動する 55 46 … … 62 53 Shell.vimの悪いところ 63 54 ・もう長い間更新されてない 64 ・インタラクティブなプログラムを起動するとフリーズ 55 ・インタラクティブなプログラムを起動するとフリーズしてしまう 65 56 66 57 -------------------------------- 67 58 Vim-Shellプロジェクトの良いところ 68 ・ 完全なシェルを動作させることができる69 ・ 色分けもできる59 ・内部で完全なシェルを動作させることができる 60 ・エスケープシーケンスを解釈するので、色分けもできる 70 61 71 62 Vim-Shellプロジェクトの悪いところ 72 63 ・あまりに巨大なパッチなので、本家に取り込まれることはない 73 64 ・Vimのバージョンごとの互換性がない 74 ・しかも更新頻度が遅い 65 ・しかも更新頻度が遅い(Vim7.2には未対応) 75 66 76 67 -------------------------------- … … 80 71 ・cursesも動作する(ansi-term.elを使った方がよい) 81 72 ・色分けもできる 82 ・情報 多い73 ・情報が多い 83 74 84 75 eshell.elの悪いところ 85 76 ・Emacsen専用 86 ・起動が 重い77 ・起動が遅い 87 78 88 79 -------------------------------- … … 100 91 ・完全にVim内で動作する 101 92 ・色分けもできる 102 ・開発 早い103 ・ 他のプラグインと連携できる93 ・開発が早い 94 ・Vimのプラグインと連携ができる 104 95 ・ワンライナー対応 105 96 ・実験的ながら、非同期実行をサポート 106 97 ・自動ディレクトリスタックや、auto_cdなど、zshの機能を取り込んでいる 98 ・内部コマンドを簡単に追加可能 107 99 108 100 vimshell.vimの悪いところ 109 ・入力を必要とする非同期実行はサポートされない 110 ・まだ内部コマンドのリダイレクトやパイプラインは実現できてない 111 ・制御構造がない 112 ・情報少ない 101 ・まだ内部コマンドのリダイレクトやパイプラインは実現できていない 102 ・制御構造がないので、スクリプト機能が貧弱 103 ・情報が少ない 104 ・マニュアルがない 105 ・仕様が頻繁に変わる 113 106 114 107 -------------------------------- … … 160 153 色分け 161 154 162 vimshellバッファ上で、.ファイルやディレクトリ、実行ファイル等を認識し、 163 見やすいように色分けをします。 164 165 ちなみに、vimshのToDoにも色分けのことは書いてあったので、 166 vimshellのほうが先に実装したことになります。 155 vimshellバッファ上で、.ファイルやディレクトリ、実行ファイル等を認識し、見やすいように色分けをします。 156 157 ちなみに、vimshのToDoにも色分けのことは書いてあったので、vimshellのほうが先に実装したことになります。 158 今後はエスケープシーケンスも認識したいです。 167 159 168 160 -------------------------------- … … 171 163 私はものぐさなので、ヒストリ機能には力を注いでいます。 172 164 ヒストリ一覧はhistoryコマンドで参照できます。 173 入力時にオムニ補完 すると、ヒストリ補完になります。165 入力時にオムニ補完を起動すると、ヒストリ補完になります。 174 166 これは非常に便利なので、是非お使いください。 175 167 今まで入力したコマンドラインの上で<CR>してもヒストリ実行できます。 … … 177 169 178 170 ヒストリに記録したくないときは、コマンドの先頭に空白文字を入れます。 179 連続したコマンドはヒストリに記録しません。171 zshのように、連続したコマンドはヒストリに記録しません。 180 172 181 173 -------------------------------- 182 174 他のプラグインとの連携 183 175 184 vimshellはほぼ100% Vimの機能を使って実装されているので、 185 他のプラグインと連携させることができます。 176 vimshellはほぼ100% Vimの機能を使って実装されているので、他のプラグインと連携させることができます。 186 177 というより、これがなかったら私もvimshellは使ってないと思います。 178 編集はVimの機能をそのまま使えますし、キーマッピングも自由自在です。 187 179 188 180 例えばneocomplcacheと連携させることで、ヒストリからの引数補完や、自動ディレクトリ補完が実現できます。 189 vimshellのバッファをたどればヒストリ実行もできます。190 181 191 182 -------------------------------- … … 194 185 bashやzshのように、ディレクトリスタックを当然完備。 195 186 しかも何も設定せずにauto_pushdしてくれるので、pushdコマンドはありません(!) 196 ディレクトリスタックを参照するにはdirsコマンド、 197 ディレクトリスタックからcdするにはpopdコマンドを使います。 187 ディレクトリスタックを参照するにはdirsコマンド、ディレクトリスタックからcdするにはpopdコマンドを使います。 198 188 199 189 -------------------------------- 200 190 シェル呼び出し 201 191 202 非同期実行など、vimshellではできない用途にも対応するため、 203 shコマンドでシェルを一時的に呼び出せるようになってます。 192 非同期実行など、vimshellでは対応できない用途にも対応するため、 193 shellコマンドでシェルを一時的に呼び出せるようになっています。 194 shell&とすると、バックグラウンドでシェルを実行します。 204 195 205 196 -------------------------------- 206 197 screen実行 207 198 208 screen コマンド名 で、 screen分割して実行できます。209 irbなどの非同期実行に便利です。ただし Windowsでは使えません。199 screen コマンド名 で、コマンドをscreen上で実行できます。 200 irbなどの非同期実行に便利です。ただしscreen上のターミナルでないと、シェルのバックグラウンド実行になります。 210 201 211 202 -------------------------------- 212 203 バックグラウンド実行 213 204 214 プログラム名の最後に&をつけると、バックグラウンドで呼び出します。 215 非同期実行に便利ですが、出力は取れません。 205 プログラム名の最後に&をつけると、プログラムをバックグラウンドで実行します。 206 プログラムの出力もバッファで確認できるので、非同期実行に便利です。 207 vimprocがないと、通常のシェルを使ったバックグラウンド実行になります。 208 iexeと組み合わせると、別バッファで簡単にインタプリタを実行できます。 209 強制終了したいときは、<C-c>です。 210 211 "iexe コマンド名&"と"コマンド名&"の違いは、 212 "iexe"の場合はプログラムにキーボードからの入力を送りますが、"コマンド名&"の場合はプログラムに一切入力を与えないことです。 216 213 217 214 -------------------------------- … … 220 217 ディレクトリ名で実行すると、そのディレクトリに移動します。 221 218 zshの機能を移植しました。 222 例えば、..で上のディレクトリへ移動できます。 223 これはLife Changing! 219 例えば、..で上のディレクトリへ移動できます。これはまさにLife Changingな機能です。 224 220 225 221 -------------------------------- … … 227 223 228 224 vimshコマンドの引数にスクリプトファイルを指定することで、 229 スクリプトファイル のコマンドを入力として、実行を行います。225 スクリプトファイルに書かれたコマンドを入力として、実行を行います。 230 226 ただし、まだ制御構造が実装されていないため、不完全です。 231 227 … … 236 232 ワンライナー対応 237 233 238 Windowsで 、ワンライナーが動作しないのに腹を立てて、実験的に実装。239 具体的には、一時ファイルに書き出して、それを実行させて ます。234 Windowsではワンライナーが正常に動作しないのに腹を立てて、実験的に実装しました。 235 具体的には、一時ファイルに書き出して、それを実行させています。 240 236 Perl, Ruby, Python, Awk, sedに対応。 241 237 … … 243 239 簡易電卓 244 240 245 evコマンドを使用すると、引数をVimScriptとして評価するため、 246 簡易的な電卓として使えます。241 evコマンドを使用すると、引数をVimScriptとして評価するため、簡易的な電卓として使えます。 242 Vim7.2以降ならば、少数を使用した計算にも対応しています。 247 243 248 244 例: … … 253 249 プラグインによる機能拡張 254 250 255 vimshellの内部コマンドはautoload/internal/にある*.vimファイルを 256 使用するため、自分でそこにプラグインファイルを追加することで、 257 簡単にコマンドが追加できます。 251 vimshellの内部コマンドとして、autoload/internal/にある*.vimファイルを読み込むため、 252 自分でそこにプラグインファイルを追加することで、簡単にコマンドが追加できます。 258 253 今後、プラグイン作成のためのマニュアルを作る予定です。 259 254 … … 261 256 aliasコマンド 262 257 263 コマンドにalias をつけることができます。264 コマンドの簡略化に便利。ちゃんと引数 も認識します。258 コマンドにalias名をつけることができます。 259 コマンドの簡略化に便利。ちゃんと引数やパイプも認識します。 265 260 266 261 例: … … 276 271 非同期実行(実験的機能) 277 272 278 vimprocを使って実装中です。 279 一応動くのですが、まだ非同期実行になってません。 280 誰か分かる人がいたら、やり方を教えてください。 273 vimprocを使って実装中です。ようやくLinuxでは動作するようになりました。 274 "iexe コマンド名"で動作します。 275 しかしWindowsではパイプを使った処理となるため、インタプリタの動作が異なります。 276 どうやらAPIがサポートされてないらしく、諦めるほかありません。 277 出力を取るためにはEnterを押す必要があったりと、若干癖がありますが、 278 Vimから様々なインタプリタを動作させることができるのは驚きです。 281 279 282 280 -------------------------------- … … 284 282 285 283 vimshellはVimのカレントディレクトリとは別に独自のカレントディレクトリを持っていて、 286 カレントディレクトリの 復元を自動で行います。284 カレントディレクトリの保存や復元を自動で行います。 287 285 288 286 -------------------------------- 289 287 vimコマンド 290 288 291 vim ファイル名 というコマンドを実行することで、 292 指定したファイルをvimで開きます。293 view ファイル名 とすると、読み込み専用で開きます。294 ちょっと中身を確認したいときに便利。289 "vim ファイル名"というコマンドを実行することで、指定したファイルをvimで開きます。 290 "view ファイル名"とすると、読み込み専用で開きます。 291 ちょっとファイルの中身を確認したいときに便利。 292 neocomplcacheと併用するとファイル名補完が自動でできるので、":edit"で補完するより早いです。 295 293 296 294 -------------------------------- 297 295 コマンドラインスタック 298 296 299 コマンド入力中に<C-z>を押すと、一度コマンドラインがクリアされ、 300 次に<CR>を押したとき、復元されます。 297 コマンド入力中に<C-z>を押すと、一度コマンドラインがクリアされ、次に<CR>を押したときに復元されます。 301 298 スタックになっているので、連続して行うこともできます。 302 299 この機能はzshからインスパイアされました。 … … 307 304 g:VimShell_ExecuteFileListにプログラムが登録されていたら、 308 305 実行時にプログラムを呼び出すようにしました。 309 Windowsでいう 関連づけになります。zshにも似たような機能がありました。306 Windowsでいうファイルの関連づけになります。zshにも似たような機能がありました。 310 307 311 308 例えば let g:VimShell_ExecuteFileList['rb'] = 'ruby' としておくと、 … … 317 314 318 315 Normal modeで<C-p>, <C-n>を押すと、プロンプトを移動できます。 319 履歴を参照するときに便利です。316 コマンドの履歴を参照するときに便利です。 320 317 321 318 -------------------------------- … … 351 348 プロンプトをユーザ名にしているだけで、後は凝った設定はしてないです。 352 349 neocomplcacheでは、ヒストリファイルを辞書として使用してます。 353 これはなかなか便利 。350 これはなかなか便利です。 354 351 g:VimShell_ExecuteFileListによる関連づけも設定しています。 355 352 … … 360 357 http://d.hatena.ne.jp/taku-o/20090126 361 358 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まで!(宣伝) 359 pcmasterさんによる紹介 360 http://d.hatena.ne.jp/pcmaster/20090505/p1 361 最近はてなブックマークがものすごいことになってます。 362 やはり皆さん、今までのシェルには不満を持っているようですね。 363 364 -------------------------------- 365 今後の予定 366 367 vimshellの歴史は以外と古く、neocomplcacheより前から作り始めていました。 368 最近ではneocomplcacheの開発に忙しく、vimshellの機能追加はおざなりになっています。 369 しかしneocomplcacheが安定し、ようやく余裕が出てきたので、今後は貧弱なスクリプト機能を改善する予定です。 370 非同期実行もさらに安定させなければなりません。 376 371 377 372 -------------------------------- 378 373 まとめ 379 374 380 せっかく作ったので、皆さん使ってみてください。 381 夢は「名無しのVim使い」で紹介されること。 382 383 -------------------------------- 384 次回はどうしようかな……。 385 386 続く? 375 機能追加の要望やバグ、質問等があれば、githubのIssuesに書いてください。 376 http://github.com/Shougo/vimshell/issues 377 まめにチェックをしているので、皆さんのブログに書いていただいてもかまいません。 378 379 Twitterやブログもやってます。 380 http://vinarian.blogspot.com/ 381 http://twitter.com/ShougoMatsu 382 更新情報は主にブログに、重要な情報はTwitterでもアナウンスする予定です。 383 384 夢はシェルに戻らなくても、ほとんどの作業をvimshell内で完結できるようにすることです。 385 皆さんの手で、最強のシェルを手に入れましょう。 387 386 388 387 -------------------------------- 389 388 更新履歴 390 389 391 2009/05/7 Ver.5.8に対応。 392 2009/03/7 やっつけで作成。 393 -------------------------------- 390 2009/05/23 Ver.5.11に対応。 391 2009/05/7 Ver.5.8に対応。 392 2009/03/7 やっつけで作成。 393 --------------------------------
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)