vim html 快速预览,pyhtmlPreviewer: pyhtmlPreviewer 是针对 Vim 开发的 html 实时预览插件,采用 viml, python3, PySide2 编写...

pyhtmlPreviewer

943a0a7b5a98e1282099f086f370b682.gif

介绍

pyhtmlPreviewer 是针对 Vim 写的 html 实时预览插件。

要求

python3

PySide2 >= 5.14(因为 5.14 里的 QWebEnginePage 里新加入了一个 NavigationTypeRedirect 选项,用于控制页面自动跳转)

gvim(vim 会因为 pyside2 不是主线程运行而报错)

编写原因

最近在翻译一个 html 文档,尝试了各种 Vim 插件,大部分都要安装 nodejs 才能与浏览器实时

预览,但是感觉没一个成功的(最近脸黑),而我只会 python,所以只好用 PySide2 的 QtWebEngineWidgets 模块弄了个浏览器的界面来实时预览。

原理

启动

在 VIM 的插件脚本里,采用多线程启动 app.exec_,由于 PySide2 本身速度不快,所以启动会比较慢。

网页与 python 的通讯

通过 PySide2 中的 qwebchannel.js 来实现网页与 VIM 之间的通讯。

同步定位

通过 python 的 HTMLParser 库解析 html 信息,给相关的 tag 添加了自定义属性:pyhtmlpos,值 "x,y"(x,y是源码中的位置,可以通过 HTMLParser 的 getpos 函数来获取),最后每次点击时,通过 qwebchanne.js 传递给 python,实现 VIM 的光标跳转。只能针对静态网页,动态无法实现。其中 HTMLParser 解析过程不快,所以将刷新由原先的实时改成保存时刷新。

安装教程

安装 python3.x(去官网下)

安装 PySide2.(pip install PySide2)

使用说明

默认 html 文件打开会自动打开浏览器;

在上面的工具栏里加入编辑功能,开启后,网页跳转关闭,同步点击的 tag 位置与 VIM 中光标的位置,目前问题比如动态网页无法定位。

可控参数与命令:

参数

自动打开开关,默认开启

let g:pyhtmlPreviewerAutoOpen=1

文件格式绑定,如 '*.html,*.py,*.js', 默认'*.html'

let g:pyhtmlPreviewerFileType='*.html'

同步定位是否定位到 text 上,默认开启,否则定位到 tag 上,目前部分标签无法确定,比如。

let g:pyHtmlPreviewerPosAtText=1

命令

窗口开光命令

PyHtmlPreviewToggle()

可以通过如下命令绑定快捷键:

map :call PyHtmlPreviewerToggle()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值