Google chrome Vim:在任何时候刷新chrome I:写入
我想要一个解决方案,可以实现上面所描述的,但可以在Chrome上运行 也就是说,我试图避免这种情况:Google chrome Vim:在任何时候刷新chrome I:写入,google-chrome,vim,Google Chrome,Vim,我想要一个解决方案,可以实现上面所描述的,但可以在Chrome上运行 也就是说,我试图避免这种情况: 编辑HTML/CSS文件 在Vim中点击save CMD/CNTRL/ALT+TAB切换到Firefox 在Firefox中按Ctrl-R刷新 CMD/CNTRL/ALT+TAB返回Vim 一次又一次地做,每次都有点畏缩 vim wiki解决方案适用于firefox,我在web上找到的其他脚本和解决方案仅适用于Mac。但是我在windows上,通常会在屏幕的左半部分打开vim(编辑html)
- 编辑HTML/CSS文件
- 在Vim中点击save
- CMD/CNTRL/ALT+TAB切换到Firefox
- 在Firefox中按Ctrl-R刷新
- CMD/CNTRL/ALT+TAB返回Vim
- 一次又一次地做,每次都有点畏缩
一个真正“愚蠢”的解决方案对我来说很好。也就是说,vim和浏览器之间甚至不需要进行文件名通信。如果我可以在vim中打开一个模式,称之为“自动刷新”,现在每当我执行
:w
时,chrome中当前活动的选项卡会自动刷新,而不会将焦点从vim窗口移开。那太好了。有可能吗?我不知道如何从shell中重新加载给定的chrome页面,但是,我同意Chiel92的观点,即如果您需要在文件更改时查看您的更改,可以从浏览器中执行
请参阅,可与Windows和Mac一起使用(当时不适用于我),并支持Safari和Chrome
LiveReload将检查您的主页以及它所依赖的所有css和脚本,如果有任何更改,它将重新加载它
他们似乎已经发布了第二个版本,但是版本2的官方网站已经离线,并且似乎也没有在github上发布版本2。(版本1)我过去曾尝试过LiveReload,但它不是一个非常可靠的解决方案:它有很多缺陷,而且不稳定,安装过程太复杂,效果太小 从那以后,(一年多)我一直在使用它,每
x
秒自动重新加载一次网页。它一点也不“聪明”,但它对本地文件和托管文件都很有效。我已经用过无数次了,没有任何副作用
VimWiki上的这种解决方案是可能的,因为MozREPL允许外部进程与Firefox交互。从这里开始,编写一个autocmd
,在:w
或CursorHold
上触发刷新非常简单。但实际上,Chrome/Chrome没有这样的工具,而且它们也不提供外部API。LiveReload是一个聪明但失败的黑客,我相信如果你必须使用Chrome,你将不得不解决这个愚蠢的解决方案
编辑
我记得它在这个Linux机器上运行得很好,但在MacOSX上有点受限,在Windows上似乎不起作用。本质上,您可以使用窗口/选项卡的一部分名称注册该窗口/选项卡:
$ webrf setup-by-search test.html
然后你只需做:
$ webrf refresh
刷新页面。一个可能适合您的解决方案是在html编码中包含head标记中的行
<meta http-equiv="refresh" content="30" />
这将每30秒重新加载一次页面,直接从
现在,当您想要部署它时,只需删除该行即可我使用WSL和两个屏幕,因此对我来说这很有效。(就像每个人一样:写有点太多了)
nmap t:silent!powershell.exe-命令“添加类型-AssemblyName System.Windows.Forms;[Windows.Forms.Cursor]::位置=\”-1290,50\;添加类型-成员定义“[DllImport(\“user32.dll\”)]公共静态外部无效鼠标事件(int标志,int dx,int dy,int cButtons,int信息);”-名称U32-命名空间W;[W.U32]::鼠标事件(6,0,0,0,0);[Windows.Forms.Cursor]::位置=\“40,40\”;[W.U32]::鼠标事件(6,0,0,0);”
它基本上通过powershell命令告诉vim将鼠标光标转到:
function! ReloadBrowser()
silent exe "!osascript -e 'tell app \"Firefox\" to activate\<cr>
\tell app \"System events\"\<cr> keystroke \"r\" using command down\<cr>
\end tell'"
silent exe "!osascript -e 'tell app \"Iterm2\" to activate'"
endfunction
要在写入文件时触发调用,可以使用自动命令。
这可能会让人有点恼火,所以如果你真的想要这种行为,我认为最好让它像这样切换:
nnoremap <leader>rl call ReloadBrowser()<cr>
let s:auto_reload = v:false
function! ToggleAutoReload()
if s:auto_reload
augroup AutoReload
au!
autocmd BufWritePost *.filetype call ReloadBrowser()
augroup END
else
augroup AutoReload
au!
augroup END
endif
let s:auto_reload = !s:auto_reload
endfunction
有了它,您可以使用
rl
手动触发重新加载,或者使用:call ToggleAutoReload()
在保存文件时启用自动重新加载,以及第二次:call ToggleAutoReload())
将在您完成后禁用它。在Windows操作系统上,您可以使用一个脚本来自动执行按键操作。例如,以下脚本将绑定
左Alt+r
以切换到浏览器窗口,发送控件+r
(刷新),然后返回上一个窗口。加载页面后,用浏览器的窗口标题字符串替换网页的标题
!r::
WinGet, winid, , Title_of_your_webpage
WinActivate, ahk_id %winid%
Send ^r
Send !{Tab}
Return
在Vim中点击save?你来自哪个星球一个复杂的可能性是:有些Windows应用程序允许编写针对Windows的脚本并模拟密钥库。我已经有一段时间没用过这些了,所以不能推荐。@jahroy,我是从vim wiki复制粘贴该部分的星球来的?只是开玩笑。。。听起来很奇怪!;)基本上,您可以通过各种方式利用硒来实现这一目标。例如,通过在Python中设置本地unix/tcp套接字服务器,该服务器在连接或请求时将向浏览器实例发送.refresh(),然后使用VIM的http请求插件执行此操作,并设置autocmd来执行此操作。我相信还有更简单的方法。2013年linux有什么用的吗?
let s:auto_reload = v:false
function! ToggleAutoReload()
if s:auto_reload
augroup AutoReload
au!
autocmd BufWritePost *.filetype call ReloadBrowser()
augroup END
else
augroup AutoReload
au!
augroup END
endif
let s:auto_reload = !s:auto_reload
endfunction
!r::
WinGet, winid, , Title_of_your_webpage
WinActivate, ahk_id %winid%
Send ^r
Send !{Tab}
Return