5个版本
0.2.0 | 2023年4月29日 |
---|---|
0.1.3 | 2023年4月24日 |
0.1.2 | 2023年4月24日 |
0.1.1 | 2023年4月24日 |
0.1.0 | 2023年4月24日 |
#28 in #vim
42 每月下载量
13KB
67 行
gpt-pipe
在stdin上执行GPT操作。
我现在正在使用这个工具在 vim
中将整个vim缓冲区输入到ChatGPT中。
nmap <leader>p :%! gpt-pipe you are a pragmatic planner. give insight/critique tasks and how I should do them. reorder tasks and explain ordering<CR>
根据GPT-4认为我应该先完成什么来重新排列我的任务列表。
要异步地看到在vim中输入的提示,你可以这样做
function! HandleOutput(job_id, data, event)
let l:output = join(a:data, "\n")
let l:output_lines = split(l:output, '\n', 1)
let l:current_line = getline(line('$'))
let l:first_line = l:current_line . l:output_lines[0]
call setline(line('$'), l:first_line)
if len(l:output_lines) > 1
call append(line('$'), l:output_lines[1:])
endif
endfunction
function! StartAsyncCommand(input)
let l:cmd = ['gpt-pipe', 'you are a pragmatic planner. give insight/critique tasks and how I should do them. reorder tasks and explain ordering.']
let l:job_opts = {
\ 'on_stdout': function('HandleOutput'),
\ 'on_stderr': function('HandleOutput'),
\ 'in_io': 'pipe',
\ }
let l:job_id = jobstart(l:cmd, l:job_opts)
call jobsend(l:job_id, a:input)
call jobclose(l:job_id, 'stdin')
endfunction
然后将其映射到 <leader>p
,使用
nmap <leader>p :call StartAsyncCommand(getline(1, '$'))<CR>
安装
cargo install gpt-pipe
依赖
~9–24MB
~345K SLoC