vim学习异步源码
echohl
,按后面高亮组
显示.
回音高亮 错误消息
echo 消息
回音高亮 无
安静跑异步命令:
silent doautocmd User AsyncRun name
haslocaldir
,是否有lcd/tcd
.
fnameescape
,转义文件名
.
ssl
选项,壳斜杠
.
winrestview/winsaveview
保存恢复视图.用w:
变量.调用后,解置该w:
.
caddexpr
加表达式结果至快修
.
caddexpr a:textlist
//用表达式列表建立快修
noautocmd caddexpr a:textlist
call setqflist(items, 'a')
//置快修列表.
noautocmd call setqflist(items, 'a')
call setqflist([], 'a', info)
noautocmd call setqflist([], 'a', info)
if &buftype == 'quickfix'
//缓冲类型
silent exec 'normal! G'
//跳至尾.
endif
cbottom
,光标放至快修尾
.
bufwinnr
,窗口缓冲号.-1
表不存在.
noautocmd
,为单个命令,屏蔽
自动命令.
noautocmd exec '' . l:quickfixwinnr . 'windo call s:AsyncRun_Job_Cursor()'
noautocmd silent! exec ''.l:winnr.'wincmd w'
wincmd
,移动光标窗口.
pumvisible
,是否看见弹窗
.iconv
用法:
let l:text = iconv(l:text, 编码, &编码)
修复路径:
silent! call s:chdir(l:previous_cwd)
安静执行自动命令:
silent exec 'doautocmd QuickFixCmdPre ' . name
silent exec 'doautocmd QuickFixCmdPost '. name
//前面和后面.执行快修命令前/后
exec 'doautocmd QuickFixCmdPre '. name
//不安静
异步工作:
if exists('s:async_job')
call job_status(s:async_job)
endif
如果有异步工作
,调用其状态
.
exec "norm! \<esc>"
退出.
redrawstatus
,重画状态行
,
ch_status
,通道状态.
ch_read
,读通道加选项.
通道状态(a:通道)=='缓冲'
表示,可读通道
.
if exists('s:async_job')
call job_status(s:async_job)
endif
有异步工作
,返回状态.
if job_status(s:async_job) == 'run'
let l:running = 1
endif
异步工作:
let s:async_job = job_start(l:args, l:options)
//参数,加选项,这才是关键.
let l:success = (job_status(s:async_job) != 'fail')? 1 : 0
silent! call ch_close_in(job_getchannel(s:async_job))
加计时器:
let l:name = 'g:AsyncRun_Job_OnTimer'
let s:async_timer = timer_start(100, l:name, {'repeat':-1})
call s:AsyncRun_Job_AutoCmd(0, s:async_info.auto)
call s:AutoCmd('Start')
redrawstatus!
异步停止
,可能错误:
if job_status(s:async_job) == 'run'
if job_stop(s:async_job, l:how)
call s:AutoCmd('Interrupt')
return 0
else
return -2
endif
else
keepalt
保持轮换名
.
keepalt noautocmd windo call s:WindowCheck(1)
keepalt noautocmd silent! exec ''.l:winnr.'wincmd w'
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现