当我在 MacVim 中编写 html 时,我会在网络浏览器中打开同一个文件,以便我可以检查 html 输出。我不喜欢这种方法的一件事是我经常不得不离开 vim,转到浏览器,然后重新加载 html 以查看更新。 vim 是否有更优雅的解决方案,可以在输入 vim 时动态更新 html 输出?我好像记得Textmate可以做到这一点?谢谢。
更新: 我找到了我试图记住的视频。你可以在这里找到它:
最佳答案
将此添加到您的 .vimrc:
" Refresh WebKit
nnoremap \r :Refresh<CR>
command! Refresh call RefreshWebKit()
function! RefreshWebKit()
silent !osascript -e 'tell application "WebKit"'
\ -e ' set p_url to URL of current tab of front window'
\ -e ' set URL of current tab of front window to p_url'
\ -e 'end tell'
endfunction
这将创建一个 map 、一个命令和一个函数。我本可以加入他们,但是 这样它就更清晰了,我可以在其他地方重用这个函数。
该函数调用一点 AppleScript 再次设置最前面的标签页的 URL, 从而刷新它。这将在 Safari 和 WebKit 下工作,但我不能 保证它适用于其他浏览器。如果没有,谷歌“刷新{浏览器} applescript”并使用不同的脚本。
map 只是调用命令,命令调用函数。所以你可以写你的
文件并使用它来刷新浏览器而无需离开 Vim。同样,使用
:Refresh
做同样的事情。
请注意,您可能想要更改一些内容:
- map 本身,我使用了
\r
,使用任何你觉得舒服的东西。 - 函数的名称,如果你想避免与其他现有的冲突 职能
- 浏览器。这里我使用了 WebKit,它不是 Safari。这是夜间构建 WebKit 本身。使用 Chrome、Firefox 或任何其他名称(带有各自的 变化)
快速说明:传递给程序的额外 -e
选项只是为了方便
的可读性。以您想要的方式进行。
也看看自动命令(检查 :h autocmd.txt )。这会让你 以更自动化的方式进行,例如:
:autocmd BufWrite *.html Refresh
每次您为 .html 文件写入缓冲区时,这将调用 :Refresh
。那里
也是插入文本等的事件。
关于html - 有没有办法用 vim 动态检查 html 输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7371674/