Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google chrome Vim:在任何时候刷新chrome I:写入_Google Chrome_Vim - Fatal编程技术网

Google chrome Vim:在任何时候刷新chrome I:写入

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)

我想要一个解决方案,可以实现上面所描述的,但可以在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),在屏幕的右半部分打开chrome(显示我正在编辑的文件)


一个真正“愚蠢”的解决方案对我来说很好。也就是说,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将鼠标光标转到:

  • 位置-1290,50(chrome的刷新按钮所在位置)
  • 鼠标左键单击
  • 位置40,40(我的vim处于全屏)
  • 鼠标左键单击
  • 第3步和第4步需要重新聚焦vim。我试图发送ALT-TAB,但我的vimrc不喜欢%符号。

    如果你在mac上工作,那么一点苹果脚本就可以完成这项工作。 在vim配置中使用此功能将使您能够自动执行在windows之间切换和刷新所述的过程

    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