7

ここのvimwikiで説明されていることを実行するソリューションが必要ですが、それはChromeで機能します。

つまり、私はこれを避けようとしています:

  • HTML/CSSファイルを編集します。
  • Vimで保存を押します。
  • CMD/CNTRL/ALT+ TABFirefoxに移行します。
  • Ctrl-RFirefoxを押して更新します。
  • CMD/CNTRL/ALT+ TABVimに戻ります。
  • 毎回少しずつウィンクしながら、何度も繰り返してください。

vim wikiソリューションはFirefox用であり、私がWebで見つけた他のスクリプトとソリューションはMacのみです。しかし、私はWindowsを使用しており、多くの場合、画面の左半分でvimを開き(htmlを編集)、画面の右半分でchromeを開きます(編集しているファイルを表示します)。

本当に「ばかげた」解決策は私にとってはうまくいくでしょう。つまり、vimとブラウザの間でファイル名を通信する必要すらありません。vimでモードをオンにすることができれば、それを「自動更新」と呼びます。これで:w現在アクティブなChromeのタブを実行すると、vimウィンドウからフォーカスを外すことなく自動的に更新されます。それは完璧でしょう。出来ますか?

4

6 に答える 6

1

シェルからgivechromeページをリロードする方法はわかりませんが、ファイルの変更時に変更を確認する必要がある場合は、ブラウザーから確認できるというChiel92に同意します。

LiveReloadを参照してください。これは、WindowsとMacで動作し(私はそうではありません)、SafariとChromeをサポートしています。

LiveReloadは、メインページと、それが依存するすべてのcssおよびjavscriptをチェックし、これらの変更のいずれかがあれば、それをリロードします。

彼らは2番目のバージョンを立ち上げたようですが、バージョン2の公式サイトはオフラインであり、バージョン2もgithubにあるようには見えません。(バージョン1はgithubにあります)

于 2012-10-04T18:50:58.353 に答える
1

あなたのために働くかもしれない解決策はあなたのhtmlコーディングにありますheadタグの行を含めてください

    <meta http-equiv="refresh" content="30" />

これにより、30秒ごとにページがリロードされ、 w3schools.comから直接取得され ます。デプロイする場合は、その行を削除するだけです。

于 2014-05-23T14:40:52.340 に答える
1

あなたがマックで働いているなら、少しのアップルスクリプトがその仕事をします。

この関数を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

その関数を呼び出すと、システムフォーカスがFirefoxに変更され、CMD-Rを押してページを更新してから、フォーカスをIterm2に戻します。

ワークフローに合わせて「Firefox」と「Iterm2」を変更します。

次のようにvimコマンドプロンプトに関数を入力する:call ReloadBrowser()か、次のようなマッピングを使用して呼び出しをトリガーできます。

nnoremap <leader>rl call ReloadBrowser()<cr>

ファイルを書き込むたびに呼び出しをトリガーするには、自動コマンドを使用できます。

augroup AutoReload
    au!
    autocmd BufWritePost *.filetype call ReloadBrowser()
augroup END

それは少し面倒になるかもしれませんが、本当にその動作が必要な場合は、次のように切り替え可能にするのが最善だと思います。

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

これが適切な場所にあると、でリロードを手動でトリガーするか、ファイルを保存するときに自動リロードを有効にするために<leader>rl 使用でき、完了したら1秒で無効になります。:call ToggleAutoReload():call ToggleAutoReload()

于 2019-02-08T20:21:32.503 に答える
0

私は過去にLiveReloadを試しましたが、それはあまり信頼できる解決策ではありませんでした。非常バグが多く不安定で、インストールプロセスが複雑すぎて効果が少なすぎました。

それ以来(1年以上)、毎秒自動的にウェブページをリロードする小さなChrome拡張機能xを使用しています。「スマート」ではありませんが、ローカルファイルとホストファイルの両方でうまく機能します。何の副作用もなく何度も使ってきました。

外部プロセスがFirefoxと対話できるようにするMozREPLにより、VimWikiでのそのソリューションが可能になります。そこから、またはでautocmd更新をトリガーするを記述するのは非常に簡単です。しかし、AFAIKには、Chrome / Chromium用のそのようなツールはなく、外部APIも提供していません。LiveReloadは素晴らしいですが、失敗したハックです。Chromeを使用する必要がある場合は、ばかげた解決策で解決する必要があると思います。:wCursorHold

編集

このLinuxボックスでは非常にうまく機能するスクリプトを思い出しましたが、Mac OS Xでは少し制限があり、Windowsでは機能しないようです。基本的に、ウィンドウ/タブをその名前の一部で登録します。

$ webrf setup-by-search test.html

次に、あなたは単にします:

$ webrf refresh

ページを更新します。

于 2012-10-04T20:08:34.000 に答える
0

私はWSLと2つの画面を使用しているので、これは機能します。(すべての:writeと同様に、少し多すぎます)

nmap <leader>t :silent !powershell.exe -command "Add-Type -AssemblyName System.Windows.Forms; [Windows.Forms.Cursor]::Position = \"-1290,50\"; Add-Type -MemberDefinition '[DllImport(\"user32.dll\")] public static extern void mouse_event(int flags, int dx, int dy, int cButtons, int info);' -Name U32 -Namespace W; [W.U32]::mouse_event(6,0,0,0,0); [Windows.Forms.Cursor]::Position = \"40,40\"; [W.U32]::mouse_event(6,0,0,0,0);"<CR><CR>

基本的に、PowerShellコマンドを介してvimにマウスカーソルを次の場所に移動するように指示します。

  1. 位置-1290、50(クロムの更新ボタンがある場所)
  2. マウスの左クリック
  3. 位置40,40(これは私のvimがフルスクリーンにある場所です)
  4. マウスの左クリック

ステップ3と4は、vimのフォーカスを再設定するために必要です。ALT-TABを送信しようとしましたが、vimrcが%記号を嫌いました。

于 2018-03-23T14:53:45.917 に答える
0

Windows OSでは、キーを押すとそれを自動化するAutoHotKeyスクリプトを利用できます。
たとえば、次のスクリプトはバインドLeft Alt + rしてブラウザウィンドウに切り替え、Control + r(更新)を送信してから、前のウィンドウに戻ります。ページが読み込まれた後、ブラウザのウィンドウタイトル文字列に
置き換えます。Title_of_your_webpage

!r::
    WinGet, winid, , Title_of_your_webpage
    WinActivate, ahk_id %winid%
    Send ^r
    Send !{Tab}
    Return
于 2020-08-29T11:46:28.980 に答える